https://gcc.gnu.org/g:8f4a39ee10975a20bd7a5bb07f23d9bc3cd7ea96

commit r16-6803-g8f4a39ee10975a20bd7a5bb07f23d9bc3cd7ea96
Author: Rainer Orth <[email protected]>
Date:   Thu Jan 15 13:03:59 2026 +0100

    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  <[email protected]>
    
            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<P:mode>"): Likewise.

Diff:
---
 gcc/config/sparc/sol2.h   | 5 -----
 gcc/config/sparc/sparc.cc | 6 +++---
 gcc/config/sparc/sparc.h  | 1 -
 gcc/config/sparc/sparc.md | 4 ++--
 4 files changed, 5 insertions(+), 11 deletions(-)

diff --git a/gcc/config/sparc/sol2.h b/gcc/config/sparc/sol2.h
index b985fa8755ae..fde5e388fbeb 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 f7c355cd4a87..18e76afb57de 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 c5a45b058692..87a3f9da89bf 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 f4b9d2f47659..46f6e70405be 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<P:mode>"

Reply via email to