On Sat, 2014-10-18 12:54:33 +0200, Oleg Endo <oleg.e...@t-online.de> wrote: > Hi, > > As discussed in the PR, this adds two new SH built-in functions > __builtin_sh_get_fpscr __builtin_sh_set_fpscr. Tested on r216173 with > > make -k check RUNTESTFLAGS="--target_board=sh-sim\{-m4/-ml,-m4/-mb}" > > and no new failures. Committed as r216424. > > Cheers, > Oleg > > gcc/ChangeLog: > PR target/53513 > * config/sh/sh-modes.def (PSI): Remove. > * config/sh/sh-protos.h (get_fpscr_rtx): Remove. > * config/sh/sh.c (fpscr_rtx, get_fpscr_rtx): Remove. > (sh_reorg): Remove commented out FPSCR code. > (fpscr_set_from_mem): Use SImode instead of PSImode. Emit lds_fpscr > insn instead of move insn. > (sh_hard_regno_mode_ok): Return SImode for FPSCR. > (sh_legitimate_address_p, sh_legitimize_reload_address): Remove PSImode > handling. > (sh_emit_mode_set): Emit lds_fpscr and sts_fpscr insns. > (sh1_builtin_p): Uncomment. > (SH_BLTIN_UV 25, SH_BLTIN_VU 26): New macros. > (bdesc): Add __builtin_sh_get_fpscr and __builtin_sh_set_fpscr.
Change to emit_fpu_switch() is missing here. > Index: gcc/config/sh/sh.c > =================================================================== > --- gcc/config/sh/sh.c (revision 216350) > +++ gcc/config/sh/sh.c (working copy) This chunk is in emit_fpu_switch(), which drops every reference to `dst': > @@ -10055,13 +10032,12 @@ > emit_move_insn (scratch, XEXP (src, 0)); > if (index != 0) > emit_insn (gen_addsi3 (scratch, scratch, GEN_INT (index * 4))); > - src = adjust_automodify_address (src, PSImode, scratch, index * 4); > + src = adjust_automodify_address (src, SImode, scratch, index * 4); > } > else > - src = adjust_address (src, PSImode, index * 4); > + src = adjust_address (src, SImode, index * 4); > > - dst = get_fpscr_rtx (); > - emit_move_insn (dst, src); > + emit_insn (gen_lds_fpscr (src)); > } > > static rtx get_free_reg (HARD_REG_SET); ...which in turn results in fall-out when simply building it with config-list.mk, see eg. http://toolchain.lug-owl.de/buildbot/show_build_details.php?id=372472 : [...] g++ -c -g -O2 -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -Werror -fno-common -DHAVE_CONFIG_H -I. -I. -I../../../gcc/gcc -I../../../gcc/gcc/. -I../../../gcc/gcc/../include -I../../../gcc/gcc/../libcpp/include -I/opt/cfarm/mpc/include -I../../../gcc/gcc/../libdecnumber -I../../../gcc/gcc/../libdecnumber/dpd -I../libdecnumber -I../../../gcc/gcc/../libbacktrace -o sh.o -MT sh.o -MMD -MP -MF ./.deps/sh.TPo ../../../gcc/gcc/config/sh/sh.c ../../../gcc/gcc/config/sh/sh.c: In function ‘void emit_fpu_switch(rtx, int)’: ../../../gcc/gcc/config/sh/sh.c:10027:7: error: unused variable ‘dst’ [-Werror=unused-variable] rtx dst, src; ^ cc1plus: all warnings being treated as errors make[2]: *** [sh.o] Error 1 This should fix it, ok for mainline? 2014-11-04 Jan-Benedict Glaw <jbg...@lug-owl.de> * config/sh/sh.c (emit_fpu_switch): Drop unused automatic variable. diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c index 3a4f5e9..be944da 100644 --- a/gcc/config/sh/sh.c +++ b/gcc/config/sh/sh.c @@ -10024,7 +10024,7 @@ static GTY(()) tree fpscr_values; static void emit_fpu_switch (rtx scratch, int index) { - rtx dst, src; + rtx src; if (fpscr_values == NULL) { MfG, JBG -- Jan-Benedict Glaw jbg...@lug-owl.de +49-172-7608481 Signature of: http://www.chiark.greenend.org.uk/~sgtatham/bugs.html the second :
signature.asc
Description: Digital signature