For MTE globals, we should have clang emit the attribute for all GV's
that it creates, and then use that in the upcoming AArch64 global
tagging IR pass. We need a positive attribute for this sanitizer (rather
than implicit sanitization of all globals) because it needs to interact
with other parts of LLVM, including:
- Suppressing certain global optimisations (like merging),
- Emitting extra directives by the ASM writer, and
- Putting extra information in the symbol table entries.
While this does technically make the LLVM IR / bitcode format
non-backwards-compatible, nobody should have used this attribute yet,
because it's a no-op.
This paragraph explains why we need the include bit, but not the exclude bit.
Why do we need both?
IR backward compatibility?