Changes in directory llvm/lib/Transforms/Scalar:

InstructionCombining.cpp updated: 1.584 -> 1.585
---
Log message:

Fix regressions in InstCombine/call-cast-target.ll and 
InstCombine/2003-11-13-ConstExprCastCall.ll


---
Diffs of the changes:  (+5 -1)

 InstructionCombining.cpp |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletion(-)


Index: llvm/lib/Transforms/Scalar/InstructionCombining.cpp
diff -u llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.584 
llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.585
--- llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.584   Fri Jan  5 
20:11:56 2007
+++ llvm/lib/Transforms/Scalar/InstructionCombining.cpp Sat Jan  6 13:53:32 2007
@@ -7208,7 +7208,10 @@
   // Check to see if we are changing the return type...
   if (OldRetTy != FT->getReturnType()) {
     if (Callee->isExternal() && !Caller->use_empty() && 
-        OldRetTy != FT->getReturnType())
+        OldRetTy != FT->getReturnType() &&
+        // Conversion is ok if changing from pointer to int of same size.
+        !(isa<PointerType>(FT->getReturnType()) &&
+          TD->getIntPtrType() == OldRetTy))
       return false;   // Cannot transform this return value.
 
     // If the callsite is an invoke instruction, and the return value is used 
by
@@ -7235,6 +7238,7 @@
     ConstantInt *c = dyn_cast<ConstantInt>(*AI);
     //Either we can cast directly, or we can upconvert the argument
     bool isConvertible = ActTy == ParamTy ||
+      (isa<PointerType>(ParamTy) && isa<PointerType>(ActTy)) ||
       (ParamTy->isIntegral() && ActTy->isIntegral() &&
        ParamTy->getPrimitiveSize() >= ActTy->getPrimitiveSize()) ||
       (c && ParamTy->getPrimitiveSize() >= ActTy->getPrimitiveSize() &&



_______________________________________________
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

Reply via email to