diff options
author | Bill Wendling <isanbard@gmail.com> | 2013-02-28 14:11:10 +0000 |
---|---|---|
committer | Bill Wendling <isanbard@gmail.com> | 2013-02-28 14:11:10 +0000 |
commit | 6303b661b390ef37185f7e5f5cdd352287caf1fc (patch) | |
tree | 77307db80e2d6c95bafcd08e341be98470138859 /tools/lto | |
parent | 279b9184c2ff4fea93b198a3519b8cb3a1d8d195 (diff) |
Add the -disable-opt option to LTO. This adds:
- Consistency with opt (which supports the same option with the same meaning and
description).
- Debugging gold plugin-based linking without optimizations getting in the way.
- Debugging programs linked with the gold plugin while preserving the original
debug info.
- Fine-grained control over LTO passes using the gold plugin in combination with
opt (or clang/dragonegg).
Patch by Cristiano Giuffrida!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176257 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/lto')
-rw-r--r-- | tools/lto/LTOCodeGenerator.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/tools/lto/LTOCodeGenerator.cpp b/tools/lto/LTOCodeGenerator.cpp index 477bd2de06..75705154e4 100644 --- a/tools/lto/LTOCodeGenerator.cpp +++ b/tools/lto/LTOCodeGenerator.cpp @@ -47,6 +47,10 @@ using namespace llvm; static cl::opt<bool> +DisableOpt("disable-opt", cl::init(false), + cl::desc("Do not run any optimization passes")); + +static cl::opt<bool> DisableInline("disable-inlining", cl::init(false), cl::desc("Do not run the inliner pass")); @@ -376,10 +380,12 @@ bool LTOCodeGenerator::generateObjectFile(raw_ostream &out, // Enabling internalize here would use its AllButMain variant. It // keeps only main if it exists and does nothing for libraries. Instead // we create the pass ourselves with the symbol list provided by the linker. - PassManagerBuilder().populateLTOPassManager(passes, + if (!DisableOpt) { + PassManagerBuilder().populateLTOPassManager(passes, /*Internalize=*/false, !DisableInline, DisableGVNLoadPRE); + } // Make sure everything is still good. passes.add(createVerifierPass()); |