summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp
diff options
context:
space:
mode:
authorDavide Italiano <davide@freebsd.org>2017-04-23 04:49:34 +0000
committerDavide Italiano <davide@freebsd.org>2017-04-23 04:49:34 +0000
commit5da709025629fcc90a37cfd942632c98a3c4de94 (patch)
treeceecab246e7ec8ae2d9ab9a167a58f1bb9d71fcd /llvm/lib/Transforms/IPO/PassManagerBuilder.cpp
parentae9672c96d2dcad39ab9bc306a9f5e0b5ef0dfc1 (diff)
downloadbcm5719-llvm-5da709025629fcc90a37cfd942632c98a3c4de94.tar.gz
bcm5719-llvm-5da709025629fcc90a37cfd942632c98a3c4de94.zip
[ThinLTO/Summary] Rename anonymous globals as last action ...
... in the per-TU -O0 pipeline. The problem is that there could be passes registered using `addExtensionsToPM()` introducing unnamed globals. Asan is an example, but there may be others. Building cppcheck with `-flto=thin` and `-fsanitize=address` triggers an assertion while we're reading bitcode (in lib/LTO), as the BitcodeReader assumes there are no unnamed globals (because the namer has run). Unfortunately I wasn't able to find an easy way to test this. I added a comment in the hope nobody moves this again. llvm-svn: 301102
Diffstat (limited to 'llvm/lib/Transforms/IPO/PassManagerBuilder.cpp')
-rw-r--r--llvm/lib/Transforms/IPO/PassManagerBuilder.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp
index f11b58d1adc..2af8b6c473a 100644
--- a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp
+++ b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp
@@ -414,11 +414,14 @@ void PassManagerBuilder::populateModulePassManager(
else if (!GlobalExtensions->empty() || !Extensions.empty())
MPM.add(createBarrierNoopPass());
+ addExtensionsToPM(EP_EnabledOnOptLevel0, MPM);
+
+ // Rename anon globals to be able to export them in the summary.
+ // This has to be done after we add the extensions to the pass manager
+ // as there could be passes (e.g. Adddress sanitizer) which introduce
+ // new unnamed globals.
if (PrepareForThinLTO)
- // Rename anon globals to be able to export them in the summary.
MPM.add(createNameAnonGlobalPass());
-
- addExtensionsToPM(EP_EnabledOnOptLevel0, MPM);
return;
}
OpenPOWER on IntegriCloud