clang-cc: Eliminate cyclic dependency in initializing CodeGenOptions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88980 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/tools/clang-cc/Options.cpp b/tools/clang-cc/Options.cpp
index 1217a54..174143d 100644
--- a/tools/clang-cc/Options.cpp
+++ b/tools/clang-cc/Options.cpp
@@ -807,7 +807,9 @@
 // Option Object Construction
 //===----------------------------------------------------------------------===//
 
-void clang::InitializeCodeGenOptions(CodeGenOptions &Opts) {
+void clang::InitializeCodeGenOptions(CodeGenOptions &Opts,
+                                     const LangOptions &Lang,
+                                     bool TimePasses) {
   using namespace codegenoptions;
 
   // -Os implies -O2
@@ -827,6 +829,13 @@
   Opts.SimplifyLibCalls = 1;
   Opts.UnrollLoops = (Opts.OptimizationLevel > 1 && !OptSize);
 
+  // FIXME: Eliminate this dependency?
+  if (Lang.NoBuiltin)
+    Opts.SimplifyLibCalls = 0;
+  if (Lang.CPlusPlus)
+    Opts.NoCommon = 1;
+  Opts.TimePasses = TimePasses;
+
 #ifdef NDEBUG
   Opts.VerifyModule = 0;
 #endif
@@ -1068,8 +1077,7 @@
 
 void clang::InitializeLangOptions(LangOptions &Options,
                                   FrontendOptions::InputKind IK,
-                                  TargetInfo &Target,
-                                  const CodeGenOptions &CodeGenOpts) {
+                                  TargetInfo &Target) {
   using namespace langoptions;
 
   bool NoPreprocess = false;
@@ -1289,18 +1297,19 @@
 
   // The __OPTIMIZE_SIZE__ define is tied to -Oz, which we don't support.
   Options.OptimizeSize = 0;
-  Options.Optimize = !!CodeGenOpts.OptimizationLevel;
+  Options.Optimize = codegenoptions::OptSize || codegenoptions::OptLevel;
 
   assert(PICLevel <= 2 && "Invalid value for -pic-level");
   Options.PICLevel = PICLevel;
 
   Options.GNUInline = !Options.C99;
-  // FIXME: This is affected by other options (-fno-inline).
 
   // This is the __NO_INLINE__ define, which just depends on things like the
   // optimization level and -fno-inline, not actually whether the backend has
   // inlining enabled.
-  Options.NoInline = !CodeGenOpts.OptimizationLevel;
+  //
+  // FIXME: This is affected by other options (-fno-inline).
+  Options.NoInline = !codegenoptions::OptLevel;
 
   Options.Static = StaticDefine;