fix ExprMap and constant check in setcc
authorAndrew Lenharth <andrewl@lenharth.org>
Fri, 28 Jan 2005 14:06:46 +0000 (14:06 +0000)
committerAndrew Lenharth <andrewl@lenharth.org>
Fri, 28 Jan 2005 14:06:46 +0000 (14:06 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19870 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/Alpha/AlphaISelPattern.cpp

index eb3594cdca43099d9338bbbad13b6914e99cdf36..e6efc030cc138fda85c24200bd6a48a95844568d 100644 (file)
@@ -653,7 +653,7 @@ unsigned ISel::SelectExpr(SDOperand N) {
             }
           } else if (dir == 2) {
             Tmp1 = SelectExpr(N.getOperand(1));
-            if (isConst2) {
+            if (isConst1) {
               Tmp2 = cast<ConstantSDNode>(N.getOperand(0))->getValue();
               BuildMI(BB, Opc, 2, Result).addReg(Tmp1).addImm(Tmp2);
             } else {
@@ -866,9 +866,9 @@ unsigned ISel::SelectExpr(SDOperand N) {
 void ISel::Select(SDOperand N) {
   unsigned Tmp1, Tmp2, Opc;
 
-  if(ExprMap[N])
-    return; //alread selected
-  ExprMap[N] = 1;
+  // FIXME: Disable for our current expansion model!
+  if (/*!N->hasOneUse() &&*/ !ExprMap.insert(std::make_pair(N, 1)).second)
+    return;  // Already selected.
 
   SDNode *Node = N.Val;
 
@@ -977,6 +977,7 @@ void ISel::Select(SDOperand N) {
   case ISD::CopyFromReg:
   case ISD::CALL:
 //   case ISD::DYNAMIC_STACKALLOC:
+    ExprMap.erase(N);
     SelectExpr(N);
     return;