Add clang-cc support for -disable-llvm-optzns.
 - Avoids running any LLVM optimizations, even at -O2, etc., while still keeping
   any language changes these optimizations imply.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72742 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Frontend/Backend.cpp b/lib/Frontend/Backend.cpp
index 44aa3a8..697ba94 100644
--- a/lib/Frontend/Backend.cpp
+++ b/lib/Frontend/Backend.cpp
@@ -294,10 +294,16 @@
       PM->add(createPruneEHPass());               // Remove dead EH info
       PM->add(createFunctionAttrsPass());         // Set readonly/readnone attrs
     }
-    if (CompileOpts.InlineFunctions)
+    switch (CompileOpts.Inlining) {
+    case CompileOptions::NoInlining:
+      break;
+    case CompileOptions::NormalInlining:
       PM->add(createFunctionInliningPass());      // Inline small functions
-    else 
+      break;
+    case CompileOptions::OnlyAlwaysInlining:
       PM->add(createAlwaysInlinerPass());         // Respect always_inline
+      break;
+    }
     if (CompileOpts.OptimizationLevel > 2)
       PM->add(createArgumentPromotionPass());     // Scalarize uninlined fn args
     if (CompileOpts.SimplifyLibCalls)
@@ -341,7 +347,16 @@
     if (CompileOpts.OptimizationLevel > 1 && CompileOpts.UnitAtATime)
       PM->add(createConstantMergePass());         // Merge dup global constants 
   } else {
-    PM->add(createAlwaysInlinerPass());  
+    switch (CompileOpts.Inlining) {
+    case CompileOptions::NoInlining:
+      break;
+    case CompileOptions::NormalInlining:
+      PM->add(createFunctionInliningPass());      // Inline small functions
+      break;
+    case CompileOptions::OnlyAlwaysInlining:
+      PM->add(createAlwaysInlinerPass());         // Respect always_inline
+      break;
+    }
   }
 }