summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
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
commit671e8c4444f3266943d442fe5a8e420f26e92500 (patch)
tree3afbbfe876710a6b31a6b4107a4ef620dc44afbc /llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
parent7208cd6e4ee34ddbbf7b31b57f794e2630e0c474 (diff)
downloadbcm5719-llvm-671e8c4444f3266943d442fe5a8e420f26e92500.tar.gz
bcm5719-llvm-671e8c4444f3266943d442fe5a8e420f26e92500.zip
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. llvm-svn: 36906
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp')
-rw-r--r--llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
index cdaf191cf18..b70366357d9 100644
--- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
+++ b/llvm/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);
}
OpenPOWER on IntegriCloud