Failure introduced by the sahf patch(es)

Philippe Schaffnit P.Schaffnit@access.rwth-aachen.de
Thu Mar 15 11:24:00 GMT 2007


Sorry! Already outdated: '122953-sources' seem to behave better (still
bootstraping, though...).

Sorry about the noise...

Philippe

Philippe Schaffnit wrote:
> 
> Hi!
> 
> I might (or not!) be related to this: I am now seeing a build failure
> under x86_64-unknown-linux-gnu with '122950' sources:
> 
> gcc   -g -fkeep-inline-functions -DIN_GCC   -W -Wall -Wwrite-strings
> -Wstrict-prototypes -Wmissing-prototypes -pedantic -Wno-long-long
> -Wno-variadic-macros -Wno-overlength-strings -Wold-style-definition
> -Wmissing-format-attribute -fno-common   -DHAVE_CONFIG_H
> -DGENERATOR_FILE  -o build/genoutput \
>     build/genoutput.o build/rtl.o build/read-rtl.o build/ggc-none.o
> build/vec.o build/min-insn-modes.o build/gensupport.o build/print-rtl.o
> build/errors.o ../build-x86_64-unknown-linux-gnu/libiberty/libiberty.a
> build/genoutput /USER/philippe/Irix/Gcc_Sources/gcc/config/i386/i386.md
> \
>   insn-conditions.md > tmp-output.c
> /bin/sh /USER/philippe/Irix/Gcc_Sources/gcc/../move-if-change
> tmp-output.c insn-output.c
> echo timestamp > s-output
> gcc -c   -g -fkeep-inline-functions -DIN_GCC   -W -Wall -Wwrite-strings
> -Wstrict-prototypes -Wmissing-prototypes -pedantic -Wno-long-long
> -Wno-variadic-macros -Wno-overlength-strings -Wold-style-definition
> -Wmissing-format-attribute -fno-common   -DHAVE_CONFIG_H -I. -I.
> -I/USER/philippe/Irix/Gcc_Sources/gcc
> -I/USER/philippe/Irix/Gcc_Sources/gcc/.
> -I/USER/philippe/Irix/Gcc_Sources/gcc/../include
> -I/USER/philippe/Irix/Gcc_Sources/gcc/../libcpp/include
> -I/WORK/philippe/Tools/Gmp/include -I/WORK/philippe/Tools/Mpfr/include
> -I/USER/philippe/Irix/Gcc_Sources/gcc/../libdecnumber
> -I../libdecnumber    insn-output.c -o insn-output.o
> /USER/philippe/Irix/Gcc_Sources/gcc/config/i386/i386.md: In function
> 'output_26':
> /USER/philippe/Irix/Gcc_Sources/gcc/config/i386/i386.md:991: error:
> 'HAVE_AS_IX86_SAHF' undeclared (first use in this function)
> /USER/philippe/Irix/Gcc_Sources/gcc/config/i386/i386.md:991: error:
> (Each undeclared identifier is reported only once
> /USER/philippe/Irix/Gcc_Sources/gcc/config/i386/i386.md:991: error: for
> each function it appears in.)
> /USER/philippe/Irix/Gcc_Sources/gcc/config/i386/i386.md:992: warning:
> control reaches end of non-void function
> make[3]: *** [insn-output.o] Error 1
> make[3]: Leaving directory `/WORK/philippe/Compilation/Gcc/gcc'
> make[2]: *** [all-stage1-gcc] Error 2
> make[2]: Leaving directory `/WORK/philippe/Compilation/Gcc'
> make[1]: *** [stage1-bubble] Error 2
> make[1]: Leaving directory `/WORK/philippe/Compilation/Gcc'
> make: *** [bootstrap] Error 2
> 
> Thanks!
> 
> Philippe
> 
> Uros Bizjak wrote:
> >
> > H. J. Lu wrote:
> >
> > >>> There has been a recent addition to add this "sahf" to the
> > >>> instructions used by the i386 back-end.
> > >>>
> > >> This is mine, but from asm dump:
> > >>
> > >> .L120:
> > >>        fprem
> > >>        fnstsw  %ax
> > >>        sahf
> > >>        jp      .L120
> > >>        fstp    %st(1)
> > >>        xorpd   %xmm2, %xmm2
> > >>
> > >> This is perfectly good asm for MOD() a.k.a. fmod() function.
> > >>
> > >
> > > 64bit sahf was enabled by
> > >
> > > http://sourceware.org/ml/binutils/2004-11/msg00313.html
> > >
> > > I think we should either use .byte with a commment and check if
> > > assembler supports 64bit sahf if we want to generate 64bit sahf.
> > >
> > Attached patch fixes this annoyance.
> >
> > 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
> >
> >         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
> >         the configured assembler supports the sahf mnemonic.
> >         * configure: Regenerate.
> >         * config.in: Regenerate.
> >
> >         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
> >         emit "sahf" or ".byte\t0x9e" as asm template.
> >
> > Patch is regression tested on x86_64-pc-linux-gnu for all default
> > languages. Patch is commited to SVN.
> >
> > Uros.
> >
> >   ------------------------------------------------------------------------
> > Index: config/i386/i386.md
> > ===================================================================
> > --- config/i386/i386.md (revision 122924)
> > +++ config/i386/i386.md (working copy)
> > @@ -988,7 +988,7 @@
> >         (unspec:CC [(match_operand:HI 0 "register_operand" "a")]
> >                    UNSPEC_SAHF))]
> >    "TARGET_SAHF"
> > -  "sahf"
> > +  "* return HAVE_AS_IX86_SAHF ? \"sahf\" : \".byte\t0x9e\";"
> >    [(set_attr "length" "1")
> >     (set_attr "athlon_decode" "vector")
> >     (set_attr "amdfam10_decode" "direct")
> > Index: config.in
> > ===================================================================
> > --- config.in   (revision 122924)
> > +++ config.in   (working copy)
> > @@ -228,6 +228,12 @@
> >  #endif
> >
> >
> > +/* Define if your assembler supports the sahf mnemonic. */
> > +#ifndef USED_FOR_TARGET
> > +#undef HAVE_AS_IX86_SAHF
> > +#endif
> > +
> > +
> >  /* Define if your assembler supports the lituse_jsrdirect relocation. */
> >  #ifndef USED_FOR_TARGET
> >  #undef HAVE_AS_JSRDIRECT_RELOCS
> > Index: configure
> > ===================================================================
> > --- configure   (revision 122924)
> > +++ configure   (working copy)
> > @@ -15237,6 +15237,39 @@
> >
> >  fi
> >
> > +    echo "$as_me:$LINENO: checking assembler for sahf mnemonic" >&5
> > +echo $ECHO_N "checking assembler for sahf mnemonic... $ECHO_C" >&6
> > +if test "${gcc_cv_as_ix86_sahf+set}" = set; then
> > +  echo $ECHO_N "(cached) $ECHO_C" >&6
> > +else
> > +  gcc_cv_as_ix86_sahf=no
> > +  if test x$gcc_cv_as != x; then
> > +    echo 'sahf' > conftest.s
> > +    if { ac_try='$gcc_cv_as  -o conftest.o conftest.s >&5'
> > +  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
> > +  (eval $ac_try) 2>&5
> > +  ac_status=$?
> > +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
> > +  (exit $ac_status); }; }
> > +    then
> > +       gcc_cv_as_ix86_sahf=yes
> > +    else
> > +      echo "configure: failed program was" >&5
> > +      cat conftest.s >&5
> > +    fi
> > +    rm -f conftest.o conftest.s
> > +  fi
> > +fi
> > +echo "$as_me:$LINENO: result: $gcc_cv_as_ix86_sahf" >&5
> > +echo "${ECHO_T}$gcc_cv_as_ix86_sahf" >&6
> > +if test $gcc_cv_as_ix86_sahf = yes; then
> > +
> > +cat >>confdefs.h <<\_ACEOF
> > +#define HAVE_AS_IX86_SAHF 1
> > +_ACEOF
> > +
> > +fi
> > +
> >      echo "$as_me:$LINENO: checking assembler for different section symbol subtraction" >&5
> >  echo $ECHO_N "checking assembler for different section symbol subtraction... $ECHO_C" >&6
> >  if test "${gcc_cv_as_ix86_diff_sect_delta+set}" = set; then
> > Index: configure.ac
> > ===================================================================
> > --- configure.ac        (revision 122924)
> > +++ configure.ac        (working copy)
> > @@ -2808,6 +2808,12 @@
> >        [AC_DEFINE(HAVE_AS_IX86_FFREEP, 1,
> >          [Define if your assembler supports the ffreep mnemonic.])])
> >
> > +    gcc_GAS_CHECK_FEATURE([sahf mnemonic],
> > +      gcc_cv_as_ix86_sahf,,,
> > +      [sahf],,
> > +      [AC_DEFINE(HAVE_AS_IX86_SAHF, 1,
> > +        [Define if your assembler supports the sahf mnemonic.])])
> > +
> >      gcc_GAS_CHECK_FEATURE([different section symbol subtraction],
> >        gcc_cv_as_ix86_diff_sect_delta,,,
> >        [.section .rodata



More information about the Gcc-patches mailing list