Skip to content

Commit d0096e8

Browse files
committed
Sparc: Improve SETHI and R_SPARC_DISP32 tests
* adjustFixupValue is called even when a R_SPARC_HIX22/R_SPARC_LOX10 relocation is generated. This will be fixed shortly. * Enhanced the %h44 test to show that we don't check overflow. * Test R_SPARC_DISP32 in .gcc_except_table and .eh_frame . The original support did not test -filetype=obj output.
1 parent 721cba4 commit d0096e8

File tree

2 files changed

+46
-11
lines changed

2 files changed

+46
-11
lines changed

llvm/test/CodeGen/SPARC/exception.ll

+24
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
; RUN: llc -simplifycfg-require-and-preserve-domtree=1 < %s -mtriple=sparcv9 -relocation-model=static | FileCheck -check-prefix=V9ABS %s
44
; RUN: llc -simplifycfg-require-and-preserve-domtree=1 < %s -mtriple=sparcv9 -relocation-model=pic | FileCheck -check-prefix=V9PIC %s
55

6+
; RUN: llc -simplifycfg-require-and-preserve-domtree=1 < %s -mtriple=sparcv9 -relocation-model=static -filetype=obj | llvm-readobj -r - | FileCheck -check-prefix=V9ABS-REL %s
7+
; RUN: llc -simplifycfg-require-and-preserve-domtree=1 < %s -mtriple=sparcv9 -relocation-model=pic -filetype=obj | llvm-readobj -r - | FileCheck -check-prefix=V9PIC-REL %s
68

79
%struct.__fundamental_type_info_pseudo = type { %struct.__type_info_pseudo }
810
%struct.__type_info_pseudo = type { ptr, ptr }
@@ -57,6 +59,16 @@
5759
; V9ABS-NOT: .section
5860
; V9ABS: .xword _ZTIi
5961

62+
; V9ABS-REL: .rela.gcc_except_table {
63+
; V9ABS-REL-NEXT: 0x14 R_SPARC_64 _ZTIi 0x0
64+
; V9ABS-REL-NEXT: 0x1C R_SPARC_64 _ZTIf 0x0
65+
; V9ABS-REL-NEXT: }
66+
; V9ABS-REL-NEXT: .rela.eh_frame {
67+
; V9ABS-REL-NEXT: 0x13 R_SPARC_UA64 __gxx_personality_v0 0x0
68+
; V9ABS-REL-NEXT: 0x2C R_SPARC_DISP32 .text 0x0
69+
; V9ABS-REL-NEXT: 0x35 R_SPARC_DISP32 .gcc_except_table 0x0
70+
; V9ABS-REL-NEXT: }
71+
6072
; V9PIC-LABEL: main:
6173
; V9PIC: .cfi_startproc
6274
; V9PIC: .cfi_personality 155, DW.ref.__gxx_personality_v0
@@ -71,6 +83,18 @@
7183
; V9PIC: .L_ZTIi.DW.stub:
7284
; V9PIC-NEXT: .xword _ZTIi
7385

86+
; V9PIC-REL: .rela.gcc_except_table {
87+
; V9PIC-REL-NEXT: 0x14 R_SPARC_DISP32 .data 0x8
88+
; V9PIC-REL-NEXT: 0x18 R_SPARC_DISP32 .data 0x0
89+
; V9PIC-REL-NEXT: }
90+
; V9PIC-REL-NEXT: .rela.data {
91+
; V9PIC-REL: .rela.data.DW.ref.__gxx_personality_v0 {
92+
; V9PIC-REL: .rela.eh_frame {
93+
; V9PIC-REL-NEXT: 0x13 R_SPARC_DISP32 DW.ref.__gxx_personality_v0 0x0
94+
; V9PIC-REL-NEXT: 0x28 R_SPARC_DISP32 .text 0x0
95+
; V9PIC-REL-NEXT: 0x31 R_SPARC_DISP32 .gcc_except_table 0x0
96+
; V9PIC-REL-NEXT: }
97+
7498
define i32 @main(i32 %argc, ptr nocapture readnone %argv) unnamed_addr #0 personality ptr @__gxx_personality_v0 {
7599
entry:
76100
%0 = icmp eq i32 %argc, 2

llvm/test/MC/Sparc/Relocations/relocation-specifier.s

+22-11
Original file line numberDiff line numberDiff line change
@@ -77,18 +77,29 @@ sethi %lm(sym), %l0
7777
# ASM-NEXT: sethi %gdop_hix22(sym), %l1
7878
# ASM-NEXT: or %l1, %gdop_lox10(sym), %l1
7979
# ASM-NEXT: ldx [%l7+%l1], %l2, %gdop(sym)
80-
# OBJDUMP: R_SPARC_HIX22 sym
81-
# OBJDUMP: R_SPARC_LOX10 sym
82-
# OBJDUMP: R_SPARC_GOTDATA_OP_HIX22 sym
83-
# OBJDUMP: R_SPARC_GOTDATA_OP_LOX10 sym
84-
# OBJDUMP: R_SPARC_GOTDATA_OP sym
80+
# OBJDUMP: sethi 0x3fffff, %g0
81+
# OBJDUMP-NEXT: xor %g0, -0x400, %g0
82+
# OBJDUMP-NEXT: sethi 0x3fffff, %g1
83+
# OBJDUMP-NEXT: R_SPARC_HIX22 sym
84+
# OBJDUMP-NEXT: xor %g1, -0x400, %g1
85+
# OBJDUMP-NEXT: R_SPARC_LOX10 sym
86+
# OBJDUMP-NEXT: sethi 0x0, %l1
87+
# OBJDUMP-NEXT: R_SPARC_GOTDATA_OP_HIX22 sym
88+
# OBJDUMP-NEXT: or %l1, 0x0, %l1
89+
# OBJDUMP-NEXT: R_SPARC_GOTDATA_OP_LOX10 sym
90+
# OBJDUMP-NEXT: ldx [%l7+%l1], %l2
91+
# OBJDUMP-NEXT: R_SPARC_GOTDATA_OP sym
92+
sethi %hix(zero), %g0
93+
xor %g0, %lox(zero), %g0
8594
sethi %hix(sym), %g1
8695
xor %g1, %lox(sym), %g1
8796
sethi %gdop_hix22(sym), %l1
8897
or %l1, %gdop_lox10(sym), %l1
8998
ldx [%l7 + %l1], %l2, %gdop(sym)
9099

91100
.set abs, 0xfedcba98
101+
.set abs48, 0xfedcba987654
102+
zero = 0
92103

93104
## FIXME: Don't emit GOT relocations when -position-independent is specified.
94105
# NOPIC: sethi 0x3fb72e, %o0
@@ -104,12 +115,12 @@ xor %o0, %lo(-0x12345678), %o1
104115
ld [%o0 + seven], %o0
105116
seven = 7
106117

107-
# OBJDUMP: sethi 0x3fb, %o0
108-
# OBJDUMP-NEXT: or %o0, 0x1cb, %o0
109-
# OBJDUMP-NEXT: ld [%o0+0xa98], %o0
110-
sethi %h44(abs), %o0
111-
or %o0, %m44(abs), %o0
112-
ld [%o0 + %l44(abs)], %o0
118+
# OBJDUMP: sethi 0x3b72ea, %o0
119+
# OBJDUMP-NEXT: or %o0, 0x187, %o0
120+
# OBJDUMP-NEXT: ld [%o0+0x654], %o0
121+
sethi %h44(abs48), %o0
122+
or %o0, %m44(abs48), %o0
123+
ld [%o0 + %l44(abs48)], %o0
113124

114125
# OBJDUMP-NEXT: sethi 0x0, %o0
115126
# OBJDUMP-NEXT: sethi 0x3fb72e, %o0

0 commit comments

Comments
 (0)