Skip to content

Commit a084c03

Browse files
committed
[TargetMachine] Don't imply dso_local on function declarations in Reloc::Static model for ELF/wasm
clang/lib/CodeGen/CodeGenModule sets dso_local on applicable function declarations, we don't need to duplicate the work in TargetMachine:shouldAssumeDSOLocal. (Actually the long-term goal (started by r324535) is to drop TargetMachine::shouldAssumeDSOLocal.) By not implying dso_local, we will respect dso_local/dso_preemptable specifiers set by the frontend. This allows the proposed -fno-direct-access-external-data option to work with -fno-pic and prevent a canonical PLT entry (SHN_UNDEF with non-zero st_value) when taking the address of a function symbol. This patch should be NFC in terms of the Clang emitted assembly because the case we don't set dso_local is a case Clang sets dso_local. However, some tests don't set dso_local on some function declarations and expose some differences. Most tests have been fixed to be more robust in the previous commit.
1 parent 6b6c3aa commit a084c03

19 files changed

+111
-111
lines changed

llvm/lib/Target/TargetMachine.cpp

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -101,10 +101,9 @@ bool TargetMachine::shouldAssumeDSOLocal(const Module &M,
101101
// dso_preemptable. At this point in time, the various IR producers
102102
// have not been transitioned to always produce a dso_local when it
103103
// is possible to do so.
104-
// In the case of ExternalSymbolSDNode, GV is null and there is nowhere to put
105-
// dso_local. Returning false for those will produce worse code in some
106-
// architectures. For example, on x86 the caller has to set ebx before calling
107-
// a plt.
104+
// In the case of ExternalSymbolSDNode, GV is null and we should just return
105+
// false. However, COFF currently relies on this to be true
106+
//
108107
// As a result we still have some logic in here to improve the quality of the
109108
// generated code.
110109
// FIXME: Add a module level metadata for whether intrinsics should be assumed
@@ -191,12 +190,8 @@ bool TargetMachine::shouldAssumeDSOLocal(const Module &M,
191190
// drop the if block entirely and respect dso_local/dso_preemptable
192191
// specifiers set by the frontend.
193192
if (RM == Reloc::Static) {
194-
// We currently respect dso_local/dso_preemptable specifiers for
195-
// variables.
196-
if (F)
197-
return true;
198193
// TODO Remove the special case for x86-32.
199-
if (Arch == Triple::x86 && !GV->isThreadLocal())
194+
if (Arch == Triple::x86 && !F && !GV->isThreadLocal())
200195
return true;
201196
}
202197
} else if (TT.isOSBinFormatELF()) {

llvm/lib/Target/X86/X86Subtarget.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,10 @@ unsigned char X86Subtarget::classifyGlobalReference(const GlobalValue *GV,
166166
return X86II::MO_DARWIN_NONLAZY_PIC_BASE;
167167
}
168168

169+
// 32-bit ELF references GlobalAddress directly in static relocation model.
170+
// We cannot use MO_GOT because EBX may not be set up.
171+
if (TM.getRelocationModel() == Reloc::Static)
172+
return X86II::MO_NO_FLAG;
169173
return X86II::MO_GOT;
170174
}
171175

llvm/test/CodeGen/AArch64/tiny_model.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -370,12 +370,12 @@ declare void @func(...)
370370
define i8* @externfuncaddr() {
371371
; CHECK-LABEL: externfuncaddr:
372372
; CHECK: // %bb.0: // %entry
373-
; CHECK-NEXT: adr x0, func
373+
; CHECK-NEXT: ldr x0, :got:func
374374
; CHECK-NEXT: ret
375375
;
376376
; CHECK-GLOBISEL-LABEL: externfuncaddr:
377377
; CHECK-GLOBISEL: // %bb.0: // %entry
378-
; CHECK-GLOBISEL-NEXT: adr x0, func
378+
; CHECK-GLOBISEL-NEXT: ldr x0, :got:func
379379
; CHECK-GLOBISEL-NEXT: ret
380380
;
381381
; CHECK-PIC-LABEL: externfuncaddr:

llvm/test/CodeGen/ARM/fast-isel-call.ll

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,9 @@ entry:
109109
; ARM-LONG-MACHO: {{(movt [[R1]], :upper16:L_bar\$non_lazy_ptr)?}}
110110
; ARM-LONG-MACHO: ldr [[R:r[0-9]+]], {{\[}}[[R1]]]
111111

112-
; ARM-LONG-ELF: movw [[R:l?r[0-9]*]], :lower16:bar
113-
; ARM-LONG-ELF: {{(movt [[R]], :upper16:L_bar\$non_lazy_ptr)?}}
112+
; ARM-LONG-ELF: movw [[R1:r[0-9]*]], :lower16:bar
113+
; ARM-LONG-ELF: movt [[R1]], :upper16:bar
114+
; ARM-LONG-ELF: ldr [[R:r[0-9]+]], {{\[}}[[R1]]]
114115

115116
; ARM-LONG: blx [[R]]
116117
; THUMB: @t10

llvm/test/CodeGen/RISCV/mir-target-flags.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ define i32 @caller(i32 %a) nounwind {
3535
; RV32-SMALL: target-flags(riscv-tprel-hi) @t_le
3636
; RV32-SMALL-NEXT: target-flags(riscv-tprel-add) @t_le
3737
; RV32-SMALL-NEXT: target-flags(riscv-tprel-lo) @t_le
38-
; RV32-SMALL: target-flags(riscv-call) @callee
38+
; RV32-SMALL: target-flags(riscv-plt) @callee
3939
;
4040
; RV32-MED-LABEL: name: caller
4141
; RV32-MED: target-flags(riscv-got-hi) @g_e

llvm/test/CodeGen/X86/abi-isel.ll

Lines changed: 35 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -10676,26 +10676,26 @@ define void @lcallee() nounwind {
1067610676
; LINUX-64-STATIC-LABEL: lcallee:
1067710677
; LINUX-64-STATIC: # %bb.0: # %entry
1067810678
; LINUX-64-STATIC-NEXT: pushq %rax
10679-
; LINUX-64-STATIC-NEXT: callq x
10680-
; LINUX-64-STATIC-NEXT: callq x
10681-
; LINUX-64-STATIC-NEXT: callq x
10682-
; LINUX-64-STATIC-NEXT: callq x
10683-
; LINUX-64-STATIC-NEXT: callq x
10684-
; LINUX-64-STATIC-NEXT: callq x
10685-
; LINUX-64-STATIC-NEXT: callq x
10679+
; LINUX-64-STATIC-NEXT: callq x@PLT
10680+
; LINUX-64-STATIC-NEXT: callq x@PLT
10681+
; LINUX-64-STATIC-NEXT: callq x@PLT
10682+
; LINUX-64-STATIC-NEXT: callq x@PLT
10683+
; LINUX-64-STATIC-NEXT: callq x@PLT
10684+
; LINUX-64-STATIC-NEXT: callq x@PLT
10685+
; LINUX-64-STATIC-NEXT: callq x@PLT
1068610686
; LINUX-64-STATIC-NEXT: popq %rax
1068710687
; LINUX-64-STATIC-NEXT: retq
1068810688
;
1068910689
; LINUX-32-STATIC-LABEL: lcallee:
1069010690
; LINUX-32-STATIC: # %bb.0: # %entry
1069110691
; LINUX-32-STATIC-NEXT: subl $12, %esp
10692-
; LINUX-32-STATIC-NEXT: calll x
10693-
; LINUX-32-STATIC-NEXT: calll x
10694-
; LINUX-32-STATIC-NEXT: calll x
10695-
; LINUX-32-STATIC-NEXT: calll x
10696-
; LINUX-32-STATIC-NEXT: calll x
10697-
; LINUX-32-STATIC-NEXT: calll x
10698-
; LINUX-32-STATIC-NEXT: calll x
10692+
; LINUX-32-STATIC-NEXT: calll x@PLT
10693+
; LINUX-32-STATIC-NEXT: calll x@PLT
10694+
; LINUX-32-STATIC-NEXT: calll x@PLT
10695+
; LINUX-32-STATIC-NEXT: calll x@PLT
10696+
; LINUX-32-STATIC-NEXT: calll x@PLT
10697+
; LINUX-32-STATIC-NEXT: calll x@PLT
10698+
; LINUX-32-STATIC-NEXT: calll x@PLT
1069910699
; LINUX-32-STATIC-NEXT: addl $12, %esp
1070010700
; LINUX-32-STATIC-NEXT: retl
1070110701
;
@@ -10827,26 +10827,26 @@ define internal void @dcallee() nounwind {
1082710827
; LINUX-64-STATIC-LABEL: dcallee:
1082810828
; LINUX-64-STATIC: # %bb.0: # %entry
1082910829
; LINUX-64-STATIC-NEXT: pushq %rax
10830-
; LINUX-64-STATIC-NEXT: callq y
10831-
; LINUX-64-STATIC-NEXT: callq y
10832-
; LINUX-64-STATIC-NEXT: callq y
10833-
; LINUX-64-STATIC-NEXT: callq y
10834-
; LINUX-64-STATIC-NEXT: callq y
10835-
; LINUX-64-STATIC-NEXT: callq y
10836-
; LINUX-64-STATIC-NEXT: callq y
10830+
; LINUX-64-STATIC-NEXT: callq y@PLT
10831+
; LINUX-64-STATIC-NEXT: callq y@PLT
10832+
; LINUX-64-STATIC-NEXT: callq y@PLT
10833+
; LINUX-64-STATIC-NEXT: callq y@PLT
10834+
; LINUX-64-STATIC-NEXT: callq y@PLT
10835+
; LINUX-64-STATIC-NEXT: callq y@PLT
10836+
; LINUX-64-STATIC-NEXT: callq y@PLT
1083710837
; LINUX-64-STATIC-NEXT: popq %rax
1083810838
; LINUX-64-STATIC-NEXT: retq
1083910839
;
1084010840
; LINUX-32-STATIC-LABEL: dcallee:
1084110841
; LINUX-32-STATIC: # %bb.0: # %entry
1084210842
; LINUX-32-STATIC-NEXT: subl $12, %esp
10843-
; LINUX-32-STATIC-NEXT: calll y
10844-
; LINUX-32-STATIC-NEXT: calll y
10845-
; LINUX-32-STATIC-NEXT: calll y
10846-
; LINUX-32-STATIC-NEXT: calll y
10847-
; LINUX-32-STATIC-NEXT: calll y
10848-
; LINUX-32-STATIC-NEXT: calll y
10849-
; LINUX-32-STATIC-NEXT: calll y
10843+
; LINUX-32-STATIC-NEXT: calll y@PLT
10844+
; LINUX-32-STATIC-NEXT: calll y@PLT
10845+
; LINUX-32-STATIC-NEXT: calll y@PLT
10846+
; LINUX-32-STATIC-NEXT: calll y@PLT
10847+
; LINUX-32-STATIC-NEXT: calll y@PLT
10848+
; LINUX-32-STATIC-NEXT: calll y@PLT
10849+
; LINUX-32-STATIC-NEXT: calll y@PLT
1085010850
; LINUX-32-STATIC-NEXT: addl $12, %esp
1085110851
; LINUX-32-STATIC-NEXT: retl
1085210852
;
@@ -10977,7 +10977,7 @@ declare void @y()
1097710977
define void ()* @address() nounwind {
1097810978
; LINUX-64-STATIC-LABEL: address:
1097910979
; LINUX-64-STATIC: # %bb.0: # %entry
10980-
; LINUX-64-STATIC-NEXT: movl $callee, %eax
10980+
; LINUX-64-STATIC-NEXT: movq callee@{{.*}}(%rip), %rax
1098110981
; LINUX-64-STATIC-NEXT: retq
1098210982
;
1098310983
; LINUX-32-STATIC-LABEL: address:
@@ -11169,16 +11169,16 @@ define void @caller() nounwind {
1116911169
; LINUX-64-STATIC-LABEL: caller:
1117011170
; LINUX-64-STATIC: # %bb.0: # %entry
1117111171
; LINUX-64-STATIC-NEXT: pushq %rax
11172-
; LINUX-64-STATIC-NEXT: callq callee
11173-
; LINUX-64-STATIC-NEXT: callq callee
11172+
; LINUX-64-STATIC-NEXT: callq callee@PLT
11173+
; LINUX-64-STATIC-NEXT: callq callee@PLT
1117411174
; LINUX-64-STATIC-NEXT: popq %rax
1117511175
; LINUX-64-STATIC-NEXT: retq
1117611176
;
1117711177
; LINUX-32-STATIC-LABEL: caller:
1117811178
; LINUX-32-STATIC: # %bb.0: # %entry
1117911179
; LINUX-32-STATIC-NEXT: subl $12, %esp
11180-
; LINUX-32-STATIC-NEXT: calll callee
11181-
; LINUX-32-STATIC-NEXT: calll callee
11180+
; LINUX-32-STATIC-NEXT: calll callee@PLT
11181+
; LINUX-32-STATIC-NEXT: calll callee@PLT
1118211182
; LINUX-32-STATIC-NEXT: addl $12, %esp
1118311183
; LINUX-32-STATIC-NEXT: retl
1118411184
;
@@ -11451,14 +11451,14 @@ define void @tailcaller() nounwind {
1145111451
; LINUX-64-STATIC-LABEL: tailcaller:
1145211452
; LINUX-64-STATIC: # %bb.0: # %entry
1145311453
; LINUX-64-STATIC-NEXT: pushq %rax
11454-
; LINUX-64-STATIC-NEXT: callq callee
11454+
; LINUX-64-STATIC-NEXT: callq callee@PLT
1145511455
; LINUX-64-STATIC-NEXT: popq %rax
1145611456
; LINUX-64-STATIC-NEXT: retq
1145711457
;
1145811458
; LINUX-32-STATIC-LABEL: tailcaller:
1145911459
; LINUX-32-STATIC: # %bb.0: # %entry
1146011460
; LINUX-32-STATIC-NEXT: subl $12, %esp
11461-
; LINUX-32-STATIC-NEXT: calll callee
11461+
; LINUX-32-STATIC-NEXT: calll callee@PLT
1146211462
; LINUX-32-STATIC-NEXT: addl $12, %esp
1146311463
; LINUX-32-STATIC-NEXT: retl
1146411464
;

llvm/test/CodeGen/X86/absolute-cmp.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ define void @foo8(i64 %val) {
2020
; NOPIC-NEXT: # %bb.1: # %t
2121
; NOPIC-NEXT: pushq %rax # encoding: [0x50]
2222
; NOPIC-NEXT: .cfi_def_cfa_offset 16
23-
; NOPIC-NEXT: callq f # encoding: [0xe8,A,A,A,A]
24-
; NOPIC-NEXT: # fixup A - offset: 1, value: f-4, kind: reloc_branch_4byte_pcrel
23+
; NOPIC-NEXT: callq f@PLT # encoding: [0xe8,A,A,A,A]
24+
; NOPIC-NEXT: # fixup A - offset: 1, value: f@PLT-4, kind: FK_PCRel_4
2525
; NOPIC-NEXT: popq %rax # encoding: [0x58]
2626
; NOPIC-NEXT: .cfi_def_cfa_offset 8
2727
; NOPIC-NEXT: .LBB0_2: # %f
@@ -63,8 +63,8 @@ define void @foo32(i64 %val) {
6363
; NOPIC-NEXT: # %bb.1: # %t
6464
; NOPIC-NEXT: pushq %rax # encoding: [0x50]
6565
; NOPIC-NEXT: .cfi_def_cfa_offset 16
66-
; NOPIC-NEXT: callq f # encoding: [0xe8,A,A,A,A]
67-
; NOPIC-NEXT: # fixup A - offset: 1, value: f-4, kind: reloc_branch_4byte_pcrel
66+
; NOPIC-NEXT: callq f@PLT # encoding: [0xe8,A,A,A,A]
67+
; NOPIC-NEXT: # fixup A - offset: 1, value: f@PLT-4, kind: FK_PCRel_4
6868
; NOPIC-NEXT: popq %rax # encoding: [0x58]
6969
; NOPIC-NEXT: .cfi_def_cfa_offset 8
7070
; NOPIC-NEXT: .LBB1_2: # %f

llvm/test/CodeGen/X86/absolute-constant.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ define void @bar(i8* %x) {
1414
; CHECK-NEXT: je .LBB0_1
1515
; CHECK-NEXT: # %bb.2: # %if.then
1616
; CHECK-NEXT: xorl %eax, %eax
17-
; CHECK-NEXT: jmp xf # TAILCALL
17+
; CHECK-NEXT: jmp xf@PLT # TAILCALL
1818
; CHECK-NEXT: .LBB0_1: # %if.end
1919
; CHECK-NEXT: retq
2020
;

llvm/test/CodeGen/X86/code-model-elf.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -341,12 +341,12 @@ define dso_local void ()* @lea_global_fn() #0 {
341341
define dso_local void ()* @lea_extern_fn() #0 {
342342
; SMALL-STATIC-LABEL: lea_extern_fn:
343343
; SMALL-STATIC: # %bb.0:
344-
; SMALL-STATIC-NEXT: movl $extern_fn, %eax
344+
; SMALL-STATIC-NEXT: movq extern_fn@{{.*}}(%rip), %rax
345345
; SMALL-STATIC-NEXT: retq
346346
;
347347
; MEDIUM-STATIC-LABEL: lea_extern_fn:
348348
; MEDIUM-STATIC: # %bb.0:
349-
; MEDIUM-STATIC-NEXT: movabsq $extern_fn, %rax
349+
; MEDIUM-STATIC-NEXT: movq extern_fn@{{.*}}(%rip), %rax
350350
; MEDIUM-STATIC-NEXT: retq
351351
;
352352
; LARGE-STATIC-LABEL: lea_extern_fn:

llvm/test/CodeGen/X86/conditional-tailcall-pgso.ll

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -11,24 +11,24 @@ define void @f(i32 %x, i32 %y) !prof !14 {
1111
; CHECK32: # %bb.0: # %entry
1212
; CHECK32-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]
1313
; CHECK32-NEXT: cmpl {{[0-9]+}}(%esp), %eax # encoding: [0x3b,0x44,0x24,0x08]
14-
; CHECK32-NEXT: jne bar # TAILCALL
14+
; CHECK32-NEXT: jne bar@PLT # TAILCALL
1515
; CHECK32-NEXT: # encoding: [0x75,A]
16-
; CHECK32-NEXT: # fixup A - offset: 1, value: bar-1, kind: FK_PCRel_1
16+
; CHECK32-NEXT: # fixup A - offset: 1, value: bar@PLT-1, kind: FK_PCRel_1
1717
; CHECK32-NEXT: # %bb.1: # %bb1
18-
; CHECK32-NEXT: jmp foo # TAILCALL
18+
; CHECK32-NEXT: jmp foo@PLT # TAILCALL
1919
; CHECK32-NEXT: # encoding: [0xeb,A]
20-
; CHECK32-NEXT: # fixup A - offset: 1, value: foo-1, kind: FK_PCRel_1
20+
; CHECK32-NEXT: # fixup A - offset: 1, value: foo@PLT-1, kind: FK_PCRel_1
2121
;
2222
; CHECK64-LABEL: f:
2323
; CHECK64: # %bb.0: # %entry
2424
; CHECK64-NEXT: cmpl %esi, %edi # encoding: [0x39,0xf7]
25-
; CHECK64-NEXT: jne bar # TAILCALL
25+
; CHECK64-NEXT: jne bar@PLT # TAILCALL
2626
; CHECK64-NEXT: # encoding: [0x75,A]
27-
; CHECK64-NEXT: # fixup A - offset: 1, value: bar-1, kind: FK_PCRel_1
27+
; CHECK64-NEXT: # fixup A - offset: 1, value: bar@PLT-1, kind: FK_PCRel_1
2828
; CHECK64-NEXT: # %bb.1: # %bb1
29-
; CHECK64-NEXT: jmp foo # TAILCALL
29+
; CHECK64-NEXT: jmp foo@PLT # TAILCALL
3030
; CHECK64-NEXT: # encoding: [0xeb,A]
31-
; CHECK64-NEXT: # fixup A - offset: 1, value: foo-1, kind: FK_PCRel_1
31+
; CHECK64-NEXT: # fixup A - offset: 1, value: foo@PLT-1, kind: FK_PCRel_1
3232
;
3333
; WIN64-LABEL: f:
3434
; WIN64: # %bb.0: # %entry
@@ -68,16 +68,16 @@ define void @f_non_leaf(i32 %x, i32 %y) !prof !14 {
6868
; CHECK32-NEXT: # %bb.1: # %bb1
6969
; CHECK32-NEXT: popl %ebx # encoding: [0x5b]
7070
; CHECK32-NEXT: .cfi_def_cfa_offset 4
71-
; CHECK32-NEXT: jmp foo # TAILCALL
71+
; CHECK32-NEXT: jmp foo@PLT # TAILCALL
7272
; CHECK32-NEXT: # encoding: [0xeb,A]
73-
; CHECK32-NEXT: # fixup A - offset: 1, value: foo-1, kind: FK_PCRel_1
73+
; CHECK32-NEXT: # fixup A - offset: 1, value: foo@PLT-1, kind: FK_PCRel_1
7474
; CHECK32-NEXT: .LBB1_2: # %bb2
7575
; CHECK32-NEXT: .cfi_def_cfa_offset 8
7676
; CHECK32-NEXT: popl %ebx # encoding: [0x5b]
7777
; CHECK32-NEXT: .cfi_def_cfa_offset 4
78-
; CHECK32-NEXT: jmp bar # TAILCALL
78+
; CHECK32-NEXT: jmp bar@PLT # TAILCALL
7979
; CHECK32-NEXT: # encoding: [0xeb,A]
80-
; CHECK32-NEXT: # fixup A - offset: 1, value: bar-1, kind: FK_PCRel_1
80+
; CHECK32-NEXT: # fixup A - offset: 1, value: bar@PLT-1, kind: FK_PCRel_1
8181
;
8282
; CHECK64-LABEL: f_non_leaf:
8383
; CHECK64: # %bb.0: # %entry
@@ -92,16 +92,16 @@ define void @f_non_leaf(i32 %x, i32 %y) !prof !14 {
9292
; CHECK64-NEXT: # %bb.1: # %bb1
9393
; CHECK64-NEXT: popq %rbx # encoding: [0x5b]
9494
; CHECK64-NEXT: .cfi_def_cfa_offset 8
95-
; CHECK64-NEXT: jmp foo # TAILCALL
95+
; CHECK64-NEXT: jmp foo@PLT # TAILCALL
9696
; CHECK64-NEXT: # encoding: [0xeb,A]
97-
; CHECK64-NEXT: # fixup A - offset: 1, value: foo-1, kind: FK_PCRel_1
97+
; CHECK64-NEXT: # fixup A - offset: 1, value: foo@PLT-1, kind: FK_PCRel_1
9898
; CHECK64-NEXT: .LBB1_2: # %bb2
9999
; CHECK64-NEXT: .cfi_def_cfa_offset 16
100100
; CHECK64-NEXT: popq %rbx # encoding: [0x5b]
101101
; CHECK64-NEXT: .cfi_def_cfa_offset 8
102-
; CHECK64-NEXT: jmp bar # TAILCALL
102+
; CHECK64-NEXT: jmp bar@PLT # TAILCALL
103103
; CHECK64-NEXT: # encoding: [0xeb,A]
104-
; CHECK64-NEXT: # fixup A - offset: 1, value: bar-1, kind: FK_PCRel_1
104+
; CHECK64-NEXT: # fixup A - offset: 1, value: bar@PLT-1, kind: FK_PCRel_1
105105
;
106106
; WIN64-LABEL: f_non_leaf:
107107
; WIN64: # %bb.0: # %entry
@@ -152,9 +152,9 @@ define x86_thiscallcc zeroext i1 @BlockPlacementTest(i8* %this, i32 %x) !prof !1
152152
; CHECK32-NEXT: # %bb.1: # %land.rhs
153153
; CHECK32-NEXT: movb $1, %al # encoding: [0xb0,0x01]
154154
; CHECK32-NEXT: testb $44, %dl # encoding: [0xf6,0xc2,0x2c]
155-
; CHECK32-NEXT: je baz # TAILCALL
155+
; CHECK32-NEXT: je baz@PLT # TAILCALL
156156
; CHECK32-NEXT: # encoding: [0x74,A]
157-
; CHECK32-NEXT: # fixup A - offset: 1, value: baz-1, kind: FK_PCRel_1
157+
; CHECK32-NEXT: # fixup A - offset: 1, value: baz@PLT-1, kind: FK_PCRel_1
158158
; CHECK32-NEXT: .LBB2_2: # %land.end
159159
; CHECK32-NEXT: # kill: def $al killed $al killed $eax
160160
; CHECK32-NEXT: retl $4 # encoding: [0xc2,0x04,0x00]
@@ -171,9 +171,9 @@ define x86_thiscallcc zeroext i1 @BlockPlacementTest(i8* %this, i32 %x) !prof !1
171171
; CHECK64-NEXT: # %bb.1: # %land.rhs
172172
; CHECK64-NEXT: movb $1, %al # encoding: [0xb0,0x01]
173173
; CHECK64-NEXT: testb $44, %sil # encoding: [0x40,0xf6,0xc6,0x2c]
174-
; CHECK64-NEXT: je baz # TAILCALL
174+
; CHECK64-NEXT: je baz@PLT # TAILCALL
175175
; CHECK64-NEXT: # encoding: [0x74,A]
176-
; CHECK64-NEXT: # fixup A - offset: 1, value: baz-1, kind: FK_PCRel_1
176+
; CHECK64-NEXT: # fixup A - offset: 1, value: baz@PLT-1, kind: FK_PCRel_1
177177
; CHECK64-NEXT: .LBB2_2: # %land.end
178178
; CHECK64-NEXT: # kill: def $al killed $al killed $eax
179179
; CHECK64-NEXT: retq # encoding: [0xc3]

0 commit comments

Comments
 (0)