[llvm] f225b07 - Utils: Preserve address space for global_ctors (#112532)
via llvm-commits
llvm-commits at lists.llvm.org
Thu Oct 17 22:53:50 PDT 2024
Author: Matt Arsenault
Date: 2024-10-18T09:53:46+04:00
New Revision: f225b0779992bf8698d08534e256363595903c43
URL: https://github.com/llvm/llvm-project/commit/f225b0779992bf8698d08534e256363595903c43
DIFF: https://github.com/llvm/llvm-project/commit/f225b0779992bf8698d08534e256363595903c43.diff
LOG: Utils: Preserve address space for global_ctors (#112532)
Added:
llvm/test/Transforms/GlobalOpt/ctor-list-preserve-addrspace.ll
Modified:
llvm/lib/Transforms/Utils/CtorUtils.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/Utils/CtorUtils.cpp b/llvm/lib/Transforms/Utils/CtorUtils.cpp
index 507729bc5ebc06..968446c4eee117 100644
--- a/llvm/lib/Transforms/Utils/CtorUtils.cpp
+++ b/llvm/lib/Transforms/Utils/CtorUtils.cpp
@@ -45,9 +45,9 @@ static void removeGlobalCtors(GlobalVariable *GCL, const BitVector &CtorsToRemov
}
// Create the new global and insert it next to the existing list.
- GlobalVariable *NGV =
- new GlobalVariable(CA->getType(), GCL->isConstant(), GCL->getLinkage(),
- CA, "", GCL->getThreadLocalMode());
+ GlobalVariable *NGV = new GlobalVariable(
+ CA->getType(), GCL->isConstant(), GCL->getLinkage(), CA, "",
+ GCL->getThreadLocalMode(), GCL->getAddressSpace());
GCL->getParent()->insertGlobalVariable(GCL->getIterator(), NGV);
NGV->takeName(GCL);
diff --git a/llvm/test/Transforms/GlobalOpt/ctor-list-preserve-addrspace.ll b/llvm/test/Transforms/GlobalOpt/ctor-list-preserve-addrspace.ll
new file mode 100644
index 00000000000000..3f2f041b90e74d
--- /dev/null
+++ b/llvm/test/Transforms/GlobalOpt/ctor-list-preserve-addrspace.ll
@@ -0,0 +1,19 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-globals all --version 5
+; RUN: opt -S -passes=globalopt < %s | FileCheck %s
+
+; Make sure the address space of global_ctors is preserved
+
+%ini = type { i32, ptr, ptr }
+
+ at llvm.global_ctors = appending addrspace(1) global [1 x %ini] [%ini { i32 65534, ptr @ctor1, ptr null }]
+
+;.
+; CHECK: @llvm.global_ctors = appending addrspace(1) global [0 x %ini] zeroinitializer
+;.
+define void @ctor1() {
+; CHECK-LABEL: define void @ctor1() local_unnamed_addr {
+; CHECK-NEXT: ret void
+;
+ ret void
+}
+
More information about the llvm-commits
mailing list