From 4fee7034d5a9dae46e78ff300fd6dbf2cdfcb8f9 Mon Sep 17 00:00:00 2001 From: Duncan Sands Date: Mon, 7 May 2007 20:49:28 +0000 Subject: [PATCH] Parameter attributes on invoke calls were being lost due to the wrong attribute index being used. Fix proposed by Anton Korobeynikov, who asked me to implement and commit it for him. This is PR1398. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36906 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp index cdaf191cf18..b70366357d9 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp @@ -2787,10 +2787,12 @@ void SelectionDAGLowering::LowerCallTo(Instruction &I, Value *Arg = I.getOperand(i); SDOperand ArgNode = getValue(Arg); Entry.Node = ArgNode; Entry.Ty = Arg->getType(); - Entry.isSExt = Attrs && Attrs->paramHasAttr(i, ParamAttr::SExt); - Entry.isZExt = Attrs && Attrs->paramHasAttr(i, ParamAttr::ZExt); - Entry.isInReg = Attrs && Attrs->paramHasAttr(i, ParamAttr::InReg); - Entry.isSRet = Attrs && Attrs->paramHasAttr(i, ParamAttr::StructRet); + + unsigned attrInd = i - OpIdx + 1; + Entry.isSExt = Attrs && Attrs->paramHasAttr(attrInd, ParamAttr::SExt); + Entry.isZExt = Attrs && Attrs->paramHasAttr(attrInd, ParamAttr::ZExt); + Entry.isInReg = Attrs && Attrs->paramHasAttr(attrInd, ParamAttr::InReg); + Entry.isSRet = Attrs && Attrs->paramHasAttr(attrInd, ParamAttr::StructRet); Args.push_back(Entry); } -- 2.34.1