diff options
author | ed <ed@FreeBSD.org> | 2009-06-03 13:29:08 +0000 |
---|---|---|
committer | ed <ed@FreeBSD.org> | 2009-06-03 13:29:08 +0000 |
commit | 48ecc7affef226b2bac1e08bdfdc059306a1734c (patch) | |
tree | 4075b1f9165f6c8d2b9a7e98b89a1348669f78fe /tools/clang-cc/clang-cc.cpp | |
parent | f27e5a09a0d815b8a4814152954ff87dadfdefc0 (diff) | |
download | FreeBSD-src-48ecc7affef226b2bac1e08bdfdc059306a1734c.zip FreeBSD-src-48ecc7affef226b2bac1e08bdfdc059306a1734c.tar.gz |
Import Clang, at r72770.
Diffstat (limited to 'tools/clang-cc/clang-cc.cpp')
-rw-r--r-- | tools/clang-cc/clang-cc.cpp | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/tools/clang-cc/clang-cc.cpp b/tools/clang-cc/clang-cc.cpp index a0ccafa..0e0a072 100644 --- a/tools/clang-cc/clang-cc.cpp +++ b/tools/clang-cc/clang-cc.cpp @@ -667,6 +667,10 @@ static llvm::cl::opt<bool> OptSize("Os", llvm::cl::desc("Optimize for size")); static llvm::cl::opt<bool> +DisableLLVMOptimizations("disable-llvm-optzns", + llvm::cl::desc("Don't run LLVM optimization passes")); + +static llvm::cl::opt<bool> NoCommon("fno-common", llvm::cl::desc("Compile common globals like normal definitions"), llvm::cl::ValueDisallowed); @@ -1420,16 +1424,26 @@ static void InitializeCompileOptions(CompileOptions &Opts, const llvm::StringMap<bool> &Features) { Opts.OptimizeSize = OptSize; Opts.DebugInfo = GenerateDebugInfo; - if (OptSize) { - // -Os implies -O2 - // FIXME: Diagnose conflicting options. - Opts.OptimizationLevel = 2; + + if (DisableLLVMOptimizations) { + Opts.OptimizationLevel = 0; + Opts.Inlining = CompileOptions::NoInlining; } else { - Opts.OptimizationLevel = OptLevel; + if (OptSize) { + // -Os implies -O2 + Opts.OptimizationLevel = 2; + } else { + Opts.OptimizationLevel = OptLevel; + } + + // We must always run at least the always inlining pass. + if (Opts.OptimizationLevel > 1) + Opts.Inlining = CompileOptions::NormalInlining; + else + Opts.Inlining = CompileOptions::OnlyAlwaysInlining; } // FIXME: There are llvm-gcc options to control these selectively. - Opts.InlineFunctions = (Opts.OptimizationLevel > 1); Opts.UnrollLoops = (Opts.OptimizationLevel > 1 && !OptSize); Opts.SimplifyLibCalls = !LangOpts.NoBuiltin; |