OSDN Git Service

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 8fd947f..96067f6 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