diff options
Diffstat (limited to 'llvm/lib/IR')
-rw-r--r-- | llvm/lib/IR/Instruction.cpp | 9 | ||||
-rw-r--r-- | llvm/lib/IR/RuntimeLibcalls.cpp | 9 | ||||
-rw-r--r-- | llvm/lib/IR/Verifier.cpp | 9 |
3 files changed, 12 insertions, 15 deletions
diff --git a/llvm/lib/IR/Instruction.cpp b/llvm/lib/IR/Instruction.cpp index 763cc18..b7cd12a 100644 --- a/llvm/lib/IR/Instruction.cpp +++ b/llvm/lib/IR/Instruction.cpp @@ -942,14 +942,13 @@ bool Instruction::isIdenticalToWhenDefined(const Instruction *I, // We have two instructions of identical opcode and #operands. Check to see // if all operands are the same. - if (!std::equal(op_begin(), op_end(), I->op_begin())) + if (!equal(operands(), I->operands())) return false; // WARNING: this logic must be kept in sync with EliminateDuplicatePHINodes()! - if (const PHINode *thisPHI = dyn_cast<PHINode>(this)) { - const PHINode *otherPHI = cast<PHINode>(I); - return std::equal(thisPHI->block_begin(), thisPHI->block_end(), - otherPHI->block_begin()); + if (const PHINode *Phi = dyn_cast<PHINode>(this)) { + const PHINode *OtherPhi = cast<PHINode>(I); + return equal(Phi->blocks(), OtherPhi->blocks()); } return this->hasSameSpecialState(I, /*IgnoreAlignment=*/false, diff --git a/llvm/lib/IR/RuntimeLibcalls.cpp b/llvm/lib/IR/RuntimeLibcalls.cpp index bfe2a3d..b6e2cac 100644 --- a/llvm/lib/IR/RuntimeLibcalls.cpp +++ b/llvm/lib/IR/RuntimeLibcalls.cpp @@ -73,13 +73,8 @@ void RuntimeLibcallsInfo::initLibcalls(const Triple &TT, EABI EABIVersion, StringRef ABIName) { setTargetRuntimeLibcallSets(TT, FloatABI); - if (TT.isX86() || TT.isVE() || TT.isARM() || TT.isThumb()) { - if (ExceptionModel == ExceptionHandling::SjLj) - setLibcallImpl(RTLIB::UNWIND_RESUME, RTLIB::_Unwind_SjLj_Resume); - } - - if (TT.isOSOpenBSD()) - setLibcallImpl(RTLIB::STACK_SMASH_HANDLER, RTLIB::__stack_smash_handler); + if (ExceptionModel == ExceptionHandling::SjLj) + setLibcallImpl(RTLIB::UNWIND_RESUME, RTLIB::_Unwind_SjLj_Resume); if (TT.isARM() || TT.isThumb()) { setARMLibcallNames(*this, TT, FloatABI, EABIVersion); diff --git a/llvm/lib/IR/Verifier.cpp b/llvm/lib/IR/Verifier.cpp index 3ff9895..ca3f148 100644 --- a/llvm/lib/IR/Verifier.cpp +++ b/llvm/lib/IR/Verifier.cpp @@ -6769,10 +6769,13 @@ void Verifier::visitIntrinsicCall(Intrinsic::ID ID, CallBase &Call) { break; } case Intrinsic::lifetime_start: - case Intrinsic::lifetime_end: - Check(isa<AllocaInst>(Call.getArgOperand(1)), - "llvm.lifetime.start/end can only be used on alloca", &Call); + case Intrinsic::lifetime_end: { + Value *Ptr = Call.getArgOperand(1); + Check(isa<AllocaInst>(Ptr) || isa<PoisonValue>(Ptr), + "llvm.lifetime.start/end can only be used on alloca or poison", + &Call); break; + } }; // Verify that there aren't any unmediated control transfers between funclets. |