mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-03 01:12:53 +00:00
Remove the now-dead llvm.eh.exception and llvm.eh.selector intrinsics.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149331 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
13b1c31412
commit
efd564fbd6
@ -304,10 +304,6 @@ let Properties = [IntrNoMem] in {
|
||||
|
||||
//===------------------ Exception Handling Intrinsics----------------------===//
|
||||
//
|
||||
def int_eh_exception : Intrinsic<[llvm_ptr_ty], [], [IntrReadMem]>;
|
||||
def int_eh_selector : Intrinsic<[llvm_i32_ty],
|
||||
[llvm_ptr_ty, llvm_ptr_ty, llvm_vararg_ty]>;
|
||||
def int_eh_resume : Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty], [Throws]>;
|
||||
|
||||
// The result of eh.typeid.for depends on the enclosing function, but inside a
|
||||
// given function it is 'const' and may be CSE'd etc.
|
||||
|
@ -448,11 +448,6 @@ void IntrinsicLowering::LowerIntrinsicCall(CallInst *CI) {
|
||||
case Intrinsic::dbg_declare:
|
||||
break; // Simply strip out debugging intrinsics
|
||||
|
||||
case Intrinsic::eh_exception:
|
||||
case Intrinsic::eh_selector:
|
||||
CI->replaceAllUsesWith(Constant::getNullValue(CI->getType()));
|
||||
break;
|
||||
|
||||
case Intrinsic::eh_typeid_for:
|
||||
// Return something different to eh_selector.
|
||||
CI->replaceAllUsesWith(ConstantInt::get(CI->getType(), 1));
|
||||
|
@ -630,60 +630,6 @@ bool FastISel::SelectCall(const User *I) {
|
||||
}
|
||||
return true;
|
||||
}
|
||||
case Intrinsic::eh_exception: {
|
||||
EVT VT = TLI.getValueType(Call->getType());
|
||||
if (TLI.getOperationAction(ISD::EXCEPTIONADDR, VT)!=TargetLowering::Expand)
|
||||
break;
|
||||
|
||||
assert(FuncInfo.MBB->isLandingPad() &&
|
||||
"Call to eh.exception not in landing pad!");
|
||||
unsigned Reg = TLI.getExceptionAddressRegister();
|
||||
const TargetRegisterClass *RC = TLI.getRegClassFor(VT);
|
||||
unsigned ResultReg = createResultReg(RC);
|
||||
BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DL, TII.get(TargetOpcode::COPY),
|
||||
ResultReg).addReg(Reg);
|
||||
UpdateValueMap(Call, ResultReg);
|
||||
return true;
|
||||
}
|
||||
case Intrinsic::eh_selector: {
|
||||
EVT VT = TLI.getValueType(Call->getType());
|
||||
if (TLI.getOperationAction(ISD::EHSELECTION, VT) != TargetLowering::Expand)
|
||||
break;
|
||||
if (FuncInfo.MBB->isLandingPad())
|
||||
AddCatchInfo(*Call, &FuncInfo.MF->getMMI(), FuncInfo.MBB);
|
||||
else {
|
||||
#ifndef NDEBUG
|
||||
FuncInfo.CatchInfoLost.insert(Call);
|
||||
#endif
|
||||
// FIXME: Mark exception selector register as live in. Hack for PR1508.
|
||||
unsigned Reg = TLI.getExceptionSelectorRegister();
|
||||
if (Reg) FuncInfo.MBB->addLiveIn(Reg);
|
||||
}
|
||||
|
||||
unsigned Reg = TLI.getExceptionSelectorRegister();
|
||||
EVT SrcVT = TLI.getPointerTy();
|
||||
const TargetRegisterClass *RC = TLI.getRegClassFor(SrcVT);
|
||||
unsigned ResultReg = createResultReg(RC);
|
||||
BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DL, TII.get(TargetOpcode::COPY),
|
||||
ResultReg).addReg(Reg);
|
||||
|
||||
bool ResultRegIsKill = hasTrivialKill(Call);
|
||||
|
||||
// Cast the register to the type of the selector.
|
||||
if (SrcVT.bitsGT(MVT::i32))
|
||||
ResultReg = FastEmit_r(SrcVT.getSimpleVT(), MVT::i32, ISD::TRUNCATE,
|
||||
ResultReg, ResultRegIsKill);
|
||||
else if (SrcVT.bitsLT(MVT::i32))
|
||||
ResultReg = FastEmit_r(SrcVT.getSimpleVT(), MVT::i32,
|
||||
ISD::SIGN_EXTEND, ResultReg, ResultRegIsKill);
|
||||
if (ResultReg == 0)
|
||||
// Unhandled operand. Halt "fast" selection and bail.
|
||||
return false;
|
||||
|
||||
UpdateValueMap(Call, ResultReg);
|
||||
|
||||
return true;
|
||||
}
|
||||
case Intrinsic::objectsize: {
|
||||
ConstantInt *CI = cast<ConstantInt>(Call->getArgOperand(1));
|
||||
unsigned long long Res = CI->isZero() ? -1ULL : 0;
|
||||
|
@ -4686,43 +4686,6 @@ SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I, unsigned Intrinsic) {
|
||||
MMI.setVariableDbgInfo(Variable, FI, DI.getDebugLoc());
|
||||
return 0;
|
||||
}
|
||||
case Intrinsic::eh_exception: {
|
||||
// Insert the EXCEPTIONADDR instruction.
|
||||
assert(FuncInfo.MBB->isLandingPad() &&
|
||||
"Call to eh.exception not in landing pad!");
|
||||
SDVTList VTs = DAG.getVTList(TLI.getPointerTy(), MVT::Other);
|
||||
SDValue Ops[1];
|
||||
Ops[0] = DAG.getRoot();
|
||||
SDValue Op = DAG.getNode(ISD::EXCEPTIONADDR, dl, VTs, Ops, 1);
|
||||
setValue(&I, Op);
|
||||
DAG.setRoot(Op.getValue(1));
|
||||
return 0;
|
||||
}
|
||||
|
||||
case Intrinsic::eh_selector: {
|
||||
MachineBasicBlock *CallMBB = FuncInfo.MBB;
|
||||
MachineModuleInfo &MMI = DAG.getMachineFunction().getMMI();
|
||||
if (CallMBB->isLandingPad())
|
||||
AddCatchInfo(I, &MMI, CallMBB);
|
||||
else {
|
||||
#ifndef NDEBUG
|
||||
FuncInfo.CatchInfoLost.insert(&I);
|
||||
#endif
|
||||
// FIXME: Mark exception selector register as live in. Hack for PR1508.
|
||||
unsigned Reg = TLI.getExceptionSelectorRegister();
|
||||
if (Reg) FuncInfo.MBB->addLiveIn(Reg);
|
||||
}
|
||||
|
||||
// Insert the EHSELECTION instruction.
|
||||
SDVTList VTs = DAG.getVTList(TLI.getPointerTy(), MVT::Other);
|
||||
SDValue Ops[2];
|
||||
Ops[0] = getValue(I.getArgOperand(0));
|
||||
Ops[1] = getRoot();
|
||||
SDValue Op = DAG.getNode(ISD::EHSELECTION, dl, VTs, Ops, 2);
|
||||
DAG.setRoot(Op.getValue(1));
|
||||
setValue(&I, DAG.getSExtOrTrunc(Op, dl, MVT::i32));
|
||||
return 0;
|
||||
}
|
||||
|
||||
case Intrinsic::eh_typeid_for: {
|
||||
// Find the type id for the given typeinfo.
|
||||
|
Loading…
Reference in New Issue
Block a user