SmallVectorImpl<ISD::OutputArg> &Outs = CLI.Outs;
for (const ISD::OutputArg &Out : Outs) {
- assert(!Out.Flags.isByVal() && "byval is not valid for return values");
- assert(!Out.Flags.isNest() && "nest is not valid for return values");
+ if (Out.Flags.isByVal())
+ fail(DL, DAG, "WebAssembly hasn't implemented byval arguments");
+ if (Out.Flags.isNest())
+ fail(DL, DAG, "WebAssembly hasn't implemented nest arguments");
if (Out.Flags.isInAlloca())
- fail(DL, DAG, "WebAssembly hasn't implemented inalloca results");
+ fail(DL, DAG, "WebAssembly hasn't implemented inalloca arguments");
if (Out.Flags.isInConsecutiveRegs())
- fail(DL, DAG, "WebAssembly hasn't implemented cons regs results");
+ fail(DL, DAG, "WebAssembly hasn't implemented cons regs arguments");
if (Out.Flags.isInConsecutiveRegsLast())
- fail(DL, DAG, "WebAssembly hasn't implemented cons regs last results");
+ fail(DL, DAG, "WebAssembly hasn't implemented cons regs last arguments");
}
bool IsVarArg = CLI.IsVarArg;
SmallVector<EVT, 8> Tys;
for (const auto &In : Ins) {
- if (In.Flags.isByVal())
- fail(DL, DAG, "WebAssembly hasn't implemented byval arguments");
+ assert(!In.Flags.isByVal() && "byval is not valid for return values");
+ assert(!In.Flags.isNest() && "nest is not valid for return values");
if (In.Flags.isInAlloca())
- fail(DL, DAG, "WebAssembly hasn't implemented inalloca arguments");
- if (In.Flags.isNest())
- fail(DL, DAG, "WebAssembly hasn't implemented nest arguments");
+ fail(DL, DAG, "WebAssembly hasn't implemented inalloca return values");
if (In.Flags.isInConsecutiveRegs())
- fail(DL, DAG, "WebAssembly hasn't implemented cons regs arguments");
+ fail(DL, DAG, "WebAssembly hasn't implemented cons regs return values");
if (In.Flags.isInConsecutiveRegsLast())
- fail(DL, DAG, "WebAssembly hasn't implemented cons regs last arguments");
+ fail(DL, DAG, "WebAssembly hasn't implemented cons regs last return values");
// Ignore In.getOrigAlign() because all our arguments are passed in
// registers.
Tys.push_back(In.VT);