From: Rainer Orth Date: Thu, 15 Jan 2026 12:03:59 +0000 (+0100) Subject: sparc: Remove TARGET_SUN_TLS X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8f4a39ee10975a20bd7a5bb07f23d9bc3cd7ea96;p=thirdparty%2Fgcc.git sparc: Remove TARGET_SUN_TLS All remaining uses of TARGET_SUN_TLS refer to either * a feature missing in Solaris as: Lack of support for R_SPARC_TLS_DTPOFF{32,64}: while Solaris ld supports those just fine, I know of no Solaris as syntax for them. * workarounds for bugs in Solaris as in sparc_tls_got, sparc_legitimize_tls_address, and the tls_delay_slot attribute Therefor this patch replaces all uses of TARGET_SUN_TLS with !HAVE_GNU_AS. Bootstrapped without regressions on sparc-sun-solaris2.11, sparcv9-sun-solaris2.11 (as and gas), and sparc64-unknown-linux-gnu. 2026-01-14 Rainer Orth gcc: * config/sparc/sparc.h (TARGET_SUN_TLS): Remove. * config/sparc/sol2.h (TARGET_SUN_TLS): Likewise. * config/sparc/sparc.cc (TARGET_ASM_OUTPUT_DWARF_DTPREL): Guard with HAVE_GNU_AS. (sparc_tls_got): Guard with !HAVE_GNU_AS. (sparc_legitimize_tls_address): Likewise. * config/sparc/sparc.md ("tls_delay_slot"): Likewise. ("@tie_add"): Likewise. --- diff --git a/gcc/config/sparc/sol2.h b/gcc/config/sparc/sol2.h index b985fa8755a..fde5e388fbe 100644 --- a/gcc/config/sparc/sol2.h +++ b/gcc/config/sparc/sol2.h @@ -315,11 +315,6 @@ extern const char *host_detect_local_cpu (int argc, const char **argv); /* Register the Solaris-specific #pragma directives. */ #define REGISTER_TARGET_PRAGMAS() solaris_register_pragmas () -#if HAVE_AS_TLS && !HAVE_GNU_AS -#undef TARGET_SUN_TLS -#define TARGET_SUN_TLS 1 -#endif - #undef LOCAL_LABEL_PREFIX #define LOCAL_LABEL_PREFIX "." diff --git a/gcc/config/sparc/sparc.cc b/gcc/config/sparc/sparc.cc index f7c355cd4a8..18e76afb57d 100644 --- a/gcc/config/sparc/sparc.cc +++ b/gcc/config/sparc/sparc.cc @@ -877,7 +877,7 @@ char sparc_hard_reg_printed[8]; #define TARGET_STACK_PROTECT_GUARD hook_tree_void_null #endif -#if !TARGET_SUN_TLS +#if HAVE_GNU_AS #undef TARGET_ASM_OUTPUT_DWARF_DTPREL #define TARGET_ASM_OUTPUT_DWARF_DTPREL sparc_output_dwarf_dtprel #endif @@ -4701,7 +4701,7 @@ sparc_tls_got (void) /* In non-PIC mode, Sun as (unlike GNU as) emits PC-relative relocations for the GOT symbol with the 32-bit ABI, so we reload the GOT register. */ - if (TARGET_SUN_TLS && TARGET_ARCH32) + if (!HAVE_GNU_AS && TARGET_ARCH32) { load_got_register (); return got_register_rtx; @@ -4805,7 +4805,7 @@ sparc_legitimize_tls_address (rtx addr) emit_insn (gen_tie_ld32 (temp3, got, temp2, addr)); else emit_insn (gen_tie_ld64 (temp3, got, temp2, addr)); - if (TARGET_SUN_TLS) + if (!HAVE_GNU_AS) { ret = gen_reg_rtx (Pmode); emit_insn (gen_tie_add (Pmode, ret, gen_rtx_REG (Pmode, 7), diff --git a/gcc/config/sparc/sparc.h b/gcc/config/sparc/sparc.h index c5a45b05869..87a3f9da89b 100644 --- a/gcc/config/sparc/sparc.h +++ b/gcc/config/sparc/sparc.h @@ -1623,7 +1623,6 @@ extern int sparc_indent_opcode; /* TLS support defaults to GNU extensions. The original Sun flavor must be activated in separate configuration files. */ #define TARGET_TLS HAVE_AS_TLS -#define TARGET_SUN_TLS 0 #ifdef HAVE_AS_FMAF_HPC_VIS3 #define AS_NIAGARA3_FLAG "d" diff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md index f4b9d2f4765..46f6e70405b 100644 --- a/gcc/config/sparc/sparc.md +++ b/gcc/config/sparc/sparc.md @@ -557,7 +557,7 @@ ;; Attributes for branch scheduling (define_attr "tls_delay_slot" "false,true" - (symbol_ref "((!TARGET_SUN_TLS && HAVE_GNU_LD) != 0 + (symbol_ref "((HAVE_GNU_AS && HAVE_GNU_LD) != 0 ? TLS_DELAY_SLOT_TRUE : TLS_DELAY_SLOT_FALSE)")) (define_attr "in_sibcall_delay" "false,true" @@ -8070,7 +8070,7 @@ (unspec:P [(match_operand:P 2 "register_operand" "r") (match_operand 3 "tie_symbolic_operand" "")] UNSPEC_TLSIE)))] - "TARGET_SUN_TLS" + "!HAVE_GNU_AS" "add\\t%1, %2, %0, %%tie_add(%a3)") (define_insn "@tle_hix22"