https://gcc.gnu.org/g:6293da9e990f12202d3d84b2cd776436abe10860

commit r16-2438-g6293da9e990f12202d3d84b2cd776436abe10860
Author: Rainer Orth <r...@cebitec.uni-bielefeld.de>
Date:   Wed Jul 23 09:18:58 2025 +0200

    Default to -mcpu=ultrasparc3 on Solaris/SPARC
    
    Prompted by the discussions around a recent clang bug, I realized that
    gcc still defaults to -mcpu=v9 on Solaris/SPARC.
    
    This is an oversight since the Oracle Studio 12.6 cc, released in 2017,
    already defaults to -xarch=sparcvis2, the equivalent of
    -mcpu=ultrasparc3.  Besides, both the 32 and 64-bit libc.so.1 require
    UltraSPARC III extensions anyway:
    
          SPARC32PLUS Version 1, V8+ Required, UltraSPARC3 Extensions Required 
[VIS]
          SPARCV9 Version 1, UltraSPARC3 Extensions Required [VIS]
    
    So this patch follows suite.
    
    Bootstrapped on sparc-sun-solaris2.11 and sparcv9-sun-solaris2.11 with
    as/ld, gas/ld, and gas/gld configurations.
    
    There are currently two regressions exposed by this patch (PRs 121191
    and 121192), which are only present in gcc 16 resp. 15/16.
    
    There's one small caveat: while Solaris now marks all objects with
    EF_SPARC_32PLUS EF_SPARC_SUN_US1 EF_SPARC_SUN_US3, gas only sets the
    EF_SPARC_SUN_US[13] flags in the ELF header if UltraSPARC I/III insns
    are actually used.  This is in accordance with the SPARC Compliance
    Definition 2.4.1, 4P-1.  In the end, it doesn't matter anyway since
    libc.so.1 already has both flags, so the resulting executables and
    shared objects will too, anyway.
    
    2025-07-20  Rainer Orth  <r...@cebitec.uni-bielefeld.de>
    
            gcc:
            * config.gcc <sparc*-*-solaris2*> (with_cpu): Default to 
ultrasparc3.

Diff:
---
 gcc/config.gcc | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/gcc/config.gcc b/gcc/config.gcc
index 8ed111392bb4..0d8dbc4fb199 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -3504,10 +3504,9 @@ sparc*-*-solaris2*)
            sparc64-*-* | sparcv9-*-*)
                tm_file="sparc/default64.h ${tm_file}"
                ;;
-           *)
-               test x$with_cpu != x || with_cpu=v9
-               ;;
        esac
+       # Match Studio 12.6 cc.
+       with_cpu=${with_cpu:-ultrasparc3}
        tmake_file="${tmake_file} sparc/t-sparc sparc/t-sol2"
        ;;
 sparc-wrs-vxworks)

Reply via email to