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
This commit is contained in:
Duncan Sands 2007-05-07 20:49:28 +00:00
parent 7208cd6e4e
commit 671e8c4444
1 changed files with 6 additions and 4 deletions

View File

@ -2787,10 +2787,12 @@ void SelectionDAGLowering::LowerCallTo(Instruction &I,
Value *Arg = I.getOperand(i); Value *Arg = I.getOperand(i);
SDOperand ArgNode = getValue(Arg); SDOperand ArgNode = getValue(Arg);
Entry.Node = ArgNode; Entry.Ty = Arg->getType(); Entry.Node = ArgNode; Entry.Ty = Arg->getType();
Entry.isSExt = Attrs && Attrs->paramHasAttr(i, ParamAttr::SExt);
Entry.isZExt = Attrs && Attrs->paramHasAttr(i, ParamAttr::ZExt); unsigned attrInd = i - OpIdx + 1;
Entry.isInReg = Attrs && Attrs->paramHasAttr(i, ParamAttr::InReg); Entry.isSExt = Attrs && Attrs->paramHasAttr(attrInd, ParamAttr::SExt);
Entry.isSRet = Attrs && Attrs->paramHasAttr(i, ParamAttr::StructRet); 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); Args.push_back(Entry);
} }