diff --git a/llvm/lib/MC/MCContext.cpp b/llvm/lib/MC/MCContext.cpp --- a/llvm/lib/MC/MCContext.cpp +++ b/llvm/lib/MC/MCContext.cpp @@ -386,9 +386,6 @@ return new (nullptr, *this) MCSymbolXCOFF(nullptr, IsTemporary); StringRef OriginalName = Name->first(); - if (OriginalName.startswith("._Renamed..") || - OriginalName.startswith("_Renamed..")) - reportError(SMLoc(), "invalid symbol name from source"); if (MAI->isValidUnquotedName(OriginalName)) return new (Name, *this) MCSymbolXCOFF(Name, IsTemporary); diff --git a/llvm/test/CodeGen/PowerPC/aix-xcoff-tls-rename.ll b/llvm/test/CodeGen/PowerPC/aix-xcoff-tls-rename.ll new file mode 100644 --- /dev/null +++ b/llvm/test/CodeGen/PowerPC/aix-xcoff-tls-rename.ll @@ -0,0 +1,15 @@ +; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr4 \ +; RUN: -mattr=-altivec -data-sections=false -xcoff-traceback-table=false < %s | FileCheck %s + +; CHECK: .extern .__tls_get_addr[PR] +; CHECK-NEXT: .csect .tdata[TL],2 +; CHECK-NEXT: .globl _Renamed..24f_f # @"f$f" +; CHECK-NEXT: .rename _Renamed..24f_f,"f$f" + +@"f$f" = thread_local global i32 10, align 4 + +define void @fun() { +entry: + store i32 1, ptr @"f$f", align 4 + ret void +}