mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-19 04:29:21 +00:00
Fix bug: Assembler/2003-04-25-UnresolvedGlobalReference.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5948 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b1f92f8f3a
commit
b8fdd8ba61
@ -156,6 +156,25 @@ static struct PerFunctionInfo {
|
||||
// resolve the branches now...
|
||||
ResolveDefinitions(LateResolveValues, &CurModule.LateResolveValues);
|
||||
|
||||
// Make sure to resolve any constant expr references that might exist within
|
||||
// the function we just declared itself.
|
||||
ValID FID;
|
||||
if (CurrentFunction->hasName()) {
|
||||
FID = ValID::create((char*)CurrentFunction->getName().c_str());
|
||||
} else {
|
||||
unsigned Slot = CurrentFunction->getType()->getUniqueID();
|
||||
assert(CurModule.Values.size() > Slot && "Function not inserted?");
|
||||
// Figure out which slot number if is...
|
||||
for (unsigned i = 0; ; ++i) {
|
||||
assert(i < CurModule.Values[Slot].size() && "Function not found!");
|
||||
if (CurModule.Values[Slot][i] == CurrentFunction) {
|
||||
FID = ValID::create((int)i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
CurModule.DeclareNewGlobalValue(CurrentFunction, FID);
|
||||
|
||||
Values.clear(); // Clear out function local definitions
|
||||
Types.clear();
|
||||
CurrentFunction = 0;
|
||||
@ -965,7 +984,6 @@ ConstVal: Types '[' ConstVector ']' { // Nonempty unsized arr
|
||||
|
||||
CurMeth.CurrentFunction = SavedCurFn;
|
||||
|
||||
|
||||
// If this is an initializer for a constant pointer, which is referencing a
|
||||
// (currently) undefined variable, create a stub now that shall be replaced
|
||||
// in the future with the right type of variable.
|
||||
|
Loading…
Reference in New Issue
Block a user