mirror of
https://github.com/RPCSX/llvm.git
synced 2025-03-04 10:59:04 +00:00
Don't store Twine temporaries, it's not safe.
And don't append the name over and over again in the loop. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129210 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
cc513e1cf1
commit
c18214a6e0
@ -85,12 +85,11 @@ MCSymbol *MCContext::CreateSymbol(StringRef Name) {
|
||||
StringMapEntry<bool> *NameEntry = &UsedNames.GetOrCreateValue(Name);
|
||||
if (NameEntry->getValue()) {
|
||||
assert(isTemporary && "Cannot rename non temporary symbols");
|
||||
SmallString<128> NewName;
|
||||
SmallString<128> NewName = Name;
|
||||
do {
|
||||
Twine T = Name + Twine(NextUniqueID++);
|
||||
T.toVector(NewName);
|
||||
StringRef foo = NewName;
|
||||
NameEntry = &UsedNames.GetOrCreateValue(foo);
|
||||
NewName.resize(Name.size());
|
||||
raw_svector_ostream(NewName) << NextUniqueID++;
|
||||
NameEntry = &UsedNames.GetOrCreateValue(NewName);
|
||||
} while (NameEntry->getValue());
|
||||
}
|
||||
NameEntry->setValue(true);
|
||||
@ -110,9 +109,8 @@ MCSymbol *MCContext::GetOrCreateSymbol(const Twine &Name) {
|
||||
|
||||
MCSymbol *MCContext::CreateTempSymbol() {
|
||||
SmallString<128> NameSV;
|
||||
Twine Name = Twine(MAI.getPrivateGlobalPrefix()) + "tmp" +
|
||||
Twine(NextUniqueID++);
|
||||
Name.toVector(NameSV);
|
||||
raw_svector_ostream(NameSV)
|
||||
<< MAI.getPrivateGlobalPrefix() << "tmp" << NextUniqueID++;
|
||||
return CreateSymbol(NameSV);
|
||||
}
|
||||
|
||||
|
@ -1,10 +1,14 @@
|
||||
// RUN: llvm-mc -triple i386-unknown-unknown %s | FileCheck %s
|
||||
|
||||
.size bar, . - bar
|
||||
.Ltmp01:
|
||||
.size foo, .Ltmp01 - foo
|
||||
.Ltmp0:
|
||||
.size foo, .Ltmp0 - foo
|
||||
.size qux, .Ltmp0 - qux
|
||||
|
||||
// CHECK: .Ltmp0:
|
||||
// CHECK: .size bar, .Ltmp0-bar
|
||||
// CHECK: .Ltmp01
|
||||
// CHECK: .size foo, .Ltmp01-foo
|
||||
// CHECK: .Ltmp02
|
||||
// CHECK: .size qux, .Ltmp02-qux
|
||||
|
Loading…
x
Reference in New Issue
Block a user