Disable DAGCombine's alignment inference in "fast" codegen mode.
authorDan Gohman <gohman@apple.com>
Wed, 20 Aug 2008 16:30:28 +0000 (16:30 +0000)
committerDan Gohman <gohman@apple.com>
Wed, 20 Aug 2008 16:30:28 +0000 (16:30 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55059 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/CodeGen/SelectionDAG.h
lib/CodeGen/SelectionDAG/DAGCombiner.cpp
lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp

index 3c1c031bd76ec0c809ca88cfe48aaf2912fd2116..c90cdb25e221274ea30ac2e8f68aed3d30ae9ce9 100644 (file)
@@ -169,7 +169,7 @@ public:
   /// certain types of nodes together, or eliminating superfluous nodes.  When
   /// the AfterLegalize argument is set to 'true', Combine takes care not to
   /// generate any nodes that will be illegal on the target.
-  void Combine(bool AfterLegalize, AliasAnalysis &AA);
+  void Combine(bool AfterLegalize, AliasAnalysis &AA, bool Fast);
   
   /// LegalizeTypes - This transforms the SelectionDAG into a SelectionDAG that
   /// only uses types natively supported by the target.
index 9682a2f31dc0e0ff38b317f297504c67c7178624..49b695c63e34e4f1e35b0c3c565c4c13584c39c8 100644 (file)
@@ -51,6 +51,7 @@ namespace {
     SelectionDAG &DAG;
     TargetLowering &TLI;
     bool AfterLegalize;
+    bool Fast;
 
     // Worklist of all of the nodes that need to be simplified.
     std::vector<SDNode*> WorkList;
@@ -237,10 +238,11 @@ namespace {
     SDValue FindBetterChain(SDNode *N, SDValue Chain);
     
 public:
-    DAGCombiner(SelectionDAG &D, AliasAnalysis &A)
+    DAGCombiner(SelectionDAG &D, AliasAnalysis &A, bool fast)
       : DAG(D),
         TLI(D.getTargetLoweringInfo()),
         AfterLegalize(false),
+        Fast(fast),
         AA(A) {}
     
     /// Run - runs the dag combiner on all nodes in the work list
@@ -4411,7 +4413,7 @@ SDValue DAGCombiner::visitLOAD(SDNode *N) {
   SDValue Ptr   = LD->getBasePtr();
   
   // Try to infer better alignment information than the load already has.
-  if (LD->isUnindexed()) {
+  if (!Fast && LD->isUnindexed()) {
     if (unsigned Align = InferAlignment(Ptr, DAG)) {
       if (Align > LD->getAlignment())
         return DAG.getExtLoad(LD->getExtensionType(), LD->getValueType(0),
@@ -4529,7 +4531,7 @@ SDValue DAGCombiner::visitSTORE(SDNode *N) {
   SDValue Ptr   = ST->getBasePtr();
   
   // Try to infer better alignment information than the store already has.
-  if (ST->isUnindexed()) {
+  if (!Fast && ST->isUnindexed()) {
     if (unsigned Align = InferAlignment(Ptr, DAG)) {
       if (Align > ST->getAlignment())
         return DAG.getTruncStore(Chain, Value, Ptr, ST->getSrcValue(),
@@ -5664,8 +5666,9 @@ SDValue DAGCombiner::FindBetterChain(SDNode *N, SDValue OldChain) {
 
 // SelectionDAG::Combine - This is the entry point for the file.
 //
-void SelectionDAG::Combine(bool RunningAfterLegalize, AliasAnalysis &AA) {
+void SelectionDAG::Combine(bool RunningAfterLegalize, AliasAnalysis &AA,
+                           bool Fast) {
   /// run - This is the main entry point to this class.
   ///
-  DAGCombiner(*this, AA).Run(RunningAfterLegalize);
+  DAGCombiner(*this, AA, Fast).Run(RunningAfterLegalize);
 }
index cb71f1aae0135ef891ddec6930031f445ba4afd7..f38b2ebaf79c6558ffcd73b89842f146829594e2 100644 (file)
@@ -5369,9 +5369,9 @@ void SelectionDAGISel::CodeGenAndEmitDAG(SelectionDAG &DAG) {
   // Run the DAG combiner in pre-legalize mode.
   if (TimePassesIsEnabled) {
     NamedRegionTimer T("DAG Combining 1", GroupName);
-    DAG.Combine(false, *AA);
+    DAG.Combine(false, *AA, Fast);
   } else {
-    DAG.Combine(false, *AA);
+    DAG.Combine(false, *AA, Fast);
   }
   
   DOUT << "Optimized lowered selection DAG:\n";
@@ -5413,9 +5413,9 @@ void SelectionDAGISel::CodeGenAndEmitDAG(SelectionDAG &DAG) {
   // Run the DAG combiner in post-legalize mode.
   if (TimePassesIsEnabled) {
     NamedRegionTimer T("DAG Combining 2", GroupName);
-    DAG.Combine(true, *AA);
+    DAG.Combine(true, *AA, Fast);
   } else {
-    DAG.Combine(true, *AA);
+    DAG.Combine(true, *AA, Fast);
   }
   
   DOUT << "Optimized legalized selection DAG:\n";