forked from OSchip/llvm-project
[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
This commit is contained in:
parent
ae9672c96d
commit
5da7090256
|
@ -414,11 +414,14 @@ void PassManagerBuilder::populateModulePassManager(
|
|||
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);
|
||||
|
||||
// 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)
|
||||
MPM.add(createNameAnonGlobalPass());
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue