[PATCH] D24701: [ThinLTO] Ensure anonymous globals renamed even at -O0
Teresa Johnson via llvm-commits
llvm-commits at lists.llvm.org
Sat Sep 17 12:59:37 PDT 2016
tejohnson created this revision.
tejohnson added a reviewer: mehdi_amini.
tejohnson added subscribers: llvm-commits, probinson.
Herald added a subscriber: mehdi_amini.
This fixes an issue when files are compiled with -flto=thin
at default -O0. We need to rename anonymous globals before attempting
to write the module summary because all values need names for
the summary. This was happening at -O1 and above, but not before
the early exit when constructing the pipeline for -O0.
Also add an internal -prepare-for-thinlto option to enable this
to be tested via opt.
Fixes PR30419.
https://reviews.llvm.org/D24701
Files:
lib/Transforms/IPO/PassManagerBuilder.cpp
test/Transforms/NameAnonGlobals/rename.ll
Index: test/Transforms/NameAnonGlobals/rename.ll
===================================================================
--- test/Transforms/NameAnonGlobals/rename.ll
+++ test/Transforms/NameAnonGlobals/rename.ll
@@ -1,4 +1,5 @@
; RUN: opt -S -name-anon-globals < %s | FileCheck %s
+; RUN: opt -prepare-for-thinlto -O0 -module-summary -o %t.bc < %s
; foo contribute to the unique hash for the module
Index: lib/Transforms/IPO/PassManagerBuilder.cpp
===================================================================
--- lib/Transforms/IPO/PassManagerBuilder.cpp
+++ lib/Transforms/IPO/PassManagerBuilder.cpp
@@ -112,6 +112,10 @@
"enable-loop-load-elim", cl::init(true), cl::Hidden,
cl::desc("Enable the LoopLoadElimination Pass"));
+static cl::opt<bool>
+ EnablePrepareForThinLTO("prepare-for-thinlto", cl::init(false), cl::Hidden,
+ cl::desc("Enable preparation for ThinLTO."));
+
static cl::opt<bool> RunPGOInstrGen(
"profile-generate", cl::init(false), cl::Hidden,
cl::desc("Enable PGO instrumentation."));
@@ -163,7 +167,7 @@
EnablePGOInstrGen = RunPGOInstrGen;
PGOInstrGen = PGOOutputFile;
PGOInstrUse = RunPGOInstrUse;
- PrepareForThinLTO = false;
+ PrepareForThinLTO = EnablePrepareForThinLTO;
PerformThinLTO = false;
}
@@ -395,6 +399,10 @@
else if (!GlobalExtensions->empty() || !Extensions.empty())
MPM.add(createBarrierNoopPass());
+ if (PrepareForThinLTO)
+ // Rename anon globals to be able to export them in the summary.
+ MPM.add(createNameAnonGlobalPass());
+
addExtensionsToPM(EP_EnabledOnOptLevel0, MPM);
return;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D24701.71738.patch
Type: text/x-patch
Size: 1657 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160917/d931c42a/attachment.bin>
More information about the llvm-commits
mailing list