aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp
diff options
context:
space:
mode:
authorPeter Collingbourne <peter@pcc.me.uk>2016-11-16 23:40:26 +0000
committerPeter Collingbourne <peter@pcc.me.uk>2016-11-16 23:40:26 +0000
commitf72a8d4e08394a5b51a9ec07599b854dbd97f9a6 (patch)
treef611520f1538ebcfb37ca706b0a63821120ab6c6 /llvm/lib/Transforms/IPO/PassManagerBuilder.cpp
parentad425626d237c3746c8de8d02c04f0ee6334f7e0 (diff)
downloadllvm-f72a8d4e08394a5b51a9ec07599b854dbd97f9a6.zip
llvm-f72a8d4e08394a5b51a9ec07599b854dbd97f9a6.tar.gz
llvm-f72a8d4e08394a5b51a9ec07599b854dbd97f9a6.tar.bz2
Introduce GlobalSplit pass.
This pass splits globals into elements using inrange annotations on getelementptr indices. Differential Revision: https://reviews.llvm.org/D22295 llvm-svn: 287178
Diffstat (limited to 'llvm/lib/Transforms/IPO/PassManagerBuilder.cpp')
-rw-r--r--llvm/lib/Transforms/IPO/PassManagerBuilder.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp
index 1caa591..254a746 100644
--- a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp
+++ b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp
@@ -692,6 +692,11 @@ void PassManagerBuilder::addLTOOptimizationPasses(legacy::PassManagerBase &PM) {
PM.add(createPostOrderFunctionAttrsLegacyPass());
PM.add(createReversePostOrderFunctionAttrsPass());
+ // Split globals using inrange annotations on GEP indices. This can help
+ // improve the quality of generated code when virtual constant propagation or
+ // control flow integrity are enabled.
+ PM.add(createGlobalSplitPass());
+
// Apply whole-program devirtualization and virtual constant propagation.
PM.add(createWholeProgramDevirtPass());