https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55212
--- Comment #378 from John Paul Adrian Glaubitz <glaubitz at physik dot fu-berlin.de> --- (In reply to Oleg Endo from comment #375) > (In reply to Kazumoto Kojima from comment #374) > > Created attachment 59286 [details] > > a patch for c#367 > > > > We use movsf_ie as a fall-back for for moving fp-reg from/to multiword > > subreg in 59190. Looks this confuses LRA with the SI mode scratch > > constrained to "y". > > > > The patch uses a new pattern instead of movsf_ie. It's a mini movsf_ie in a > > sense but with the SFmode scratch. > > > > Tested only with target libgcc/libstdc++v3 build and c testsuite. > > I've updated my branch https://github.com/olegendo/gcc/commits/devel/sh-lra/ > > * Merged the patch from comment #374 into the commit "SH: Try to workaround > fp-reg related move insns pt.2". > > * Tidied up the other patches on the stash a bit (add/fix commit messages, > ..) > > * The patch "SH: Tighten memory predicates and constraints" now seems to > work without LRA. At least the testsuite on sh-sim for the common variants > shows no new failures. My plan is to merge this commit into mainline soon, > as a start. > > Briefly confirmed that the previous problematic cases mentioned here still > work with it (will add them to the testsuite eventually). Also confirmed > that sh-elf / newlib toolchain and target libs can build OK. Testsuite > results pending. Hope I didn't miss anything, please re-confirm if you have > a chance. I just tried a full bootstrap using that tree with all languages but Rust and Go enabled and it fails with: during RTL pass: subreg3 ../../gcc/ipa-sra.cc: In function 'void {anonymous}::isra_read_edge_summary(lto_input_block*, cgraph_edge*)': ../../gcc/ipa-sra.cc:2933:1: internal compiler error: in decompose_multiword_subregs, at lower-subreg.cc:1731 2933 | } | ^ /home/glaubitz/gcc-oleg/build/./prev-gcc/xg++ -B/home/glaubitz/gcc-oleg/build/./prev-gcc/ -B/usr/local/sh4-unknown-linux-gnu/bin/ -nostdinc++ -B/home/glaubitz/gcc-oleg/build/prev-sh4-unknown-linux-gnu/libstdc++-v3/src/.libs -B/home/glaubitz/gcc-oleg/build/prev-sh4-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs -I/home/glaubitz/gcc-oleg/build/prev-sh4-unknown-linux-gnu/libstdc++-v3/include/sh4-unknown-linux-gnu -I/home/glaubitz/gcc-oleg/build/prev-sh4-unknown-linux-gnu/libstdc++-v3/include -I/home/glaubitz/gcc-oleg/libstdc++-v3/libsupc++ -L/home/glaubitz/gcc-oleg/build/prev-sh4-unknown-linux-gnu/libstdc++-v3/src/.libs -L/home/glaubitz/gcc-oleg/build/prev-sh4-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs -fPIC -c -g -O2 -fno-checking -gtoggle -DIN_GCC -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-error=narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -Wconditionally-supported -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -DHAVE_CONFIG_H -fPIC -I. -Irtl-ssa -I../../gcc -I../../gcc/rtl-ssa -I../../gcc/../include -I../../gcc/../libcpp/include -I../../gcc/../libcody -I../../gcc/../libdecnumber -I../../gcc/../libdecnumber/dpd -I../libdecnumber -I../../gcc/../libbacktrace -o rtl-ssa/functions.o -MT rtl-ssa/functions.o -MMD -MP -MF rtl-ssa/.deps/functions.TPo ../../gcc/rtl-ssa/functions.cc 0x3560f93 internal_error(char const*, ...) ../../gcc/diagnostic-global-context.cc:517 0x35261e3 fancy_abort(char const*, int, char const*) ../../gcc/diagnostic.cc:1512 0x32a5bcf decompose_multiword_subregs ../../gcc/lower-subreg.cc:1731 0x32a625f execute ../../gcc/lower-subreg.cc:1894 Please submit a full bug report, with preprocessed source (by using -freport-bug). Please include the complete backtrace with any bug report. Will test Kaz's patch seprately applied to sh-lra-take3.