mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-19 16:35:10 +00:00
Change '@SECREL' suffix to GAS-compatible '@SECREL32'.
'@SECREL' is what is used by the Microsoft assembler, but GNU as expects '@SECREL32'. With the patch, the MC-generated code works fine in combination with a recent GNU as (2.23.51.20120920 here). Patch by David Nadlinger! Differential Revision: http://llvm-reviews.chandlerc.com/D429 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178427 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
6ef362a6de
commit
42734cfb41
@ -194,7 +194,7 @@ StringRef MCSymbolRefExpr::getVariantKindName(VariantKind Kind) {
|
||||
case VK_TPOFF: return "TPOFF";
|
||||
case VK_DTPOFF: return "DTPOFF";
|
||||
case VK_TLVP: return "TLVP";
|
||||
case VK_SECREL: return "SECREL";
|
||||
case VK_SECREL: return "SECREL32";
|
||||
case VK_ARM_NONE: return "(NONE)";
|
||||
case VK_ARM_PLT: return "(PLT)";
|
||||
case VK_ARM_GOT: return "(GOT)";
|
||||
|
@ -201,7 +201,7 @@ void X86AsmPrinter::printSymbolOperand(const MachineOperand &MO,
|
||||
case X86II::MO_TLVP_PIC_BASE:
|
||||
O << "@TLVP" << '-' << *MF->getPICBaseSymbol();
|
||||
break;
|
||||
case X86II::MO_SECREL: O << "@SECREL"; break;
|
||||
case X86II::MO_SECREL: O << "@SECREL32"; break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -22,13 +22,13 @@ define i32 @f1() {
|
||||
; X32_WIN: movl __tls_index, %eax
|
||||
; X32_WIN-NEXT: movl %fs:__tls_array, %ecx
|
||||
; X32_WIN-NEXT: movl (%ecx,%eax,4), %eax
|
||||
; X32_WIN-NEXT: movl _i1@SECREL(%eax), %eax
|
||||
; X32_WIN-NEXT: movl _i1@SECREL32(%eax), %eax
|
||||
; X32_WIN-NEXT: ret
|
||||
; X64_WIN: f1:
|
||||
; X64_WIN: movl _tls_index(%rip), %eax
|
||||
; X64_WIN-NEXT: movq %gs:88, %rcx
|
||||
; X64_WIN-NEXT: movq (%rcx,%rax,8), %rax
|
||||
; X64_WIN-NEXT: movl i1@SECREL(%rax), %eax
|
||||
; X64_WIN-NEXT: movl i1@SECREL32(%rax), %eax
|
||||
; X64_WIN-NEXT: ret
|
||||
|
||||
entry:
|
||||
@ -49,13 +49,13 @@ define i32* @f2() {
|
||||
; X32_WIN: movl __tls_index, %eax
|
||||
; X32_WIN-NEXT: movl %fs:__tls_array, %ecx
|
||||
; X32_WIN-NEXT: movl (%ecx,%eax,4), %eax
|
||||
; X32_WIN-NEXT: leal _i1@SECREL(%eax), %eax
|
||||
; X32_WIN-NEXT: leal _i1@SECREL32(%eax), %eax
|
||||
; X32_WIN-NEXT: ret
|
||||
; X64_WIN: f2:
|
||||
; X64_WIN: movl _tls_index(%rip), %eax
|
||||
; X64_WIN-NEXT: movq %gs:88, %rcx
|
||||
; X64_WIN-NEXT: movq (%rcx,%rax,8), %rax
|
||||
; X64_WIN-NEXT: leaq i1@SECREL(%rax), %rax
|
||||
; X64_WIN-NEXT: leaq i1@SECREL32(%rax), %rax
|
||||
; X64_WIN-NEXT: ret
|
||||
|
||||
entry:
|
||||
@ -75,13 +75,13 @@ define i32 @f3() nounwind {
|
||||
; X32_WIN: movl __tls_index, %eax
|
||||
; X32_WIN-NEXT: movl %fs:__tls_array, %ecx
|
||||
; X32_WIN-NEXT: movl (%ecx,%eax,4), %eax
|
||||
; X32_WIN-NEXT: movl _i2@SECREL(%eax), %eax
|
||||
; X32_WIN-NEXT: movl _i2@SECREL32(%eax), %eax
|
||||
; X32_WIN-NEXT: ret
|
||||
; X64_WIN: f3:
|
||||
; X64_WIN: movl _tls_index(%rip), %eax
|
||||
; X64_WIN-NEXT: movq %gs:88, %rcx
|
||||
; X64_WIN-NEXT: movq (%rcx,%rax,8), %rax
|
||||
; X64_WIN-NEXT: movl i2@SECREL(%rax), %eax
|
||||
; X64_WIN-NEXT: movl i2@SECREL32(%rax), %eax
|
||||
; X64_WIN-NEXT: ret
|
||||
|
||||
entry:
|
||||
@ -102,13 +102,13 @@ define i32* @f4() {
|
||||
; X32_WIN: movl __tls_index, %eax
|
||||
; X32_WIN-NEXT: movl %fs:__tls_array, %ecx
|
||||
; X32_WIN-NEXT: movl (%ecx,%eax,4), %eax
|
||||
; X32_WIN-NEXT: leal _i2@SECREL(%eax), %eax
|
||||
; X32_WIN-NEXT: leal _i2@SECREL32(%eax), %eax
|
||||
; X32_WIN-NEXT: ret
|
||||
; X64_WIN: f4:
|
||||
; X64_WIN: movl _tls_index(%rip), %eax
|
||||
; X64_WIN-NEXT: movq %gs:88, %rcx
|
||||
; X64_WIN-NEXT: movq (%rcx,%rax,8), %rax
|
||||
; X64_WIN-NEXT: leaq i2@SECREL(%rax), %rax
|
||||
; X64_WIN-NEXT: leaq i2@SECREL32(%rax), %rax
|
||||
; X64_WIN-NEXT: ret
|
||||
|
||||
entry:
|
||||
@ -126,13 +126,13 @@ define i32 @f5() nounwind {
|
||||
; X32_WIN: movl __tls_index, %eax
|
||||
; X32_WIN-NEXT: movl %fs:__tls_array, %ecx
|
||||
; X32_WIN-NEXT: movl (%ecx,%eax,4), %eax
|
||||
; X32_WIN-NEXT: movl _i3@SECREL(%eax), %eax
|
||||
; X32_WIN-NEXT: movl _i3@SECREL32(%eax), %eax
|
||||
; X32_WIN-NEXT: ret
|
||||
; X64_WIN: f5:
|
||||
; X64_WIN: movl _tls_index(%rip), %eax
|
||||
; X64_WIN-NEXT: movq %gs:88, %rcx
|
||||
; X64_WIN-NEXT: movq (%rcx,%rax,8), %rax
|
||||
; X64_WIN-NEXT: movl i3@SECREL(%rax), %eax
|
||||
; X64_WIN-NEXT: movl i3@SECREL32(%rax), %eax
|
||||
; X64_WIN-NEXT: ret
|
||||
|
||||
entry:
|
||||
@ -153,13 +153,13 @@ define i32* @f6() {
|
||||
; X32_WIN: movl __tls_index, %eax
|
||||
; X32_WIN-NEXT: movl %fs:__tls_array, %ecx
|
||||
; X32_WIN-NEXT: movl (%ecx,%eax,4), %eax
|
||||
; X32_WIN-NEXT: leal _i3@SECREL(%eax), %eax
|
||||
; X32_WIN-NEXT: leal _i3@SECREL32(%eax), %eax
|
||||
; X32_WIN-NEXT: ret
|
||||
; X64_WIN: f6:
|
||||
; X64_WIN: movl _tls_index(%rip), %eax
|
||||
; X64_WIN-NEXT: movq %gs:88, %rcx
|
||||
; X64_WIN-NEXT: movq (%rcx,%rax,8), %rax
|
||||
; X64_WIN-NEXT: leaq i3@SECREL(%rax), %rax
|
||||
; X64_WIN-NEXT: leaq i3@SECREL32(%rax), %rax
|
||||
; X64_WIN-NEXT: ret
|
||||
|
||||
entry:
|
||||
@ -234,14 +234,14 @@ define i16 @f11() {
|
||||
; X32_WIN: movl __tls_index, %eax
|
||||
; X32_WIN-NEXT: movl %fs:__tls_array, %ecx
|
||||
; X32_WIN-NEXT: movl (%ecx,%eax,4), %eax
|
||||
; X32_WIN-NEXT: movzwl _s1@SECREL(%eax), %eax
|
||||
; X32_WIN-NEXT: movzwl _s1@SECREL32(%eax), %eax
|
||||
; X32_WIN-NEXT: # kill
|
||||
; X32_WIN-NEXT: ret
|
||||
; X64_WIN: f11:
|
||||
; X64_WIN: movl _tls_index(%rip), %eax
|
||||
; X64_WIN-NEXT: movq %gs:88, %rcx
|
||||
; X64_WIN-NEXT: movq (%rcx,%rax,8), %rax
|
||||
; X64_WIN-NEXT: movzwl s1@SECREL(%rax), %eax
|
||||
; X64_WIN-NEXT: movzwl s1@SECREL32(%rax), %eax
|
||||
; X64_WIN-NEXT: # kill
|
||||
; X64_WIN-NEXT: ret
|
||||
|
||||
@ -261,13 +261,13 @@ define i32 @f12() {
|
||||
; X32_WIN: movl __tls_index, %eax
|
||||
; X32_WIN-NEXT: movl %fs:__tls_array, %ecx
|
||||
; X32_WIN-NEXT: movl (%ecx,%eax,4), %eax
|
||||
; X32_WIN-NEXT: movswl _s1@SECREL(%eax), %eax
|
||||
; X32_WIN-NEXT: movswl _s1@SECREL32(%eax), %eax
|
||||
; X32_WIN-NEXT: ret
|
||||
; X64_WIN: f12:
|
||||
; X64_WIN: movl _tls_index(%rip), %eax
|
||||
; X64_WIN-NEXT: movq %gs:88, %rcx
|
||||
; X64_WIN-NEXT: movq (%rcx,%rax,8), %rax
|
||||
; X64_WIN-NEXT: movswl s1@SECREL(%rax), %eax
|
||||
; X64_WIN-NEXT: movswl s1@SECREL32(%rax), %eax
|
||||
; X64_WIN-NEXT: ret
|
||||
|
||||
entry:
|
||||
@ -287,13 +287,13 @@ define i8 @f13() {
|
||||
; X32_WIN: movl __tls_index, %eax
|
||||
; X32_WIN-NEXT: movl %fs:__tls_array, %ecx
|
||||
; X32_WIN-NEXT: movl (%ecx,%eax,4), %eax
|
||||
; X32_WIN-NEXT: movb _b1@SECREL(%eax), %al
|
||||
; X32_WIN-NEXT: movb _b1@SECREL32(%eax), %al
|
||||
; X32_WIN-NEXT: ret
|
||||
; X64_WIN: f13:
|
||||
; X64_WIN: movl _tls_index(%rip), %eax
|
||||
; X64_WIN-NEXT: movq %gs:88, %rcx
|
||||
; X64_WIN-NEXT: movq (%rcx,%rax,8), %rax
|
||||
; X64_WIN-NEXT: movb b1@SECREL(%rax), %al
|
||||
; X64_WIN-NEXT: movb b1@SECREL32(%rax), %al
|
||||
; X64_WIN-NEXT: ret
|
||||
|
||||
entry:
|
||||
@ -312,13 +312,13 @@ define i32 @f14() {
|
||||
; X32_WIN: movl __tls_index, %eax
|
||||
; X32_WIN-NEXT: movl %fs:__tls_array, %ecx
|
||||
; X32_WIN-NEXT: movl (%ecx,%eax,4), %eax
|
||||
; X32_WIN-NEXT: movsbl _b1@SECREL(%eax), %eax
|
||||
; X32_WIN-NEXT: movsbl _b1@SECREL32(%eax), %eax
|
||||
; X32_WIN-NEXT: ret
|
||||
; X64_WIN: f14:
|
||||
; X64_WIN: movl _tls_index(%rip), %eax
|
||||
; X64_WIN-NEXT: movq %gs:88, %rcx
|
||||
; X64_WIN-NEXT: movq (%rcx,%rax,8), %rax
|
||||
; X64_WIN-NEXT: movsbl b1@SECREL(%rax), %eax
|
||||
; X64_WIN-NEXT: movsbl b1@SECREL32(%rax), %eax
|
||||
; X64_WIN-NEXT: ret
|
||||
|
||||
entry:
|
||||
|
Loading…
x
Reference in New Issue
Block a user