llvm.org GIT mirror llvm / ce370cf
Thread the chain through the eh.sjlj.setjmp intrinsic, like it's documented to do. This will be useful later on with the new SJLJ stuff. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141416 91177308-0d34-0410-b5e6-96231b3b80d8 Bill Wendling 8 years ago
3 changed file(s) with 11 addition(s) and 4 deletion(s). Raw diff Collapse all Expand all
9494 // execution to HANDLER. Many platform-related details also :)
9595 EH_RETURN,
9696
97 // OUTCHAIN = EH_SJLJ_SETJMP(INCHAIN, buffer)
97 // RESULT, OUTCHAIN = EH_SJLJ_SETJMP(INCHAIN, buffer)
9898 // This corresponds to the eh.sjlj.setjmp intrinsic.
9999 // It takes an input chain and a pointer to the jump buffer as inputs
100100 // and returns an outchain.
47434743 return 0;
47444744 }
47454745 case Intrinsic::eh_sjlj_setjmp: {
4746 setValue(&I, DAG.getNode(ISD::EH_SJLJ_SETJMP, dl, MVT::i32, getRoot(),
4747 getValue(I.getArgOperand(0))));
4746 SDValue Ops[2];
4747 Ops[0] = getRoot();
4748 Ops[1] = getValue(I.getArgOperand(0));
4749 SDValue Op = DAG.getNode(ISD::EH_SJLJ_SETJMP, dl,
4750 DAG.getVTList(MVT::i32, MVT::Other),
4751 Ops, 2);
4752 setValue(&I, Op.getValue(0));
4753 DAG.setRoot(Op.getValue(1));
47484754 return 0;
47494755 }
47504756 case Intrinsic::eh_sjlj_longjmp: {
22092209 ARMTargetLowering::LowerEH_SJLJ_SETJMP(SDValue Op, SelectionDAG &DAG) const {
22102210 DebugLoc dl = Op.getDebugLoc();
22112211 SDValue Val = DAG.getConstant(0, MVT::i32);
2212 return DAG.getNode(ARMISD::EH_SJLJ_SETJMP, dl, MVT::i32, Op.getOperand(0),
2212 return DAG.getNode(ARMISD::EH_SJLJ_SETJMP, dl,
2213 DAG.getVTList(MVT::i32, MVT::Other), Op.getOperand(0),
22132214 Op.getOperand(1), Val);
22142215 }
22152216