Fix a case where constantexprs could leak into the PPC isel.
authorChris Lattner <sabre@nondot.org>
Wed, 11 Aug 2004 07:34:50 +0000 (07:34 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 11 Aug 2004 07:34:50 +0000 (07:34 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15661 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/PowerPC/PPC32ISelSimple.cpp

index 8fd947f1162c008f89e7ac00ee7095ab74777fcd..96067f600ff4e3dc8547e113a3410ea81b2ff272 100644 (file)
@@ -1260,7 +1260,10 @@ void ISel::promote32(unsigned targetReg, const ValueRecord &VR) {
   if (Val) {
     if (Constant *C = dyn_cast<Constant>(Val)) {
       Val = ConstantExpr::getCast(C, Type::IntTy);
-      Ty = Type::IntTy;
+      if (isa<ConstantExpr>(Val))   // Could not fold
+        Val = C;
+      else
+        Ty = Type::IntTy;           // Folded!
     }
 
     // If this is a simple constant, just emit a load directly to avoid the copy