Currently, there is one module-level scope and one more scope per inline
assembly operator inside functions. It means that one can't use assembly
macros defined at global scope in functions as well as that macros are
not shared among assembly blocks defined at function-level. Both seems
to be wrong as the effect must be as if all assembly blocks would be
directly inserted into assembly where macros are visible everywhere
below the point of their definition.
There is not really pretty part with std::unique_ptr in AsmParser,
but it must be done that way at least temporary to do not break any
build (Clang uses this interface).
Please don't use Allman bracing, put the following open brace on the same line for ifs, fors, tag types, etc.