summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authored <ed@FreeBSD.org>2009-06-03 13:29:08 +0000
committered <ed@FreeBSD.org>2009-06-03 13:29:08 +0000
commit48ecc7affef226b2bac1e08bdfdc059306a1734c (patch)
tree4075b1f9165f6c8d2b9a7e98b89a1348669f78fe /tools
parentf27e5a09a0d815b8a4814152954ff87dadfdefc0 (diff)
downloadFreeBSD-src-48ecc7affef226b2bac1e08bdfdc059306a1734c.zip
FreeBSD-src-48ecc7affef226b2bac1e08bdfdc059306a1734c.tar.gz
Import Clang, at r72770.
Diffstat (limited to 'tools')
-rw-r--r--tools/clang-cc/clang-cc.cpp26
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;
OpenPOWER on IntegriCloud