[llvm] d0096e8 - Sparc: Improve SETHI and R_SPARC_DISP32 tests
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Mon May 5 09:17:32 PDT 2025
Author: Fangrui Song
Date: 2025-05-05T09:17:27-07:00
New Revision: d0096e8f9627d0d2704db3449ee1a958af19169c
URL: https://github.com/llvm/llvm-project/commit/d0096e8f9627d0d2704db3449ee1a958af19169c
DIFF: https://github.com/llvm/llvm-project/commit/d0096e8f9627d0d2704db3449ee1a958af19169c.diff
LOG: 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.
Added:
Modified:
llvm/test/CodeGen/SPARC/exception.ll
llvm/test/MC/Sparc/Relocations/relocation-specifier.s
Removed:
################################################################################
diff --git a/llvm/test/CodeGen/SPARC/exception.ll b/llvm/test/CodeGen/SPARC/exception.ll
index ea1a27930b6d7..08e7e677a5bb8 100644
--- a/llvm/test/CodeGen/SPARC/exception.ll
+++ b/llvm/test/CodeGen/SPARC/exception.ll
@@ -3,6 +3,8 @@
; RUN: llc -simplifycfg-require-and-preserve-domtree=1 < %s -mtriple=sparcv9 -relocation-model=static | FileCheck -check-prefix=V9ABS %s
; RUN: llc -simplifycfg-require-and-preserve-domtree=1 < %s -mtriple=sparcv9 -relocation-model=pic | FileCheck -check-prefix=V9PIC %s
+; 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
+; 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
%struct.__fundamental_type_info_pseudo = type { %struct.__type_info_pseudo }
%struct.__type_info_pseudo = type { ptr, ptr }
@@ -57,6 +59,16 @@
; V9ABS-NOT: .section
; V9ABS: .xword _ZTIi
+; V9ABS-REL: .rela.gcc_except_table {
+; V9ABS-REL-NEXT: 0x14 R_SPARC_64 _ZTIi 0x0
+; V9ABS-REL-NEXT: 0x1C R_SPARC_64 _ZTIf 0x0
+; V9ABS-REL-NEXT: }
+; V9ABS-REL-NEXT: .rela.eh_frame {
+; V9ABS-REL-NEXT: 0x13 R_SPARC_UA64 __gxx_personality_v0 0x0
+; V9ABS-REL-NEXT: 0x2C R_SPARC_DISP32 .text 0x0
+; V9ABS-REL-NEXT: 0x35 R_SPARC_DISP32 .gcc_except_table 0x0
+; V9ABS-REL-NEXT: }
+
; V9PIC-LABEL: main:
; V9PIC: .cfi_startproc
; V9PIC: .cfi_personality 155, DW.ref.__gxx_personality_v0
@@ -71,6 +83,18 @@
; V9PIC: .L_ZTIi.DW.stub:
; V9PIC-NEXT: .xword _ZTIi
+; V9PIC-REL: .rela.gcc_except_table {
+; V9PIC-REL-NEXT: 0x14 R_SPARC_DISP32 .data 0x8
+; V9PIC-REL-NEXT: 0x18 R_SPARC_DISP32 .data 0x0
+; V9PIC-REL-NEXT: }
+; V9PIC-REL-NEXT: .rela.data {
+; V9PIC-REL: .rela.data.DW.ref.__gxx_personality_v0 {
+; V9PIC-REL: .rela.eh_frame {
+; V9PIC-REL-NEXT: 0x13 R_SPARC_DISP32 DW.ref.__gxx_personality_v0 0x0
+; V9PIC-REL-NEXT: 0x28 R_SPARC_DISP32 .text 0x0
+; V9PIC-REL-NEXT: 0x31 R_SPARC_DISP32 .gcc_except_table 0x0
+; V9PIC-REL-NEXT: }
+
define i32 @main(i32 %argc, ptr nocapture readnone %argv) unnamed_addr #0 personality ptr @__gxx_personality_v0 {
entry:
%0 = icmp eq i32 %argc, 2
diff --git a/llvm/test/MC/Sparc/Relocations/relocation-specifier.s b/llvm/test/MC/Sparc/Relocations/relocation-specifier.s
index b5da46904c650..f13c14fd13342 100644
--- a/llvm/test/MC/Sparc/Relocations/relocation-specifier.s
+++ b/llvm/test/MC/Sparc/Relocations/relocation-specifier.s
@@ -77,11 +77,20 @@ sethi %lm(sym), %l0
# ASM-NEXT: sethi %gdop_hix22(sym), %l1
# ASM-NEXT: or %l1, %gdop_lox10(sym), %l1
# ASM-NEXT: ldx [%l7+%l1], %l2, %gdop(sym)
-# OBJDUMP: R_SPARC_HIX22 sym
-# OBJDUMP: R_SPARC_LOX10 sym
-# OBJDUMP: R_SPARC_GOTDATA_OP_HIX22 sym
-# OBJDUMP: R_SPARC_GOTDATA_OP_LOX10 sym
-# OBJDUMP: R_SPARC_GOTDATA_OP sym
+# OBJDUMP: sethi 0x3fffff, %g0
+# OBJDUMP-NEXT: xor %g0, -0x400, %g0
+# OBJDUMP-NEXT: sethi 0x3fffff, %g1
+# OBJDUMP-NEXT: R_SPARC_HIX22 sym
+# OBJDUMP-NEXT: xor %g1, -0x400, %g1
+# OBJDUMP-NEXT: R_SPARC_LOX10 sym
+# OBJDUMP-NEXT: sethi 0x0, %l1
+# OBJDUMP-NEXT: R_SPARC_GOTDATA_OP_HIX22 sym
+# OBJDUMP-NEXT: or %l1, 0x0, %l1
+# OBJDUMP-NEXT: R_SPARC_GOTDATA_OP_LOX10 sym
+# OBJDUMP-NEXT: ldx [%l7+%l1], %l2
+# OBJDUMP-NEXT: R_SPARC_GOTDATA_OP sym
+sethi %hix(zero), %g0
+xor %g0, %lox(zero), %g0
sethi %hix(sym), %g1
xor %g1, %lox(sym), %g1
sethi %gdop_hix22(sym), %l1
@@ -89,6 +98,8 @@ or %l1, %gdop_lox10(sym), %l1
ldx [%l7 + %l1], %l2, %gdop(sym)
.set abs, 0xfedcba98
+.set abs48, 0xfedcba987654
+zero = 0
## FIXME: Don't emit GOT relocations when -position-independent is specified.
# NOPIC: sethi 0x3fb72e, %o0
@@ -104,12 +115,12 @@ xor %o0, %lo(-0x12345678), %o1
ld [%o0 + seven], %o0
seven = 7
-# OBJDUMP: sethi 0x3fb, %o0
-# OBJDUMP-NEXT: or %o0, 0x1cb, %o0
-# OBJDUMP-NEXT: ld [%o0+0xa98], %o0
-sethi %h44(abs), %o0
-or %o0, %m44(abs), %o0
-ld [%o0 + %l44(abs)], %o0
+# OBJDUMP: sethi 0x3b72ea, %o0
+# OBJDUMP-NEXT: or %o0, 0x187, %o0
+# OBJDUMP-NEXT: ld [%o0+0x654], %o0
+sethi %h44(abs48), %o0
+or %o0, %m44(abs48), %o0
+ld [%o0 + %l44(abs48)], %o0
# OBJDUMP-NEXT: sethi 0x0, %o0
# OBJDUMP-NEXT: sethi 0x3fb72e, %o0
More information about the llvm-commits
mailing list