On Thu, Oct 17, 2013 at 10:49 AM, Jan-Benedict Glaw <jbg...@lug-owl.de> wrote: > On Thu, 2013-10-17 10:23:27 -0700, Sriraman Tallam <tmsri...@google.com> > wrote: > [...] >> I would need the help of target maintainers to fix it this way since >> it touches every target and it would take time for me to build and >> test every target. > > Then you should have probably waited some time, mark your patch as RFC > until there's consent on what exactly needs to be done for all target > archs. > >> Michael, OTOH, I dont see any other targets other than i386 and rs6000 >> (grepping for "specific_save" and "specific_restore") using >> function_specific save and restore functions. Would it be easier then >> to just add back that line to "opth-gen.awk"?,the patch is below. >> Since, they are not using function specific opts, they presumably >> should not be validating target options a lot. > > Some examples for breakage: > > sparc64 (http://toolchain.lug-owl.de/buildbot/show_build_details.php?id=20481) > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > 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 -pedantic > -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -fno-common > -DHAVE_CONFIG_H -I. -I. -I/home/vaxbuild/repos/gcc/gcc > -I/home/vaxbuild/repos/gcc/gcc/. -I/home/vaxbuild/repos/gcc/gcc/../include > -I/home/vaxbuild/repos/gcc/gcc/../libcpp/include > -I/home/vaxbuild/repos/gcc/gcc/../libdecnumber > -I/home/vaxbuild/repos/gcc/gcc/../libdecnumber/dpd -I../libdecnumber > -I/home/vaxbuild/repos/gcc/gcc/../libbacktrace -o sparc.o -MT sparc.o -MMD > -MP -MF ./.deps/sparc.TPo /home/vaxbuild/repos/gcc/gcc/config/sparc/sparc.c > /home/vaxbuild/repos/gcc/gcc/config/sparc/sparc.c: In function ‘void > sparc_option_override()’: > /home/vaxbuild/repos/gcc/gcc/config/sparc/sparc.c:1228:50: error: > ‘target_flags_explicit’ was not declared in this scope > dump_target_flags("target_flags_explicit", target_flags_explicit); > ^ > /home/vaxbuild/repos/gcc/gcc/config/sparc/sparc.c:1322:7: error: > ‘target_flags_explicit’ was not declared in this scope > if (target_flags_explicit & MASK_FPU) > ^ > make[1]: *** [sparc.o] Error 1 > > > s390-linux > (http://toolchain.lug-owl.de/buildbot/show_build_details.php?id=20482) > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > g++ -c -g -O2 -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE -fno-exceptions > -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wwrite-strings -Wcast-qual > -Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros > -Wno-overlength-strings -fno-common -DHAVE_CONFIG_H -I. -I. > -I/home/jbglaw/repos/gcc/gcc -I/home/jbglaw/repos/gcc/gcc/. > -I/home/jbglaw/repos/gcc/gcc/../include > -I/home/jbglaw/repos/gcc/gcc/../libcpp/include > -I/home/jbglaw/repos/gcc/gcc/../libdecnumber > -I/home/jbglaw/repos/gcc/gcc/../libdecnumber/dpd -I../libdecnumber > -I/home/jbglaw/repos/gcc/gcc/../libbacktrace -o s390.o -MT s390.o -MMD -MP > -MF ./.deps/s390.TPo /home/jbglaw/repos/gcc/gcc/config/s390/s390.c > /home/jbglaw/repos/gcc/gcc/config/s390/s390.c: In function ‘void > s390_option_override()’: > /home/jbglaw/repos/gcc/gcc/config/s390/s390.c:1612: error: > ‘target_flags_explicit’ was not declared in this scope > /home/jbglaw/repos/gcc/gcc/config/s390/s390.c:1644: error: > ‘target_flags_explicit’ was not declared in this scope > /home/jbglaw/repos/gcc/gcc/config/s390/s390.c:1649: error: > ‘target_flags_explicit’ was not declared in this scope > /home/jbglaw/repos/gcc/gcc/config/s390/s390.c:1654: error: > ‘target_flags_explicit’ was not declared in this scope > /home/jbglaw/repos/gcc/gcc/config/s390/s390.c:1667: error: > ‘target_flags_explicit’ was not declared in this scope > make[1]: *** [s390.o] Error 1 > > > mips64-linux > (http://toolchain.lug-owl.de/buildbot/show_build_details.php?id=20471) > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > g++ -c -DIN_GCC_FRONTEND -DIN_GCC_FRONTEND -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 -pedantic -Wno-long-long > -Wno-variadic-macros -Wno-overlength-strings -fno-common -DHAVE_CONFIG_H -I. > -Ic-family -I/home/vaxbuild/repos/gcc/gcc > -I/home/vaxbuild/repos/gcc/gcc/c-family > -I/home/vaxbuild/repos/gcc/gcc/../include > -I/home/vaxbuild/repos/gcc/gcc/../libcpp/include > -I/home/vaxbuild/repos/gcc/gcc/../libdecnumber > -I/home/vaxbuild/repos/gcc/gcc/../libdecnumber/dpd -I../libdecnumber > -I/home/vaxbuild/repos/gcc/gcc/../libbacktrace -o c-family/c-cppbuiltin.o > -MT c-family/c-cppbuiltin.o -MMD -MP -MF c-family/.deps/c-cppbuiltin.TPo > /home/vaxbuild/repos/gcc/gcc/c-family/c-cppbuiltin.c > In file included from ./tm.h:31:0, > from /home/vaxbuild/repos/gcc/gcc/c-family/c-cppbuiltin.c:23: > /home/vaxbuild/repos/gcc/gcc/c-family/c-cppbuiltin.c: In function ‘void > cpp_atomic_builtins(cpp_reader*)’: > /home/vaxbuild/repos/gcc/gcc/config/mips/mips.h:1091:4: error: > ‘target_flags_explicit’ was not declared in this scope > (target_flags_explicit & MASK_LLSC \ > ^ > ./insn-flags.h:814:39: note: in expansion of macro ‘GENERATE_LL_SC’ > #define HAVE_sync_compare_and_swapqi (GENERATE_LL_SC) > ^ > /home/vaxbuild/repos/gcc/gcc/c-family/c-cppbuiltin.c:594:7: note: in > expansion of macro ‘HAVE_sync_compare_and_swapqi’ > if (HAVE_sync_compare_and_swapqi || HAVE_atomic_compare_and_swapqi) > ^ > /home/vaxbuild/repos/gcc/gcc/config/mips/mips.h:1091:4: error: > ‘target_flags_explicit’ was not declared in this scope > (target_flags_explicit & MASK_LLSC \ > ^ > ./insn-flags.h:815:39: note: in expansion of macro ‘GENERATE_LL_SC’ > #define HAVE_sync_compare_and_swaphi (GENERATE_LL_SC) > ^ > /home/vaxbuild/repos/gcc/gcc/c-family/c-cppbuiltin.c:606:7: note: in > expansion of macro ‘HAVE_sync_compare_and_swaphi’ > if (HAVE_sync_compare_and_swaphi || HAVE_atomic_compare_and_swaphi) > ^ > /home/vaxbuild/repos/gcc/gcc/config/mips/mips.h:1091:4: error: > ‘target_flags_explicit’ was not declared in this scope > (target_flags_explicit & MASK_LLSC \ > ^ > ./insn-flags.h:261:39: note: in expansion of macro ‘GENERATE_LL_SC’ > #define HAVE_sync_compare_and_swapsi (GENERATE_LL_SC) > ^ > /home/vaxbuild/repos/gcc/gcc/c-family/c-cppbuiltin.c:618:7: note: in > expansion of macro ‘HAVE_sync_compare_and_swapsi’ > if (HAVE_sync_compare_and_swapsi || HAVE_atomic_compare_and_swapsi) > ^ > /home/vaxbuild/repos/gcc/gcc/config/mips/mips.h:1091:4: error: > ‘target_flags_explicit’ was not declared in this scope > (target_flags_explicit & MASK_LLSC \ > ^ > ./insn-flags.h:262:40: note: in expansion of macro ‘GENERATE_LL_SC’ > #define HAVE_sync_compare_and_swapdi ((GENERATE_LL_SC) && (TARGET_64BIT)) > ^ > /home/vaxbuild/repos/gcc/gcc/c-family/c-cppbuiltin.c:630:7: note: in > expansion of macro ‘HAVE_sync_compare_and_swapdi’ > if (HAVE_sync_compare_and_swapdi || HAVE_atomic_compare_and_swapdi) > ^ > make[1]: *** [c-family/c-cppbuiltin.o] Error 1 > > > spu-elf (http://toolchain.lug-owl.de/buildbot/show_build_details.php?id=20459) > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > g++ -c -g -O2 -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE -fno-exceptions > -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wwrite-strings -Wcast-qual > -Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros > -Wno-overlength-strings -fno-common -DHAVE_CONFIG_H -I. -I. > -I/home/jbglaw/repos/gcc/gcc -I/home/jbglaw/repos/gcc/gcc/. > -I/home/jbglaw/repos/gcc/gcc/../include > -I/home/jbglaw/repos/gcc/gcc/../libcpp/include > -I/home/jbglaw/repos/gcc/gcc/../libdecnumber > -I/home/jbglaw/repos/gcc/gcc/../libdecnumber/dpd -I../libdecnumber > -I/home/jbglaw/repos/gcc/gcc/../libbacktrace -o spu.o -MT spu.o -MMD -MP > -MF ./.deps/spu.TPo /home/jbglaw/repos/gcc/gcc/config/spu/spu.c > /home/jbglaw/repos/gcc/gcc/config/spu/spu.c: In function ‘void > spu_option_override()’: > /home/jbglaw/repos/gcc/gcc/config/spu/spu.c:271: error: > ‘target_flags_explicit’ was not declared in this scope > /home/jbglaw/repos/gcc/gcc/config/spu/spu.c: In function ‘tree_node* > spu_handle_fndecl_attribute(tree_node**, tree_node*, tree_node*, int, bool*)’: > /home/jbglaw/repos/gcc/gcc/config/spu/spu.c:3690: warning: unknown conversion > type character ‘E’ in format > /home/jbglaw/repos/gcc/gcc/config/spu/spu.c:3690: warning: too many arguments > for format > /home/jbglaw/repos/gcc/gcc/config/spu/spu.c: In function ‘tree_node* > spu_handle_vector_attribute(tree_node**, tree_node*, tree_node*, int, bool*)’: > /home/jbglaw/repos/gcc/gcc/config/spu/spu.c:3747: warning: unknown conversion > type character ‘E’ in format > /home/jbglaw/repos/gcc/gcc/config/spu/spu.c:3747: warning: too many arguments > for format > make[1]: *** [spu.o] Error 1 > > > alpha-linux > (http://toolchain.lug-owl.de/buildbot/show_build_details.php?id=20456) > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > g++ -c -g -O2 -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE -fno-exceptions > -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wwrite-strings -Wcast-qual > -Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros > -Wno-overlength-strings -fno-common -DHAVE_CONFIG_H -I. -I. > -I/home/jbglaw/repos/gcc/gcc -I/home/jbglaw/repos/gcc/gcc/. > -I/home/jbglaw/repos/gcc/gcc/../include > -I/home/jbglaw/repos/gcc/gcc/../libcpp/include > -I/home/jbglaw/repos/gcc/gcc/../libdecnumber > -I/home/jbglaw/repos/gcc/gcc/../libdecnumber/dpd -I../libdecnumber > -I/home/jbglaw/repos/gcc/gcc/../libbacktrace -o alpha.o -MT alpha.o -MMD > -MP -MF ./.deps/alpha.TPo /home/jbglaw/repos/gcc/gcc/config/alpha/alpha.c > /home/jbglaw/repos/gcc/gcc/config/alpha/alpha.c: In function ‘void > alpha_option_override()’: > /home/jbglaw/repos/gcc/gcc/config/alpha/alpha.c:270: error: > ‘target_flags_explicit’ was not declared in this scope > /home/jbglaw/repos/gcc/gcc/config/alpha/alpha.c:403: error: > ‘target_flags_explicit’ was not declared in this scope > make[1]: *** [alpha.o] Error 1 > > > m68k-linux > (http://toolchain.lug-owl.de/buildbot/show_build_details.php?id=20408) > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > g++ -c -g -O2 -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE -fno-exceptions > -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wwrite-strings -Wcast-qual > -Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros > -Wno-overlength-strings -fno-common -DHAVE_CONFIG_H -I. -I. > -I/home/jbglaw/repos/gcc/gcc -I/home/jbglaw/repos/gcc/gcc/. > -I/home/jbglaw/repos/gcc/gcc/../include > -I/home/jbglaw/repos/gcc/gcc/../libcpp/include > -I/home/jbglaw/repos/gcc/gcc/../libdecnumber > -I/home/jbglaw/repos/gcc/gcc/../libdecnumber/dpd -I../libdecnumber > -I/home/jbglaw/repos/gcc/gcc/../libbacktrace -o m68k.o -MT m68k.o -MMD -MP > -MF ./.deps/m68k.TPo /home/jbglaw/repos/gcc/gcc/config/m68k/m68k.c > /home/jbglaw/repos/gcc/gcc/config/m68k/m68k.c: In function ‘void > m68k_option_override()’: > /home/jbglaw/repos/gcc/gcc/config/m68k/m68k.c:503: error: > ‘target_flags_explicit’ was not declared in this scope > /home/jbglaw/repos/gcc/gcc/config/m68k/m68k.c: In function ‘tree_node* > m68k_handle_fndecl_attribute(tree_node**, tree_node*, tree_node*, int, > bool*)’: > /home/jbglaw/repos/gcc/gcc/config/m68k/m68k.c:730: warning: unknown > conversion type character ‘E’ in format > /home/jbglaw/repos/gcc/gcc/config/m68k/m68k.c:730: warning: too many > arguments for format > make[1]: *** [m68k.o] Error 1 > > > frv-linux > (http://toolchain.lug-owl.de/buildbot/show_build_details.php?id=20396) > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > 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 -pedantic > -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -fno-common > -DHAVE_CONFIG_H -I. -I. -I/home/vaxbuild/repos/gcc/gcc > -I/home/vaxbuild/repos/gcc/gcc/. -I/home/vaxbuild/repos/gcc/gcc/../include > -I/home/vaxbuild/repos/gcc/gcc/../libcpp/include > -I/home/vaxbuild/repos/gcc/gcc/../libdecnumber > -I/home/vaxbuild/repos/gcc/gcc/../libdecnumber/dpd -I../libdecnumber > -I/home/vaxbuild/repos/gcc/gcc/../libbacktrace -o frv.o -MT frv.o -MMD -MP > -MF ./.deps/frv.TPo /home/vaxbuild/repos/gcc/gcc/config/frv/frv.c > /home/vaxbuild/repos/gcc/gcc/config/frv/frv.c: In function ‘void > frv_option_override()’: > /home/vaxbuild/repos/gcc/gcc/config/frv/frv.c:642:52: error: > ‘target_flags_explicit’ was not declared in this scope > target_flags |= (frv_default_flags_for_cpu () & ~target_flags_explicit); > ^ > /home/vaxbuild/repos/gcc/gcc/config/frv/frv.c: In function ‘void > frv_init_cumulative_args(int*, tree, rtx, tree, int)’: > /home/vaxbuild/repos/gcc/gcc/config/frv/frv.c:3097:51: error: invalid > conversion from ‘int’ to ‘tree_code’ [-fpermissive] > get_tree_code_name ((int)TREE_CODE (ret_type))); > ^ > make[1]: *** [frv.o] Error 1 > > > > The actual breakage is uncovered by this fragment: > > --- a/gcc/opth-gen.awk > +++ b/gcc/opth-gen.awk > @@ -114,7 +114,6 @@ print "};" > print "extern struct gcc_options global_options;" > print "extern const struct gcc_options global_options_init;" > print "extern struct gcc_options global_options_set;" > -print "#define target_flags_explicit global_options_set.x_target_flags" > print "#endif" > print "#endif" > print "" > > > ...which means that all code using target_flags_explicit needs to be > cared for. > >> FWIW, I am testing this patch on i386 and powerpc right now. > > Please also test it on at least the targets I reported breakages on.
Yes, I do not intend to let any other patch fixing this go in without having it explicitly tested on all targets. I am first trying to see if this patch will work at all with i386 and powerpc. > Have a look here: > > http://toolchain.lug-owl.de/buildbot/?limit=1500 > http://toolchain.lug-owl.de/buildbot/timeline.php?limit=1500 > > Generally, if you're looking for targets that are at least somewhat > supported, you find a good list to start with at > contrib/config-list.mk . > > MfG, JBG > > -- > Jan-Benedict Glaw jbg...@lug-owl.de +49-172-7608481 > Signature of: Wenn ich wach bin, träume ich. > the second :