mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-04-13 15:37:24 +00:00
reject PR3281:crash07.ll with:
llvm-as: crash07.ll:2:32: va_arg requires operand with first class type %y = va_arg [52 x <{}>] %43, double (...) sspreq ^ git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61683 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d31a672c09
commit
0088a5cc72
@ -2311,7 +2311,7 @@ bool LLParser::ParseInstruction(Instruction *&Inst, BasicBlock *BB,
|
||||
case lltok::kw_ptrtoint: return ParseCast(Inst, PFS, Lex.getUIntVal());
|
||||
// Other.
|
||||
case lltok::kw_select: return ParseSelect(Inst, PFS);
|
||||
case lltok::kw_va_arg: return ParseVAArg(Inst, PFS);
|
||||
case lltok::kw_va_arg: return ParseVA_Arg(Inst, PFS);
|
||||
case lltok::kw_extractelement: return ParseExtractElement(Inst, PFS);
|
||||
case lltok::kw_insertelement: return ParseInsertElement(Inst, PFS);
|
||||
case lltok::kw_shufflevector: return ParseShuffleVector(Inst, PFS);
|
||||
@ -2735,15 +2735,19 @@ bool LLParser::ParseSelect(Instruction *&Inst, PerFunctionState &PFS) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/// ParseVAArg
|
||||
/// ::= 'vaarg' TypeAndValue ',' Type
|
||||
bool LLParser::ParseVAArg(Instruction *&Inst, PerFunctionState &PFS) {
|
||||
/// ParseVA_Arg
|
||||
/// ::= 'va_arg' TypeAndValue ',' Type
|
||||
bool LLParser::ParseVA_Arg(Instruction *&Inst, PerFunctionState &PFS) {
|
||||
Value *Op;
|
||||
PATypeHolder EltTy(Type::VoidTy);
|
||||
LocTy TypeLoc;
|
||||
if (ParseTypeAndValue(Op, PFS) ||
|
||||
ParseToken(lltok::comma, "expected ',' after vaarg operand") ||
|
||||
ParseType(EltTy))
|
||||
ParseType(EltTy, TypeLoc))
|
||||
return true;
|
||||
|
||||
if (!EltTy->isFirstClassType())
|
||||
return Error(TypeLoc, "va_arg requires operand with first class type");
|
||||
|
||||
Inst = new VAArgInst(Op, EltTy);
|
||||
return false;
|
||||
|
@ -252,7 +252,7 @@ namespace llvm {
|
||||
bool ParseCompare(Instruction *&I, PerFunctionState &PFS, unsigned Opc);
|
||||
bool ParseCast(Instruction *&I, PerFunctionState &PFS, unsigned Opc);
|
||||
bool ParseSelect(Instruction *&I, PerFunctionState &PFS);
|
||||
bool ParseVAArg(Instruction *&I, PerFunctionState &PFS);
|
||||
bool ParseVA_Arg(Instruction *&I, PerFunctionState &PFS);
|
||||
bool ParseExtractElement(Instruction *&I, PerFunctionState &PFS);
|
||||
bool ParseInsertElement(Instruction *&I, PerFunctionState &PFS);
|
||||
bool ParseShuffleVector(Instruction *&I, PerFunctionState &PFS);
|
||||
|
Loading…
x
Reference in New Issue
Block a user