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:
Chris Lattner 2003-04-25 21:47:33 +00:00
parent b1f92f8f3a
commit b8fdd8ba61

View File

@ -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.