diff options
| author | Reid Kleckner <rnk@google.com> | 2016-10-13 00:55:24 +0000 |
|---|---|---|
| committer | Reid Kleckner <rnk@google.com> | 2016-10-13 00:55:24 +0000 |
| commit | 741d8a21d3244b3876e52371f866284dd1eb5a38 (patch) | |
| tree | e01fac3de81617026ca1765817464ad69115ce82 | |
| parent | 3aa0a2510eb8acf443fb337fc6b5bdea7590f1b0 (diff) | |
| download | bcm5719-llvm-741d8a21d3244b3876e52371f866284dd1eb5a38.tar.gz bcm5719-llvm-741d8a21d3244b3876e52371f866284dd1eb5a38.zip | |
Correct PrivateLinkage for COFF
- Use storage class C_STAT for 'PrivateLinkage' The storage class for
PrivateLinkage should equal to the Internal Linkage.
- Set 'PrivateGlobalPrefix' from "L" to ".L" for MM_WinCOFF (includes
x86_64) MM_WinCOFF has empty GlobalPrefix '\0' so PrivateGlobalPrefix
"L" may conflict to the normal symbol name starting with 'L'.
Based on a patch by Han Sangjin! Manually updated test cases.
llvm-svn: 284096
| -rw-r--r-- | llvm/include/llvm/IR/DataLayout.h | 2 | ||||
| -rw-r--r-- | llvm/lib/Target/X86/X86AsmPrinter.cpp | 6 | ||||
| -rw-r--r-- | llvm/test/CodeGen/ARM/Windows/long-calls.ll | 2 | ||||
| -rw-r--r-- | llvm/test/CodeGen/ARM/Windows/tls.ll | 14 | ||||
| -rw-r--r-- | llvm/test/CodeGen/X86/fastcall-correct-mangling.ll | 2 |
5 files changed, 13 insertions, 13 deletions
diff --git a/llvm/include/llvm/IR/DataLayout.h b/llvm/include/llvm/IR/DataLayout.h index abcb19bc7c2..6f37669f976 100644 --- a/llvm/include/llvm/IR/DataLayout.h +++ b/llvm/include/llvm/IR/DataLayout.h @@ -286,11 +286,11 @@ public: case MM_None: return ""; case MM_ELF: + case MM_WinCOFF: return ".L"; case MM_Mips: return "$"; case MM_MachO: - case MM_WinCOFF: case MM_WinCOFFX86: return "L"; } diff --git a/llvm/lib/Target/X86/X86AsmPrinter.cpp b/llvm/lib/Target/X86/X86AsmPrinter.cpp index d39f46ae4ab..d42e1187ce6 100644 --- a/llvm/lib/Target/X86/X86AsmPrinter.cpp +++ b/llvm/lib/Target/X86/X86AsmPrinter.cpp @@ -57,10 +57,10 @@ bool X86AsmPrinter::runOnMachineFunction(MachineFunction &MF) { SetupMachineFunction(MF); if (Subtarget->isTargetCOFF()) { - bool Intrn = MF.getFunction()->hasInternalLinkage(); + bool Local = MF.getFunction()->hasLocalLinkage(); OutStreamer->BeginCOFFSymbolDef(CurrentFnSym); - OutStreamer->EmitCOFFSymbolStorageClass(Intrn ? COFF::IMAGE_SYM_CLASS_STATIC - : COFF::IMAGE_SYM_CLASS_EXTERNAL); + OutStreamer->EmitCOFFSymbolStorageClass( + Local ? COFF::IMAGE_SYM_CLASS_STATIC : COFF::IMAGE_SYM_CLASS_EXTERNAL); OutStreamer->EmitCOFFSymbolType(COFF::IMAGE_SYM_DTYPE_FUNCTION << COFF::SCT_COMPLEX_TYPE_SHIFT); OutStreamer->EndCOFFSymbolDef(); diff --git a/llvm/test/CodeGen/ARM/Windows/long-calls.ll b/llvm/test/CodeGen/ARM/Windows/long-calls.ll index 29e6f783ae5..f56701df76c 100644 --- a/llvm/test/CodeGen/ARM/Windows/long-calls.ll +++ b/llvm/test/CodeGen/ARM/Windows/long-calls.ll @@ -10,7 +10,7 @@ entry: } ; CHECK-LABEL: caller -; CHECK: ldr [[REG:r[0-9]+]], [[CPI:LCPI[_0-9]+]] +; CHECK: ldr [[REG:r[0-9]+]], [[CPI:\.LCPI[_0-9]+]] ; CHECK: bx [[REG]] ; CHECK: .p2align 2 ; CHECK: [[CPI]]: diff --git a/llvm/test/CodeGen/ARM/Windows/tls.ll b/llvm/test/CodeGen/ARM/Windows/tls.ll index 689f4e29187..947e29dfa65 100644 --- a/llvm/test/CodeGen/ARM/Windows/tls.ll +++ b/llvm/test/CodeGen/ARM/Windows/tls.ll @@ -22,7 +22,7 @@ define i32 @f() { ; CHECK: ldr [[TLS_POINTER:r[0-9]]], {{\[}}[[TEB]], #44] ; CHECK-NEXT: ldr{{.w}} [[TLS:r[0-9]]], {{\[}}[[TLS_POINTER]], [[INDEX]], lsl #2] -; CHECK-NEXT: ldr [[SLOT:r[0-9]]], [[CPI:LCPI[0-9]+_[0-9]+]] +; CHECK-NEXT: ldr [[SLOT:r[0-9]]], [[CPI:\.LCPI[0-9]+_[0-9]+]] ; CHECK-NEXT: ldr r0, {{\[}}[[TLS]], [[SLOT]]] @@ -43,7 +43,7 @@ define i32 @e() { ; CHECK: ldr [[TLS_POINTER:r[0-9]]], {{\[}}[[TEB]], #44] ; CHECK-NEXT: ldr{{.w}} [[TLS:r[0-9]]], {{\[}}[[TLS_POINTER]], [[INDEX]], lsl #2] -; CHECK-NEXT: ldr [[SLOT:r[0-9]]], [[CPI:LCPI[0-9]+_[0-9]+]] +; CHECK-NEXT: ldr [[SLOT:r[0-9]]], [[CPI:\.LCPI[0-9]+_[0-9]+]] ; CHECK-NEXT: ldr r0, {{\[}}[[TLS]], [[SLOT]]] @@ -64,7 +64,7 @@ define i32 @d() { ; CHECK: ldr [[TLS_POINTER:r[0-9]]], {{\[}}[[TEB]], #44] ; CHECK-NEXT: ldr{{.w}} [[TLS:r[0-9]]], {{\[}}[[TLS_POINTER]], [[INDEX]], lsl #2] -; CHECK-NEXT: ldr [[SLOT:r[0-9]]], [[CPI:LCPI[0-9]+_[0-9]+]] +; CHECK-NEXT: ldr [[SLOT:r[0-9]]], [[CPI:\.LCPI[0-9]+_[0-9]+]] ; CHECK-NEXT: ldr r0, {{\[}}[[TLS]], [[SLOT]]] @@ -85,7 +85,7 @@ define i32 @c() { ; CHECK: ldr [[TLS_POINTER:r[0-9]]], {{\[}}[[TEB]], #44] ; CHECK-NEXT: ldr{{.w}} [[TLS:r[0-9]]], {{\[}}[[TLS_POINTER]], [[INDEX]], lsl #2] -; CHECK-NEXT: ldr [[SLOT:r[0-9]]], [[CPI:LCPI[0-9]+_[0-9]+]] +; CHECK-NEXT: ldr [[SLOT:r[0-9]]], [[CPI:\.LCPI[0-9]+_[0-9]+]] ; CHECK-NEXT: ldr r0, {{\[}}[[TLS]], [[SLOT]]] @@ -106,7 +106,7 @@ define i32 @b() { ; CHECK: ldr [[TLS_POINTER:r[0-9]]], {{\[}}[[TEB]], #44] ; CHECK-NEXT: ldr{{.w}} [[TLS:r[0-9]]], {{\[}}[[TLS_POINTER]], [[INDEX]], lsl #2] -; CHECK-NEXT: ldr [[SLOT:r[0-9]]], [[CPI:LCPI[0-9]+_[0-9]+]] +; CHECK-NEXT: ldr [[SLOT:r[0-9]]], [[CPI:\.LCPI[0-9]+_[0-9]+]] ; CHECK-NEXT: ldr r0, {{\[}}[[TLS]], [[SLOT]]] @@ -127,7 +127,7 @@ define i16 @a() { ; CHECK: ldr [[TLS_POINTER:r[0-9]]], {{\[}}[[TEB]], #44] ; CHECK-NEXT: ldr{{.w}} [[TLS:r[0-9]]], {{\[}}[[TLS_POINTER]], [[INDEX]], lsl #2] -; CHECK-NEXT: ldr [[SLOT:r[0-9]]], [[CPI:LCPI[0-9]+_[0-9]+]] +; CHECK-NEXT: ldr [[SLOT:r[0-9]]], [[CPI:\.LCPI[0-9]+_[0-9]+]] ; CHECK-NEXT: ldrh r0, {{\[}}[[TLS]], [[SLOT]]] @@ -148,7 +148,7 @@ define i8 @Z() { ; CHECK: ldr [[TLS_POINTER:r[0-9]]], {{\[}}[[TEB]], #44] ; CHECK-NEXT: ldr{{.w}} [[TLS:r[0-9]]], {{\[}}[[TLS_POINTER]], [[INDEX]], lsl #2] -; CHECK-NEXT: ldr [[SLOT:r[0-9]]], [[CPI:LCPI[0-9]+_[0-9]+]] +; CHECK-NEXT: ldr [[SLOT:r[0-9]]], [[CPI:\.LCPI[0-9]+_[0-9]+]] ; CHECK-NEXT: ldrb r0, {{\[}}[[TLS]], [[SLOT]]] diff --git a/llvm/test/CodeGen/X86/fastcall-correct-mangling.ll b/llvm/test/CodeGen/X86/fastcall-correct-mangling.ll index bc53fe8aa4e..00dc44e75e8 100644 --- a/llvm/test/CodeGen/X86/fastcall-correct-mangling.ll +++ b/llvm/test/CodeGen/X86/fastcall-correct-mangling.ll @@ -28,6 +28,6 @@ entry: define private x86_fastcallcc void @dontCrash() { ; The name is fairly arbitrary since it is private. Just don't crash. ; CHECK32-LABEL: {{^}}L@dontCrash@0: -; CHECK64-LABEL: {{^}}LdontCrash: +; CHECK64-LABEL: {{^}}.LdontCrash: ret void } |

