Pointer comparisons should be handled by icmp, not vicmp :)
authorNate Begeman <natebegeman@mac.com>
Mon, 12 May 2008 20:11:05 +0000 (20:11 +0000)
committerNate Begeman <natebegeman@mac.com>
Mon, 12 May 2008 20:11:05 +0000 (20:11 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50994 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Bitcode/Reader/BitcodeReader.cpp
lib/VMCore/Instructions.cpp

index 2ca7a00e03557e50de218139b9b81ca50319bde8..d9936ef825ae8ab7269fd44bc169746015bc1282 100644 (file)
@@ -1359,7 +1359,7 @@ bool BitcodeReader::ParseFunctionBody(Function *F) {
           OpNum+1 != Record.size())
         return Error("Invalid CMP record");
       
-      if (LHS->getType()->isInteger())
+      if (LHS->getType()->isInteger() || isa<PointerType>(LHS->getType()))
         I = new ICmpInst((ICmpInst::Predicate)Record[OpNum], LHS, RHS);
       else if (LHS->getType()->isFloatingPoint())
         I = new FCmpInst((FCmpInst::Predicate)Record[OpNum], LHS, RHS);
index 7650ce480693ce6ca7b94103692bcb107294f705..d34aa5931983121bb8c9cdd76586f49c510f1006 100644 (file)
@@ -2335,7 +2335,7 @@ BitCastInst::BitCastInst(
 CmpInst::CmpInst(const Type *ty, OtherOps op, unsigned short predicate,
                  Value *LHS, Value *RHS, const std::string &Name,
                  Instruction *InsertBefore)
-  : Instruction(Type::Int1Ty, op,
+  : Instruction(ty, op,
                 OperandTraits<CmpInst>::op_begin(this),
                 OperandTraits<CmpInst>::operands(this),
                 InsertBefore) {
@@ -2348,7 +2348,7 @@ CmpInst::CmpInst(const Type *ty, OtherOps op, unsigned short predicate,
 CmpInst::CmpInst(const Type *ty, OtherOps op, unsigned short predicate,
                  Value *LHS, Value *RHS, const std::string &Name,
                  BasicBlock *InsertAtEnd)
-  : Instruction(Type::Int1Ty, op,
+  : Instruction(ty, op,
                 OperandTraits<CmpInst>::op_begin(this),
                 OperandTraits<CmpInst>::operands(this),
                 InsertAtEnd) {