diff --git a/lib/IR/Instructions.cpp b/lib/IR/Instructions.cpp index 8c4eeafdf84..7136923ecb4 100644 --- a/lib/IR/Instructions.cpp +++ b/lib/IR/Instructions.cpp @@ -2864,10 +2864,6 @@ CastInst::castIsValid(Instruction::CastOps op, Value *S, Type *DstTy) { // Check for type sanity on the arguments Type *SrcTy = S->getType(); - // If this is a cast to the same type then it's trivially true. - if (SrcTy == DstTy) - return true; - if (!SrcTy->isFirstClassType() || !DstTy->isFirstClassType() || SrcTy->isAggregateType() || DstTy->isAggregateType()) return false; diff --git a/test/Assembler/invalid_cast4.ll b/test/Assembler/invalid_cast4.ll new file mode 100644 index 00000000000..7056f840035 --- /dev/null +++ b/test/Assembler/invalid_cast4.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as < %s 2>&1 | FileCheck %s + +; CHECK: invalid cast opcode for cast from 'i64' to 'i64' +global i64* inttoptr (i64 0 to i64)