aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDuncan Sands <baldrick@free.fr>2007-05-07 20:49:28 +0000
committerDuncan Sands <baldrick@free.fr>2007-05-07 20:49:28 +0000
commit4fee7034d5a9dae46e78ff300fd6dbf2cdfcb8f9 (patch)
tree9ba99df0771b5d0f420e1305834dae8aeb701559
parentdf8b1f0e8ed3adeccbbca3b8f25169a2c555870c (diff)
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
-rw-r--r--lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
index cdaf191cf1..b70366357d 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);
}