Change inferred cast creation calls to more specific cast creations.
authorReid Spencer <rspencer@reidspencer.com>
Tue, 12 Dec 2006 01:17:41 +0000 (01:17 +0000)
committerReid Spencer <rspencer@reidspencer.com>
Tue, 12 Dec 2006 01:17:41 +0000 (01:17 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32460 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/AsmPrinter.cpp
lib/CodeGen/IntrinsicLowering.cpp
lib/CodeGen/MachineDebugInfo.cpp
lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
lib/ExecutionEngine/JIT/JIT.cpp

index 4caa2c1be1e4bf72d43f0393d7a95a3d3d5524d1..498339c014e9dd8d51f9d5f09a9ad82fca5402e0 100644 (file)
@@ -446,7 +446,11 @@ void AsmPrinter::EmitConstantValueOnly(const Constant *CV) {
       // integer type.  This promotes constant folding and simplifies this code.
       if (isa<PointerType>(Ty)) {
         const Type *IntPtrTy = TD->getIntPtrType();
-        Op = ConstantExpr::getCast(Op, IntPtrTy);
+        Instruction::CastOps opcode = Instruction::CastOps(CE->getOpcode());
+        if (opcode == Instruction::IntToPtr)
+          Op = ConstantExpr::getIntegerCast(Op, IntPtrTy, false /*ZExt*/);
+        else 
+          Op = ConstantExpr::getCast(Instruction::PtrToInt, Op, IntPtrTy);
         return EmitConstantValueOnly(Op);
       }
       
index 753f4591c635210fd60c7cc12a8fa8cb07919b79..55f1c3c0ba3c6c68734a086e2ae7f44925de1708 100644 (file)
@@ -239,7 +239,7 @@ static Value *LowerCTPOP(Value *V, Instruction *IP) {
 
   for (unsigned i = 1, ct = 0; i != BitSize; i <<= 1, ++ct) {
     Value *MaskCst =
-      ConstantExpr::getCast(ConstantInt::get(Type::ULongTy, MaskValues[ct]),
+      ConstantExpr::getTruncOrBitCast(ConstantInt::get(Type::ULongTy, MaskValues[ct]),
                                              V->getType());
     Value *LHS = BinaryOperator::createAnd(V, MaskCst, "cppop.and1", IP);
     Value *VShift = new ShiftInst(Instruction::LShr, V,
index bc75ccb7a652d20654b285603ea91a3bb35b0bc4..d3b6ecb4699efee899863d23a0a22b8b70d2126c 100644 (file)
@@ -292,7 +292,7 @@ public:
     
     if (GV) {
       // Set to pointer to global.
-      Elements.push_back(ConstantExpr::getCast(GV, EmptyTy));
+      Elements.push_back(ConstantExpr::getBitCast(GV, EmptyTy));
     } else {
       // Use NULL.
       Elements.push_back(ConstantPointerNull::get(EmptyTy));
@@ -301,7 +301,7 @@ public:
   virtual void Apply(GlobalVariable *&Field) {
     const PointerType *EmptyTy = SR.getEmptyStructPtrType();
     if (Field) {
-      Elements.push_back(ConstantExpr::getCast(Field, EmptyTy));
+      Elements.push_back(ConstantExpr::getBitCast(Field, EmptyTy));
     } else {
       Elements.push_back(ConstantPointerNull::get(EmptyTy));
     }
@@ -315,7 +315,7 @@ public:
     for (unsigned i = 0, N = Field.size(); i < N; ++i) {
       if (DebugInfoDesc *Element = Field[i]) {
         GlobalVariable *GVE = SR.Serialize(Element);
-        Constant *CE = ConstantExpr::getCast(GVE, EmptyTy);
+        Constant *CE = ConstantExpr::getBitCast(GVE, EmptyTy);
         ArrayElements.push_back(cast<Constant>(CE));
       } else {
         ArrayElements.push_back(ConstantPointerNull::get(EmptyTy));
@@ -328,7 +328,7 @@ public:
                                               CA, "llvm.dbg.array",
                                               SR.getModule());
     CAGV->setSection("llvm.metadata");
-    Constant *CAE = ConstantExpr::getCast(CAGV, EmptyTy);
+    Constant *CAE = ConstantExpr::getBitCast(CAGV, EmptyTy);
     Elements.push_back(CAE);
   }
 };
@@ -1323,7 +1323,7 @@ Constant *DISerializer::getString(const std::string &String) {
                                                ConstStr, "str", M);
     StrGV->setSection("llvm.metadata");
     // Convert to generic string pointer.
-    Slot = ConstantExpr::getCast(StrGV, getStrPtrType());
+    Slot = ConstantExpr::getBitCast(StrGV, getStrPtrType());
   }
   return Slot;
   
index 4d5d3da8ce91888fc1d1a7ddface6ce3aa702bd8..4cbc9fe4ecf759ddd03d904cc24e7d474fbd9db8 100644 (file)
@@ -790,7 +790,7 @@ SDOperand SelectionDAGLegalize::LegalizeOp(SDOperand Op) {
           // Only do this if the target has a native EXTLOAD instruction from
           // f32.
           TLI.isLoadXLegal(ISD::EXTLOAD, MVT::f32)) {
-        LLVMC = cast<ConstantFP>(ConstantExpr::getCast(LLVMC, Type::FloatTy));
+        LLVMC = cast<ConstantFP>(ConstantExpr::getFPCast(LLVMC, Type::FloatTy));
         VT = MVT::f32;
         Extend = true;
       }
index 28c452d7fbdcfcbda277364c3643c335c2154a30..4cfd907ee9b9e89d88244d6b484d3a4553464b05 100644 (file)
@@ -212,7 +212,7 @@ GenericValue JIT::runFunction(Function *F,
       } else {
         C = ConstantInt::get(Type::LongTy, (intptr_t)ArgPtr);
       }
-      C = ConstantExpr::getCast(C, ArgTy);  // Cast the integer to pointer
+      C = ConstantExpr::getIntToPtr(C, ArgTy);  // Cast the integer to pointer
       break;
     }
     Args.push_back(C);