Skip to content

Commit 240c454

Browse files
authored
[CodeGen] Remove default ctors for InputArg and OutputArg (llvm#153205)
These make it easy to forget to initialize some members, like the newly added OrigTy. Force these to always go through the ctor instead.
1 parent b563b27 commit 240c454

File tree

4 files changed

+39
-47
lines changed

4 files changed

+39
-47
lines changed

llvm/include/llvm/CodeGen/TargetCallingConv.h

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -205,8 +205,8 @@ namespace ISD {
205205
ArgFlagsTy Flags;
206206
MVT VT = MVT::Other;
207207
EVT ArgVT;
208-
Type *OrigTy = nullptr;
209-
bool Used = false;
208+
Type *OrigTy;
209+
bool Used;
210210

211211
/// Index original Function's argument.
212212
unsigned OrigArgIndex;
@@ -218,14 +218,10 @@ namespace ISD {
218218
/// registers, we got 4 InputArgs with PartOffsets 0, 4, 8 and 12.
219219
unsigned PartOffset;
220220

221-
InputArg() = default;
222-
InputArg(ArgFlagsTy flags, EVT vt, EVT argvt, Type *OrigTy, bool used,
223-
unsigned origIdx, unsigned partOffs)
224-
: Flags(flags), OrigTy(OrigTy), Used(used), OrigArgIndex(origIdx),
225-
PartOffset(partOffs) {
226-
VT = vt.getSimpleVT();
227-
ArgVT = argvt;
228-
}
221+
InputArg(ArgFlagsTy Flags, MVT VT, EVT ArgVT, Type *OrigTy, bool Used,
222+
unsigned OrigArgIndex, unsigned PartOffset)
223+
: Flags(Flags), VT(VT), ArgVT(ArgVT), OrigTy(OrigTy), Used(Used),
224+
OrigArgIndex(OrigArgIndex), PartOffset(PartOffset) {}
229225

230226
bool isOrigArg() const {
231227
return OrigArgIndex != NoArgIndex;
@@ -245,7 +241,7 @@ namespace ISD {
245241
ArgFlagsTy Flags;
246242
MVT VT;
247243
EVT ArgVT;
248-
Type *OrigTy = nullptr;
244+
Type *OrigTy;
249245

250246
/// Index original Function's argument.
251247
unsigned OrigArgIndex;
@@ -255,14 +251,10 @@ namespace ISD {
255251
/// registers, we got 4 OutputArgs with PartOffsets 0, 4, 8 and 12.
256252
unsigned PartOffset;
257253

258-
OutputArg() = default;
259-
OutputArg(ArgFlagsTy flags, MVT vt, EVT argvt, Type *OrigTy,
260-
unsigned origIdx, unsigned partOffs)
261-
: Flags(flags), OrigTy(OrigTy), OrigArgIndex(origIdx),
262-
PartOffset(partOffs) {
263-
VT = vt;
264-
ArgVT = argvt;
265-
}
254+
OutputArg(ArgFlagsTy Flags, MVT VT, EVT ArgVT, Type *OrigTy,
255+
unsigned OrigArgIndex, unsigned PartOffset)
256+
: Flags(Flags), VT(VT), ArgVT(ArgVT), OrigTy(OrigTy),
257+
OrigArgIndex(OrigArgIndex), PartOffset(PartOffset) {}
266258
};
267259

268260
} // end namespace ISD

llvm/lib/CodeGen/SelectionDAG/FastISel.cpp

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1012,17 +1012,16 @@ bool FastISel::lowerCallTo(CallLoweringInfo &CLI) {
10121012
MVT RegisterVT = TLI.getRegisterType(CLI.RetTy->getContext(), VT);
10131013
unsigned NumRegs = TLI.getNumRegisters(CLI.RetTy->getContext(), VT);
10141014
for (unsigned i = 0; i != NumRegs; ++i) {
1015-
ISD::InputArg MyFlags;
1016-
MyFlags.VT = RegisterVT;
1017-
MyFlags.ArgVT = VT;
1018-
MyFlags.Used = CLI.IsReturnValueUsed;
1015+
ISD::ArgFlagsTy Flags;
10191016
if (CLI.RetSExt)
1020-
MyFlags.Flags.setSExt();
1017+
Flags.setSExt();
10211018
if (CLI.RetZExt)
1022-
MyFlags.Flags.setZExt();
1019+
Flags.setZExt();
10231020
if (CLI.IsInReg)
1024-
MyFlags.Flags.setInReg();
1025-
CLI.Ins.push_back(MyFlags);
1021+
Flags.setInReg();
1022+
ISD::InputArg Ret(Flags, RegisterVT, VT, CLI.RetTy, CLI.IsReturnValueUsed,
1023+
ISD::InputArg::NoArgIndex, 0);
1024+
CLI.Ins.push_back(Ret);
10261025
}
10271026
}
10281027

llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11069,23 +11069,20 @@ TargetLowering::LowerCallTo(TargetLowering::CallLoweringInfo &CLI) const {
1106911069
unsigned NumRegs = getNumRegistersForCallingConv(CLI.RetTy->getContext(),
1107011070
CLI.CallConv, VT);
1107111071
for (unsigned i = 0; i != NumRegs; ++i) {
11072-
ISD::InputArg MyFlags;
11073-
MyFlags.Flags = Flags;
11074-
MyFlags.VT = RegisterVT;
11075-
MyFlags.ArgVT = VT;
11076-
MyFlags.Used = CLI.IsReturnValueUsed;
11072+
ISD::InputArg Ret(Flags, RegisterVT, VT, CLI.RetTy,
11073+
CLI.IsReturnValueUsed, ISD::InputArg::NoArgIndex, 0);
1107711074
if (CLI.RetTy->isPointerTy()) {
11078-
MyFlags.Flags.setPointer();
11079-
MyFlags.Flags.setPointerAddrSpace(
11075+
Ret.Flags.setPointer();
11076+
Ret.Flags.setPointerAddrSpace(
1108011077
cast<PointerType>(CLI.RetTy)->getAddressSpace());
1108111078
}
1108211079
if (CLI.RetSExt)
11083-
MyFlags.Flags.setSExt();
11080+
Ret.Flags.setSExt();
1108411081
if (CLI.RetZExt)
11085-
MyFlags.Flags.setZExt();
11082+
Ret.Flags.setZExt();
1108611083
if (CLI.IsInReg)
11087-
MyFlags.Flags.setInReg();
11088-
CLI.Ins.push_back(MyFlags);
11084+
Ret.Flags.setInReg();
11085+
CLI.Ins.push_back(Ret);
1108911086
}
1109011087
}
1109111088
}
@@ -11095,11 +11092,12 @@ TargetLowering::LowerCallTo(TargetLowering::CallLoweringInfo &CLI) const {
1109511092
if (supportSwiftError()) {
1109611093
for (const ArgListEntry &Arg : Args) {
1109711094
if (Arg.IsSwiftError) {
11098-
ISD::InputArg MyFlags;
11099-
MyFlags.VT = getPointerTy(DL);
11100-
MyFlags.ArgVT = EVT(getPointerTy(DL));
11101-
MyFlags.Flags.setSwiftError();
11102-
CLI.Ins.push_back(MyFlags);
11095+
ISD::ArgFlagsTy Flags;
11096+
Flags.setSwiftError();
11097+
ISD::InputArg Ret(Flags, getPointerTy(DL), EVT(getPointerTy(DL)),
11098+
PointerType::getUnqual(CLI.RetTy->getContext()),
11099+
/*Used=*/true, ISD::InputArg::NoArgIndex, 0);
11100+
CLI.Ins.push_back(Ret);
1110311101
}
1110411102
}
1110511103
}

llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1320,18 +1320,21 @@ WebAssemblyTargetLowering::LowerCall(CallLoweringInfo &CLI,
13201320
// signature They are necessary to match callee and caller signature for
13211321
// indirect call.
13221322
if (CallConv == CallingConv::Swift) {
1323+
Type *PtrTy = PointerType::getUnqual(*DAG.getContext());
13231324
if (!HasSwiftSelfArg) {
13241325
NumFixedArgs++;
1325-
ISD::OutputArg Arg;
1326-
Arg.Flags.setSwiftSelf();
1326+
ISD::ArgFlagsTy Flags;
1327+
Flags.setSwiftSelf();
1328+
ISD::OutputArg Arg(Flags, PtrVT, EVT(PtrVT), PtrTy, 0, 0);
13271329
CLI.Outs.push_back(Arg);
13281330
SDValue ArgVal = DAG.getUNDEF(PtrVT);
13291331
CLI.OutVals.push_back(ArgVal);
13301332
}
13311333
if (!HasSwiftErrorArg) {
13321334
NumFixedArgs++;
1333-
ISD::OutputArg Arg;
1334-
Arg.Flags.setSwiftError();
1335+
ISD::ArgFlagsTy Flags;
1336+
Flags.setSwiftError();
1337+
ISD::OutputArg Arg(Flags, PtrVT, EVT(PtrVT), PtrTy, 0, 0);
13351338
CLI.Outs.push_back(Arg);
13361339
SDValue ArgVal = DAG.getUNDEF(PtrVT);
13371340
CLI.OutVals.push_back(ArgVal);

0 commit comments

Comments
 (0)