Use createTempSymbol to avoid collisions instead of an ad hoc method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@232483 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola 2015-03-17 14:50:32 +00:00
parent b80d90e9d0
commit cebed4aaf1
3 changed files with 10 additions and 18 deletions

View File

@ -321,17 +321,9 @@ bool PPCAsmPrinter::PrintAsmMemoryOperand(const MachineInstr *MI, unsigned OpNo,
/// exists for it. If not, create one. Then return a symbol that references
/// the TOC entry.
MCSymbol *PPCAsmPrinter::lookUpOrCreateTOCEntry(MCSymbol *Sym) {
const DataLayout *DL = TM.getDataLayout();
MCSymbol *&TOCEntry = TOC[Sym];
// To avoid name clash check if the name already exists.
while (!TOCEntry) {
if (OutContext.LookupSymbol(Twine(DL->getPrivateGlobalPrefix()) +
"C" + Twine(TOCLabelID++)) == nullptr) {
TOCEntry = GetTempSymbol("C", TOCLabelID);
}
}
if (!TOCEntry)
TOCEntry = createTempSymbol("C", TOCLabelID++);
return TOCEntry;
}

View File

@ -19,9 +19,9 @@ define i32 @foo(double %X, double %Y) nounwind readnone {
}
; Check the creation of 2 .tc entries for both double constants. They
; should be .LC1 and .LC3 to avoid name clash with global constants
; .LC0 and .LC2
; CHECK: .LC{{[13]}}:
; avoid name clash with global constants .LC0 and .LC2
; CHECK: .section .toc,"aw",@progbits
; CHECK: .LC{{.*}}:
; CHECK-NEXT: .tc {{[\._a-zA-Z0-9]+}}[TC],{{[\._a-zA-Z0-9]+}}
; CHECK: .LC{{[13]}}:
; CHECK: .LC{{.*}}:
; CHECK-NEXT: .tc {{[\._a-zA-Z0-9]+}}[TC],{{[\._a-zA-Z0-9]+}}

View File

@ -10,7 +10,7 @@
; CHECK-LABEL: bar:
define i32 @bar() {
; MEDIUM: addis 3, 2, fooa@toc@ha
; LARGE: addis 3, 2, .LC1@toc@ha
; LARGE: addis 3, 2, .L[[L0:.*]]@toc@ha
%a = load i32, i32* @fooa
ret i32 %a
}
@ -19,13 +19,13 @@ define i32 @bar() {
define i64 @bar2() {
; MEDIUM: addis 3, 2, foo2a@toc@ha
; MEDIUM: addi 3, 3, foo2a@toc@l
; LARGE: addis 3, 2, .LC3@toc@ha
; LARGE: addis 3, 2, .L[[L1:.*]]@toc@ha
%a = load i64, i64* @foo2a
ret i64 %a
}
; LARGE: .LC1:
; LARGE: .L[[L0]]:
; LARGE-NEXT: .tc fooa[TC],fooa
; LARGE: .LC3:
; LARGE: .L[[L1]]:
; LARGE-NEXT: .tc foo2a[TC],foo2a