[GlobalMerge][PPC] Don't merge globals in llvm.metadata section by nikic · Pull Request #131801 · llvm/llvm-project (original) (raw)
@llvm/pr-subscribers-backend-powerpc
Author: Nikita Popov (nikic)
Changes
The llvm.metadata section is not emitted and has special semantics. We should not merge globals in it, similarly to how we already skip merging of llvm.xyz
globals.
Fixes #131394.
Full diff: https://github.com/llvm/llvm-project/pull/131801.diff
2 Files Affected:
- (modified) llvm/lib/CodeGen/GlobalMerge.cpp (+3-1)
- (added) llvm/test/CodeGen/PowerPC/global-merge-llvm-metadata.ll (+9)
diff --git a/llvm/lib/CodeGen/GlobalMerge.cpp b/llvm/lib/CodeGen/GlobalMerge.cpp index 1aedc447935b7..872d8199d9488 100644 --- a/llvm/lib/CodeGen/GlobalMerge.cpp +++ b/llvm/lib/CodeGen/GlobalMerge.cpp @@ -711,7 +711,9 @@ bool GlobalMergeImpl::run(Module &M) { continue;
// Ignore all 'special' globals.
- if (GV.getName().starts_with("llvm.") || GV.getName().starts_with(".llvm."))
- if (GV.getName().starts_with("llvm.") ||
GV.getName().starts_with(".llvm.") ||
// Ignore all "required" globals:Section == "llvm.metadata") continue;
diff --git a/llvm/test/CodeGen/PowerPC/global-merge-llvm-metadata.ll b/llvm/test/CodeGen/PowerPC/global-merge-llvm-metadata.ll new file mode 100644 index 0000000000000..7db092e13afeb --- /dev/null +++ b/llvm/test/CodeGen/PowerPC/global-merge-llvm-metadata.ll @@ -0,0 +1,9 @@ +; RUN: llc -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s + +@index = global i32 0, align 4 +@.str = private unnamed_addr constant [1 x i8] zeroinitializer, section "llvm.metadata" +@.str.1 = private unnamed_addr constant [7 x i8] c"test.c\00", section "llvm.metadata" +@llvm.global.annotations = appending global [1 x { ptr, ptr, ptr, i32, ptr }] [{ ptr, ptr, ptr, i32, ptr } { ptr @index, ptr @.str, ptr @.str.1, i32 1, ptr null }], section "llvm.metadata" + +; CHECK-NOT: .set +; CHECK-NOT: _MergedGlobals