The invalid case is now represented by an empty StringRef rather than
a nullptr.
Previously ARCH_FEATURE was build from SUB_ARCH by prepending "+".
This is now reverse, so that the "+arch-feature" is now visible in
the .def, which is a bit clearer. This meant converting one StringSwitch
into a loop.
Removed getters which are now mostly unnecessary.
Removed some old FIXMEs.
Having the lone "+" as arch_feature here looks a bit off. Could we remove the "invalid" entries from the def file completely?
Would it make sense to use the INVALID enum entries by themselves to handle unsuccessful parsing, or maybe use optional returns on the relevant methods?