[llvm] [MTE] generalize overalignment / size of MTE globals (PR #121957)

Jessica Clarke via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 7 08:27:31 PST 2025


================
@@ -2438,12 +2446,14 @@ bool AsmPrinter::doFinalization(Module &M) {
 
   std::vector<GlobalVariable *> GlobalsToTag;
   for (GlobalVariable &G : M.globals()) {
-    if (G.isDeclaration() || !G.isTagged())
+    if (G.isDeclaration())
       continue;
-    GlobalsToTag.push_back(&G);
+    if (G.getRequiredGlobalAlignment().has_value() ||
+        G.getRequiredGlobalSize().has_value())
+      GlobalsToTag.push_back(&G);
   }
   for (GlobalVariable *G : GlobalsToTag)
-    tagGlobalDefinition(M, G);
+    tagGlobalDefinition(G);
----------------
jrtc27 wrote:

Why did you choose to modify the IR rather than alter emitGlobalVariable to align and pad as it emits them? I don't think it really matters (though could be missing some subtleties), but it would seem more efficient to do it on the fly rather than create a whole bunch of new GlobalVariables and RAUW. That also lets you skip creating a modified initialiser and instead just emit some extra zeroes in emitGlobalConstant. This is the approach we took in CHERI LLVM instead.

https://github.com/llvm/llvm-project/pull/121957


More information about the llvm-commits mailing list