[llvm] ec290a4 - llvm-reduce: Reduce externally_initialized (#133859)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 1 09:51:49 PDT 2025
Author: Matt Arsenault
Date: 2025-04-01T23:51:45+07:00
New Revision: ec290a43f68b469197abce65949fde84ecdc9146
URL: https://github.com/llvm/llvm-project/commit/ec290a43f68b469197abce65949fde84ecdc9146
DIFF: https://github.com/llvm/llvm-project/commit/ec290a43f68b469197abce65949fde84ecdc9146.diff
LOG: llvm-reduce: Reduce externally_initialized (#133859)
Not sure this is the right place to put it. This is a property
of GlobalVariable, not GlobalValue. But the ReduceGlobalVars
reduction tries to delete the value entirely.
Added:
llvm/test/tools/llvm-reduce/reduce-externally-initialized.ll
Modified:
llvm/tools/llvm-reduce/deltas/ReduceGlobalValues.cpp
Removed:
################################################################################
diff --git a/llvm/test/tools/llvm-reduce/reduce-externally-initialized.ll b/llvm/test/tools/llvm-reduce/reduce-externally-initialized.ll
new file mode 100644
index 0000000000000..edd98fa60e5fe
--- /dev/null
+++ b/llvm/test/tools/llvm-reduce/reduce-externally-initialized.ll
@@ -0,0 +1,11 @@
+; RUN: llvm-reduce -abort-on-invalid-reduction --delta-passes=global-values --test FileCheck --test-arg --check-prefix=INTERESTING --test-arg %s --test-arg --input-file %s -o %t.0
+; RUN: FileCheck --implicit-check-not=define --check-prefix=RESULT %s < %t.0
+
+; INTERESTING: @externally_initialized_keep = externally_initialized global i32 0
+; INTERESTING: @externally_initialized_drop
+
+; RESULT: @externally_initialized_keep = externally_initialized global i32 0, align 4
+; RESULT: @externally_initialized_drop = global i32 1, align 4
+ at externally_initialized_keep = externally_initialized global i32 0, align 4
+ at externally_initialized_drop = externally_initialized global i32 1, align 4
+
diff --git a/llvm/tools/llvm-reduce/deltas/ReduceGlobalValues.cpp b/llvm/tools/llvm-reduce/deltas/ReduceGlobalValues.cpp
index 577e0f5d16b63..e56876c38032e 100644
--- a/llvm/tools/llvm-reduce/deltas/ReduceGlobalValues.cpp
+++ b/llvm/tools/llvm-reduce/deltas/ReduceGlobalValues.cpp
@@ -64,5 +64,13 @@ void llvm::reduceGlobalValuesDeltaPass(Oracle &O, ReducerWorkItem &Program) {
if (IsImplicitDSOLocal)
GV.setDSOLocal(false);
}
+
+ // TODO: Should this go in a separate reduction?
+ if (auto *GVar = dyn_cast<GlobalVariable>(&GV)) {
+ if (GVar->isExternallyInitialized() && !O.shouldKeep())
+ GVar->setExternallyInitialized(false);
+
+ // TODO: Reduce code model
+ }
}
}
More information about the llvm-commits
mailing list