https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125197

            Bug ID: 125197
           Summary: [16 Regression] -m32 libstdc++ is built incorrectly
                    for sparc64
           Product: gcc
           Version: 16.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: hjl.tools at gmail dot com
                CC: jwakely at redhat dot com
  Target Milestone: ---
            Target: sparc64

libatomic/configure.tgt has

  sparc)
        case " ${CC} ${CFLAGS} " in
          *" -m64 "*)
            ;;
          *)
            if test -z "$with_cpu"; then
              XCFLAGS="${XCFLAGS} -mcpu=v9"
            fi
        esac
        ARCH=sparc
        ;;
  sparc64|sparcv9)
        case " ${CC} ${CFLAGS} " in
          *" -m32 "*)
            XCFLAGS="${XCFLAGS} -mcpu=v9"
            ;;
        esac
        ARCH=sparc
        ;;

-m32 libatomic for sparc64 is built with -mcpu=v9.  But
libstdc++-v3/configure.host
has

# Most can just use generic.
# THIS TABLE IS SORTED.  KEEP IT THAT WAY.
case "${host_cpu}" in
  cris*)
    atomic_word_dir=cpu/cris
    ;;  
  i[4567]86 | x86_64)
    atomic_flags="-march=native"
    ;;  
  sparc* | ultrasparc)
    atomic_word_dir=cpu/sparc
    atomic_flags="-mcpu=v9"
    ;;  
esac

But -mcpu=v9 isn't used on -m32 libstdc++ for sparc64.

Reply via email to