Target: change member from reference to pointer

This is a preliminary step to help ease the construction of CallLoweringInfo.
Changing the construction to a chained function pattern requires that the
parameter be nullable.  However, rather than copying the vector, save a pointer
rather than the reference to permit a late binding of the arguments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209080 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Saleem Abdulrasool 2014-05-17 21:50:01 +00:00
parent a53c765745
commit d825568843
6 changed files with 15 additions and 10 deletions

View File

@ -2111,7 +2111,7 @@ public:
unsigned NumFixedArgs; unsigned NumFixedArgs;
CallingConv::ID CallConv; CallingConv::ID CallConv;
SDValue Callee; SDValue Callee;
ArgListTy &Args; ArgListTy *Args;
SelectionDAG &DAG; SelectionDAG &DAG;
SDLoc DL; SDLoc DL;
ImmutableCallSite *CS; ImmutableCallSite *CS;
@ -2131,7 +2131,7 @@ public:
DoesNotReturn(cs.doesNotReturn()), DoesNotReturn(cs.doesNotReturn()),
IsReturnValueUsed(!cs.getInstruction()->use_empty()), IsReturnValueUsed(!cs.getInstruction()->use_empty()),
IsTailCall(isTailCall), NumFixedArgs(FTy->getNumParams()), IsTailCall(isTailCall), NumFixedArgs(FTy->getNumParams()),
CallConv(cs.getCallingConv()), Callee(callee), Args(args), DAG(dag), CallConv(cs.getCallingConv()), Callee(callee), Args(&args), DAG(dag),
DL(dl), CS(&cs) {} DL(dl), CS(&cs) {}
/// Constructs a call lowering context based on the provided call /// Constructs a call lowering context based on the provided call
@ -2145,7 +2145,12 @@ public:
IsVarArg(isVarArg), IsInReg(isInReg), DoesNotReturn(doesNotReturn), IsVarArg(isVarArg), IsInReg(isInReg), DoesNotReturn(doesNotReturn),
IsReturnValueUsed(isReturnValueUsed), IsTailCall(isTailCall), IsReturnValueUsed(isReturnValueUsed), IsTailCall(isTailCall),
NumFixedArgs(numFixedArgs), CallConv(callConv), Callee(callee), NumFixedArgs(numFixedArgs), CallConv(callConv), Callee(callee),
Args(args), DAG(dag), DL(dl), CS(nullptr) {} Args(&args), DAG(dag), DL(dl), CS(nullptr) {}
ArgListTy &getArgs() {
assert(Args && "Arguments must be set before accessing them");
return *Args;
}
}; };
/// This function lowers an abstract call to a function into an actual call. /// This function lowers an abstract call to a function into an actual call.

View File

@ -7124,7 +7124,7 @@ TargetLowering::LowerCallTo(TargetLowering::CallLoweringInfo &CLI) const {
// Handle all of the outgoing arguments. // Handle all of the outgoing arguments.
CLI.Outs.clear(); CLI.Outs.clear();
CLI.OutVals.clear(); CLI.OutVals.clear();
ArgListTy &Args = CLI.Args; ArgListTy &Args = CLI.getArgs();
for (unsigned i = 0, e = Args.size(); i != e; ++i) { for (unsigned i = 0, e = Args.size(); i != e; ++i) {
SmallVector<EVT, 4> ValueVTs; SmallVector<EVT, 4> ValueVTs;
ComputeValueVTs(*this, Args[i].Ty, ValueVTs); ComputeValueVTs(*this, Args[i].Ty, ValueVTs);

View File

@ -2172,7 +2172,7 @@ SDValue ARM64TargetLowering::LowerCall(CallLoweringInfo &CLI,
for (unsigned i = 0; i != NumArgs; ++i) { for (unsigned i = 0; i != NumArgs; ++i) {
MVT ValVT = Outs[i].VT; MVT ValVT = Outs[i].VT;
// Get type of the original argument. // Get type of the original argument.
EVT ActualVT = getValueType(CLI.Args[Outs[i].OrigArgIndex].Ty, EVT ActualVT = getValueType(CLI.getArgs()[Outs[i].OrigArgIndex].Ty,
/*AllowUnknown*/ true); /*AllowUnknown*/ true);
MVT ActualMVT = ActualVT.isSimple() ? ActualVT.getSimpleVT() : ValVT; MVT ActualMVT = ActualVT.isSimple() ? ActualVT.getSimpleVT() : ValVT;
ISD::ArgFlagsTy ArgFlags = Outs[i].Flags; ISD::ArgFlagsTy ArgFlags = Outs[i].Flags;

View File

@ -492,9 +492,9 @@ getOpndList(SmallVectorImpl<SDValue> &Ops,
std::end(HardFloatLibCalls), Find)) std::end(HardFloatLibCalls), Find))
LookupHelper = false; LookupHelper = false;
} }
if (LookupHelper) Mips16HelperFunction = if (LookupHelper)
getMips16HelperFunction(CLI.RetTy, CLI.Args, NeedMips16Helper); Mips16HelperFunction =
getMips16HelperFunction(CLI.RetTy, CLI.getArgs(), NeedMips16Helper);
} }
SDValue JumpTarget = Callee; SDValue JumpTarget = Callee;

View File

@ -2329,7 +2329,7 @@ MipsTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
MipsCCInfo.analyzeCallOperands(Outs, IsVarArg, MipsCCInfo.analyzeCallOperands(Outs, IsVarArg,
Subtarget->mipsSEUsesSoftFloat(), Subtarget->mipsSEUsesSoftFloat(),
Callee.getNode(), CLI.Args); Callee.getNode(), CLI.getArgs());
// Get a count of how many bytes are to be pushed on the stack. // Get a count of how many bytes are to be pushed on the stack.
unsigned NextStackOffset = CCInfo.getNextStackOffset(); unsigned NextStackOffset = CCInfo.getNextStackOffset();

View File

@ -636,7 +636,7 @@ SDValue NVPTXTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
SDValue Chain = CLI.Chain; SDValue Chain = CLI.Chain;
SDValue Callee = CLI.Callee; SDValue Callee = CLI.Callee;
bool &isTailCall = CLI.IsTailCall; bool &isTailCall = CLI.IsTailCall;
ArgListTy &Args = CLI.Args; ArgListTy &Args = CLI.getArgs();
Type *retTy = CLI.RetTy; Type *retTy = CLI.RetTy;
ImmutableCallSite *CS = CLI.CS; ImmutableCallSite *CS = CLI.CS;