mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-29 10:32:47 +00:00
reject forward references to functions whose type don't match
up with the definition (and fix a broken testcase). PR6491. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101670 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b5f6af644e
commit
77e80deabc
@ -2787,6 +2787,10 @@ bool LLParser::ParseFunctionHeader(Function *&Fn, bool isDefine) {
|
|||||||
ForwardRefVals.find(FunctionName);
|
ForwardRefVals.find(FunctionName);
|
||||||
if (FRVI != ForwardRefVals.end()) {
|
if (FRVI != ForwardRefVals.end()) {
|
||||||
Fn = M->getFunction(FunctionName);
|
Fn = M->getFunction(FunctionName);
|
||||||
|
if (Fn->getType() != PFT)
|
||||||
|
return Error(FRVI->second.second, "invalid forward reference to "
|
||||||
|
"function '" + FunctionName + "' with wrong type!");
|
||||||
|
|
||||||
ForwardRefVals.erase(FRVI);
|
ForwardRefVals.erase(FRVI);
|
||||||
} else if ((Fn = M->getFunction(FunctionName))) {
|
} else if ((Fn = M->getFunction(FunctionName))) {
|
||||||
// If this function already exists in the symbol table, then it is
|
// If this function already exists in the symbol table, then it is
|
||||||
|
@ -20,4 +20,4 @@ declare void @llvm.memset.i32(i8*, i8, i32, i32)
|
|||||||
|
|
||||||
declare void @llvm.memmove.i32(i8*, i8*, i32, i32)
|
declare void @llvm.memmove.i32(i8*, i8*, i32, i32)
|
||||||
|
|
||||||
declare void @llvm.memmove.i64(i8*, i8*, i32, i32)
|
declare void @llvm.memmove.i64(i8*, i8*, i64, i32)
|
||||||
|
Loading…
Reference in New Issue
Block a user