mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-02 22:32:08 +00:00
Two changes:
1. Delete type handle regardless of whether a collision occured 2. Remove a MAJOR pessimization of runtime performance (thought be be an optimization at the time). This second one was causing a 105k llvm file (from gcc) to parse in 58 seconds... without the 'optimization' it now parses in 3.64 seconds. I suck. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@933 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
bfabd8877d
commit
c9a21b51a1
@ -463,21 +463,6 @@ static void ResolveTypes(vector<PATypeHolder<Type> > &LateResolveTypes) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ResolveSomeTypes - This goes through the forward referenced type table and
|
|
||||||
// completes references that are now done. This is so that types are
|
|
||||||
// immediately resolved to be as concrete as possible. This does not cause
|
|
||||||
// thrown exceptions if not everything is resolved.
|
|
||||||
//
|
|
||||||
static void ResolveSomeTypes(vector<PATypeHolder<Type> > &LateResolveTypes) {
|
|
||||||
for (unsigned i = 0; i < LateResolveTypes.size(); ) {
|
|
||||||
if (ResolveType(LateResolveTypes[i]))
|
|
||||||
++i; // Type didn't resolve
|
|
||||||
else
|
|
||||||
LateResolveTypes.erase(LateResolveTypes.begin()+i); // Type resolved!
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// setValueName - Set the specified value to the name given. The name may be
|
// setValueName - Set the specified value to the name given. The name may be
|
||||||
// null potentially, in which case this is a noop. The string passed in is
|
// null potentially, in which case this is a noop. The string passed in is
|
||||||
// assumed to be a malloc'd string buffer, and is freed by this function.
|
// assumed to be a malloc'd string buffer, and is freed by this function.
|
||||||
@ -1041,11 +1026,9 @@ ConstPool : ConstPool OptAssign CONST ConstVal {
|
|||||||
InsertType($4->get(),
|
InsertType($4->get(),
|
||||||
inMethodScope() ? CurMeth.Types : CurModule.Types);
|
inMethodScope() ? CurMeth.Types : CurModule.Types);
|
||||||
}
|
}
|
||||||
delete $4;
|
|
||||||
|
|
||||||
ResolveSomeTypes(inMethodScope() ? CurMeth.LateResolveTypes :
|
|
||||||
CurModule.LateResolveTypes);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
delete $4;
|
||||||
}
|
}
|
||||||
| ConstPool MethodProto { // Method prototypes can be in const pool
|
| ConstPool MethodProto { // Method prototypes can be in const pool
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user