Normally an 'optnone' function goes through fast-isel, which does not
[oota-llvm.git] / lib / CodeGen / SelectionDAG / DAGCombiner.cpp
index 0d5cabaaf27d2166003e47f56e671c9f3054577b..107f5a12693862cbfdfd5e0e5657ad7385f84dad 100644 (file)
@@ -1155,6 +1155,13 @@ void DAGCombiner::Run(CombineLevel AtLevel) {
   LegalOperations = Level >= AfterLegalizeVectorOps;
   LegalTypes = Level >= AfterLegalizeTypes;
 
+  // Early exit if this basic block is in an optnone function.
+  AttributeSet FnAttrs =
+    DAG.getMachineFunction().getFunction()->getAttributes();
+  if (FnAttrs.hasAttribute(AttributeSet::FunctionIndex,
+                           Attribute::OptimizeNone))
+    return;
+
   // Add all the dag nodes to the worklist.
   for (SelectionDAG::allnodes_iterator I = DAG.allnodes_begin(),
        E = DAG.allnodes_end(); I != E; ++I)