The bit counting intrinsics return i32 not the operand type. This fixes
authorReid Spencer <rspencer@reidspencer.com>
Sun, 1 Apr 2007 18:42:20 +0000 (18:42 +0000)
committerReid Spencer <rspencer@reidspencer.com>
Sun, 1 Apr 2007 18:42:20 +0000 (18:42 +0000)
last night's regression in SingleSource/UnitTests/2005-05-11-Popcount-ffs-fls

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35556 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/ConstantFolding.cpp

index f0bd1dd0ad4555331721d7aa4064223c53d30652..8991c24658630f97886b4c011a51f1803540b54f 100644 (file)
@@ -433,18 +433,17 @@ llvm::ConstantFoldCall(Function *F, Constant** Operands, unsigned NumOperands) {
           break;
       }
     } else if (ConstantInt *Op = dyn_cast<ConstantInt>(Operands[0])) {
-      const IntegerType *OpTy = cast<IntegerType>(Op->getType());
       if (Name.size() > 11 && !memcmp(&Name[0], "llvm.bswap", 10)) {
         return ConstantInt::get(Op->getValue().byteSwap());
       } else if (Name.size() > 11 && !memcmp(&Name[0],"llvm.ctpop",10)) {
         uint64_t ctpop = Op->getValue().countPopulation();
-        return ConstantInt::get(OpTy, ctpop);
+        return ConstantInt::get(Type::Int32Ty, ctpop);
       } else if (Name.size() > 10 && !memcmp(&Name[0], "llvm.cttz", 9)) {
         uint64_t cttz = Op->getValue().countTrailingZeros();
-        return ConstantInt::get(OpTy, cttz);
+        return ConstantInt::get(Type::Int32Ty, cttz);
       } else if (Name.size() > 10 && !memcmp(&Name[0], "llvm.ctlz", 9)) {
         uint64_t ctlz = Op->getValue().countLeadingZeros();
-        return ConstantInt::get(OpTy, ctlz);
+        return ConstantInt::get(Type::Int32Ty, ctlz);
       }
     }
   } else if (NumOperands == 2) {