diff options
author | Peter Collingbourne <peter@pcc.me.uk> | 2016-11-16 23:40:26 +0000 |
---|---|---|
committer | Peter Collingbourne <peter@pcc.me.uk> | 2016-11-16 23:40:26 +0000 |
commit | f72a8d4e08394a5b51a9ec07599b854dbd97f9a6 (patch) | |
tree | f611520f1538ebcfb37ca706b0a63821120ab6c6 /llvm/lib/Transforms/IPO/PassManagerBuilder.cpp | |
parent | ad425626d237c3746c8de8d02c04f0ee6334f7e0 (diff) | |
download | llvm-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.cpp | 5 |
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()); |