reject void in intrinsic type lists.

llvm-svn: 99347
This commit is contained in:
Chris Lattner 2010-03-23 23:46:27 +00:00
parent 3d9ec39116
commit b424faa09c
1 changed files with 12 additions and 7 deletions

View File

@ -488,18 +488,17 @@ CodeGenIntrinsic::CodeGenIntrinsic(Record *R) {
}
if (EVT(VT).isOverloaded()) {
OverloadedVTs.push_back(VT);
isOverloaded |= true;
isOverloaded = true;
}
// Reject invalid types.
if (VT == MVT::isVoid)
throw "Intrinsic '" + DefName + " has void in result type list!";
IS.RetVTs.push_back(VT);
IS.RetTypeDefs.push_back(TyEl);
}
if (IS.RetVTs.size() == 1 && IS.RetVTs[0] == MVT::isVoid) {
IS.RetVTs.pop_back();
IS.RetTypeDefs.pop_back();
}
// Parse the list of parameter types.
TypeList = R->getValueAsListInit("ParamTypes");
for (unsigned i = 0, e = TypeList->getSize(); i != e; ++i) {
@ -520,10 +519,16 @@ CodeGenIntrinsic::CodeGenIntrinsic(Record *R) {
"Expected iAny or vAny type");
} else
VT = getValueType(TyEl->getValueAsDef("VT"));
if (EVT(VT).isOverloaded()) {
OverloadedVTs.push_back(VT);
isOverloaded |= true;
isOverloaded = true;
}
// Reject invalid types.
if (VT == MVT::isVoid && i != e-1 /*void at end means varargs*/)
throw "Intrinsic '" + DefName + " has void in result type list!";
IS.ParamVTs.push_back(VT);
IS.ParamTypeDefs.push_back(TyEl);
}