mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-15 05:24:01 +00:00
Do not allow bytecode files with unresolved references to be read. Doing
so lets wierd ConstantPlaceholder objects sneak into the system which confuses it greatly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18487 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -1312,7 +1312,7 @@ Constant *BytecodeReader::ParseConstantValue(unsigned TypeID) {
|
|||||||
// Construct a ConstantExpr of the appropriate kind
|
// Construct a ConstantExpr of the appropriate kind
|
||||||
if (isExprNumArgs == 1) { // All one-operand expressions
|
if (isExprNumArgs == 1) { // All one-operand expressions
|
||||||
if (Opcode != Instruction::Cast)
|
if (Opcode != Instruction::Cast)
|
||||||
error("Only Cast instruction has one argument for ConstantExpr");
|
error("Only cast instruction has one argument for ConstantExpr");
|
||||||
|
|
||||||
Constant* Result = ConstantExpr::getCast(ArgVec[0], getType(TypeID));
|
Constant* Result = ConstantExpr::getCast(ArgVec[0], getType(TypeID));
|
||||||
if (Handler) Handler->handleConstantExpression(Opcode, ArgVec, Result);
|
if (Handler) Handler->handleConstantExpression(Opcode, ArgVec, Result);
|
||||||
@ -1568,6 +1568,12 @@ void BytecodeReader::ParseConstantPool(ValueTable &Tab,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// After we have finished parsing the constant pool, we had better not have
|
||||||
|
// any dangling references left.
|
||||||
|
if (!ConstantFwdRefs.empty())
|
||||||
|
error("Unresolved constant references exist!");
|
||||||
|
|
||||||
checkPastBlockEnd("Constant Pool");
|
checkPastBlockEnd("Constant Pool");
|
||||||
if (Handler) Handler->handleGlobalConstantsEnd();
|
if (Handler) Handler->handleGlobalConstantsEnd();
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user