The assembler was able to assemble and then dump back to .s, but
was failing to parse certain directives necessary for valid .o
output:
- .type directives are now recognized to distinguish function symbols and others.
- .size is now parsed to provide function size.
- __stack_pointer is now special-cased with code that is shared with Codegen.
Added test that previously was failing on all 3 of the above.
Also makes a small change in StringSwitch.h for some missing
functionality (being able to detect no match).
I'd rather avoid adding this if possible. We don't want to allow symbols to have an invalid type, or have to add this invalid case to our switch statements over symbol type.