[clang] [llvm] [MTE] Apply alignment / size in AsmPrinter rather than IR (PR #111918)

via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 21 15:00:59 PDT 2024


================
@@ -764,11 +764,18 @@ void AsmPrinter::emitGlobalVariable(const GlobalVariable *GV) {
 
   const DataLayout &DL = GV->getDataLayout();
   uint64_t Size = DL.getTypeAllocSize(GV->getValueType());
+  if (GV->isTagged())
+    Size = alignTo(Size, 16);
 
   // If the alignment is specified, we *must* obey it.  Overaligning a global
   // with a specified alignment is a prompt way to break globals emitted to
   // sections and expected to be contiguous (e.g. ObjC metadata).
-  const Align Alignment = getGVAlignment(GV, DL);
+  Align Alignment = getGVAlignment(GV, DL);
+  if (GV->isTagged() && Alignment < 16) {
----------------
pcc wrote:

Did you consider changing the implementation of `getGVAlignment` instead of doing this here?

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


More information about the llvm-commits mailing list