Make sure to sext or trunc the result from the register.
authorBill Wendling <isanbard@gmail.com>
Fri, 29 Jul 2011 01:11:14 +0000 (01:11 +0000)
committerBill Wendling <isanbard@gmail.com>
Fri, 29 Jul 2011 01:11:14 +0000 (01:11 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136444 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp

index 56013000ccfd9ba2fe7fe271de46a9c0b8391cb2..2b556bc3797b09d78a375a3f0724c1cf372cc554 100644 (file)
@@ -1822,7 +1822,7 @@ void SelectionDAGBuilder::visitLandingPad(const LandingPadInst &LP) {
   AddLandingPadInfo(LP, MMI, MBB);
 
   SmallVector<EVT, 2> ValueVTs;
-  ComputeValueVTs(TLI, LP.getType(),ValueVTs);
+  ComputeValueVTs(TLI, LP.getType(), ValueVTs);
 
   // Insert the EXCEPTIONADDR instruction.
   assert(FuncInfo.MBB->isLandingPad() &&
@@ -1839,10 +1839,10 @@ void SelectionDAGBuilder::visitLandingPad(const LandingPadInst &LP) {
   Ops[1] = Chain;
   SDValue Op2 = DAG.getNode(ISD::EHSELECTION, getCurDebugLoc(), VTs, Ops, 2);
   Chain = Op2.getValue(1);
+  Op2 = DAG.getSExtOrTrunc(Op2, getCurDebugLoc(), MVT::i32)
 
   Ops[0] = Op1;
   Ops[1] = Op2;
-
   SDValue Res = DAG.getNode(ISD::MERGE_VALUES, getCurDebugLoc(),
                             DAG.getVTList(&ValueVTs[0], ValueVTs.size()),
                             &Ops[0], 2);