Using crosstool-0.34, building glibc-2.3.5 on sh4 is ok with gcc-3.4.3, fails with gcc-4.0.0. The attached reduced testcase shows the error: foo2.i: In function 'plural_eval': foo2.i:78: error: insn does not satisfy its constraints: (insn 190 188 275 24 (set (reg/v:SI 76 fr12 [orig:169 n ] [169]) (reg:SI 147 t)) 129 {movsi_ie} (insn_list:REG_DEP_TRUE 188 (nil)) (nil)) foo2.i:78: internal compiler error: in reload_cse_simplify_operands, at postreload.c:391
Created attachment 8911 [details] reduced source from glibc-2.3.5
*** Bug 22246 has been marked as a duplicate of this bug. ***
This PR was discussed at the thread of gcc-patches list statring with http://gcc.gnu.org/ml/gcc-patches/2005-09/msg01527.html and Joern pointed out that we must improve the reload infrastrucure to fix this PR. There is an argument about whether it's appropriate for stage3 or not. I've checked in the patch in http://gcc.gnu.org/ml/gcc-patches/2005-09/msg01952.html as a temporary workwround on mainline and 4.0-branch under Joern's approval. It gets rid of the ICEs for the testcase, though it doesn't fix the real problem. So please don't close this PR ATM.
Subject: Bug 21623 Author: amylaar Date: Tue Nov 22 22:57:35 2005 New Revision: 107381 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=107381 Log: Preparatory work for PR target/21623: * alpha.c (secondary_reload_class): Rename to: (alpha_secondary_reload_class). * alpha.h, alpha-protos.h: Likewise. * mn10300.c (secondary_reload_class): Rename to: (mn10300_secondary_reload_class). * mn10300.h, mn10300-protos.h: Likewise. * pa.c (secondary_reload_class): Rename to: (pa_secondary_reload_class). * pa.h, pa-protos.h: Likewise. * rs6000.c (secondary_reload_class): Rename to: rs6000_secondary_reload_class. * rs6000.h, rs6000-protos.h: Likewise. Modified: trunk/gcc/ChangeLog trunk/gcc/config/alpha/alpha-protos.h trunk/gcc/config/alpha/alpha.c trunk/gcc/config/alpha/alpha.h trunk/gcc/config/mn10300/mn10300-protos.h trunk/gcc/config/mn10300/mn10300.c trunk/gcc/config/mn10300/mn10300.h trunk/gcc/config/pa/pa-protos.h trunk/gcc/config/pa/pa.c trunk/gcc/config/pa/pa.h trunk/gcc/config/rs6000/rs6000-protos.h trunk/gcc/config/rs6000/rs6000.c trunk/gcc/config/rs6000/rs6000.h
Subject: Bug 21623 Author: amylaar Date: Thu Nov 24 18:55:53 2005 New Revision: 107468 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=107468 Log: PR target/21623: * regclass.c (FORBIDDEN_INC_DEC_CLASSES): Remove SECONDARY_INPUT_RELOAD_CLASS and SECONDARY_OUTPUT_RELOAD_CLASS tests. (init_fake_stack_mems): Remove HAVE_SECONDARY_RELOADS test. (memory_move_secondary_cost, init_reg_autoinc): Remove SECONDARY_INPUT_RELOAD_CLASS / SECONDARY_OUTPUT_RELOAD_CLASS tests. Replace SECONDARY_{IN,OUT}PUT_RELOAD_CLASS use with secondary_reload_class call. (copy_cost): Likewise. Add new parameter prev_sri. Changed all callers. * reload.c (entire file): Remove HAVE_SECONDARY_RELOADS checks. (push_secondary_reload): Use secondary_reload target hook. (secondary_reload_class, scratch_reload_class): New functions. (push_reload): Remove SECONDARY_INPUT_RELOAD_CLASS and SECONDARY_OUTPUT_RELOAD_CLASS tests. Replace SECONDARY_{IN,OUT}PUT_RELOAD_CLASS use with secondary_reload_class call. * reload.h (HAVE_SECONDARY_RELOADS): Don't define nor test. (secondary_reload_class, scratch_reload_class): Declare. * reload1.c: Include target.h. (reload_adjust_reg_for_temp): New function. (reload_adjust_reg_for_icode): Likewise. (choose_reload_regs): Remove SECONDARY_INPUT_RELOAD_CLASS test. Replace SECONDARY_INPUT_RELOAD_CLASS use with secondary_reload_class call. (emit_input_reload_insns): Likewise. Rewrite secondary reload checks for inheritance. Support case when both secondary & tertiary reloads are for intermediate registers. (emit_output_reload_insns): Replace SECONDARY_OUTPUT_RELOAD_CLASS use with secondary_reload_class call. Support case when both secondary & tertiary reloads are for intermediate registers. * target-def.h (TARGET_SECONDARY_RELOAD): Provide default definition. (TARGET_INITIALIZER) Add TARGET_SECONDARY_RELOAD. * target.h (secondary_reload_info): New struct / typedef. (struct gcc_target): New member secondary_reload. * targhooks.c Include reload.h, optabs.h and recog.h. (default_secondary_reload): New function. * targhooks.h (default_secondary_reload): Declare. * doc/tm.texi: Document secondary_reload target hook. Update description of SECONDARY_*RELOAD_CLASS and reload_{in,out}<mode>. * doc/md.texi: Likewise. * sh-protos.h (sh_secondary_reload): Declare. * sh.c (TARGET_SECONDARY_RELOAD): Override. (sh_secondary_reload): New function. * sh.h (SECONDARY_INOUT_RELOAD_CLASS): Don't define. (SECONDARY_OUTPUT_RELOAD_CLASS): Likewise. (SECONDARY_INPUT_RELOAD_CLASS): Likewise. (HAVE_SECONDARY_RELOADS): Define. * sh.md (reload_indf): Rename to: (reload_indf__frn). (reload_outdf): Rename to: (reload_outdf__RnFRm). (reload_insf): Rename to: (reload_insf__frn). (reload_insi): Rename to: (reload_insi__i_fpul). Modified: trunk/gcc/ChangeLog trunk/gcc/config/sh/sh-protos.h trunk/gcc/config/sh/sh.c trunk/gcc/config/sh/sh.h trunk/gcc/config/sh/sh.md trunk/gcc/doc/md.texi trunk/gcc/doc/tm.texi trunk/gcc/optabs.c trunk/gcc/regclass.c trunk/gcc/reload.c trunk/gcc/reload.h trunk/gcc/reload1.c trunk/gcc/target-def.h trunk/gcc/target.h trunk/gcc/targhooks.c trunk/gcc/targhooks.h
Confirmed, fixed at least on the mainline, this might be too hard to fix on the 4.1 branch.
Subject: Re: [4.0/4.1 regression] ICE in reload_cse_simplify_operands, at postreload.c:391 Andrew Pinski wrote: > Confirmed, fixed at least on the mainline, this might be too hard to fix on the > 4.1 branch. No, it is just a matter of what is desired for the branch. Mark, would you like me to backport the patch from mainline to the 4.1 branch? N.B. Kaz' cost adjustment is already in the branch, so the testcae doesn't trigger.
Subject: Re: [4.0/4.1 regression] ICE in reload_cse_simplify_operands, at postreload.c:391 Joern RENNECKE wrote: > No, it is just a matter of what is desired for the branch. Mark, would > you like > me to backport the patch from mainline to the 4.1 branch? I think this is too aggressive for the branch at this point. However, we might consider it for 4.1.1, if all goes well on the mainline; feel free to ask again after 4.1.0 is out. Thanks,
Will not be fixed in 4.1.1; adjust target milestone to 4.1.2.
Closing 4.1 branch.