diff options
author | Peter Collingbourne <peter@pcc.me.uk> | 2017-05-26 18:27:13 +0000 |
---|---|---|
committer | Peter Collingbourne <peter@pcc.me.uk> | 2017-05-26 18:27:13 +0000 |
commit | 7730b244480c4a2b12dc3bff9892bb989f8b3e9c (patch) | |
tree | 21133c56ae187cad10fd78160d95a39c124af049 /llvm/lib/Transforms | |
parent | d45185f231d1aa710774f8866bbe2320573103f7 (diff) | |
download | bcm5719-llvm-7730b244480c4a2b12dc3bff9892bb989f8b3e9c.tar.gz bcm5719-llvm-7730b244480c4a2b12dc3bff9892bb989f8b3e9c.zip |
PMB: Run the whole-program-devirt pass during LTO at --lto-O0.
The whole-program-devirt pass needs to run at -O0 because only it
knows about the llvm.type.checked.load intrinsic: it needs to both
lower the intrinsic itself and handle it in the summary.
Differential Revision: https://reviews.llvm.org/D33571
llvm-svn: 304019
Diffstat (limited to 'llvm/lib/Transforms')
-rw-r--r-- | llvm/lib/Transforms/IPO/PassManagerBuilder.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp index 054df86b094..9fd3a9021a2 100644 --- a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp +++ b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp @@ -913,6 +913,12 @@ void PassManagerBuilder::populateLTOPassManager(legacy::PassManagerBase &PM) { if (OptLevel != 0) addLTOOptimizationPasses(PM); + else { + // The whole-program-devirt pass needs to run at -O0 because only it knows + // about the llvm.type.checked.load intrinsic: it needs to both lower the + // intrinsic itself and handle it in the summary. + PM.add(createWholeProgramDevirtPass(ExportSummary, nullptr)); + } // Create a function that performs CFI checks for cross-DSO calls with targets // in the current module. |