From 219a78497e7dcc67dbb116ca95d70c85431b161f Mon Sep 17 00:00:00 2001 From: Sean Fertile Date: Wed, 29 Oct 2025 16:12:28 -0400 Subject: [PATCH] Filter out unemitted metadata before assertion in AIXAsmPrinter. Global annotations metadata would trigger an assertion during code emission on AIX. Filter out globals that are in the "llvm.metadata" section before reaching the assert. Adds a test to verify the metadata is not emitted on either ELF or XCOFF targets. --- llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp | 4 ++++ llvm/test/CodeGen/PowerPC/annotate-metadata.ll | 15 +++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 llvm/test/CodeGen/PowerPC/annotate-metadata.ll diff --git a/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp b/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp index bcb3f507e98d6..dde6cbf74f79a 100644 --- a/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp +++ b/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp @@ -2750,6 +2750,10 @@ void PPCAIXAsmPrinter::emitGlobalVariable(const GlobalVariable *GV) { if (isSpecialLLVMGlobalArrayToSkip(GV) || isSpecialLLVMGlobalArrayForStaticInit(GV)) return; + // Ignore non-emitted data. + if (GV->getSection() == "llvm.metadata") + return; + // If the Global Variable has the toc-data attribute, it needs to be emitted // when we emit the .toc section. if (GV->hasAttribute("toc-data")) { diff --git a/llvm/test/CodeGen/PowerPC/annotate-metadata.ll b/llvm/test/CodeGen/PowerPC/annotate-metadata.ll new file mode 100644 index 0000000000000..4149b56e0ea95 --- /dev/null +++ b/llvm/test/CodeGen/PowerPC/annotate-metadata.ll @@ -0,0 +1,15 @@ +; RUN: llc -verify-machineinstrs -mcpu=pwr8 -mtriple powerpc-ibm-aix-xcoff < \ +; RUN: %s | FileCheck %s +; RUN: llc -verify-machineinstrs -mcpu=pwr8 -mtriple powerpc64le-unknown-linux < \ +; RUN: %s | FileCheck %s + +@.str = private unnamed_addr constant [12 x i8] c"MY_METADATA\00", section "llvm.metadata" +@.str.1 = private unnamed_addr constant [10 x i8] c"my_file.c\00", section "llvm.metadata" +@global.annotations = appending global [3 x { ptr, ptr, ptr, i32, ptr }] [{ ptr, ptr, ptr, i32, ptr } { ptr @a, ptr @.str, ptr @.str.1, i32 100, ptr null }, { ptr, ptr, ptr, i32, ptr } { ptr @b, ptr @.str, ptr @.str.1, i32 200, ptr null }, { ptr, ptr, ptr, i32, ptr } { ptr @c, ptr @.str, ptr @.str.1, i32 300, ptr null }], section "llvm.metadata" + +@a = global i32 1 +@b = global i32 2 +@c = global i32 3 + +; CHECK-NOT: metadata +; CHECK-NOT: annotations