Bug 21623 - [4.1 regression] ICE in reload_cse_simplify_operands, at postreload.c:391
Summary: [4.1 regression] ICE in reload_cse_simplify_operands, at postreload.c:391
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: target (show other bugs)
Version: 4.0.0
: P5 normal
Target Milestone: 4.2.0
Assignee: Not yet assigned to anyone
URL:
Keywords: ice-on-valid-code
: 22246 (view as bug list)
Depends on:
Blocks:
 
Reported: 2005-05-17 14:32 UTC by dank
Modified: 2008-07-04 15:07 UTC (History)
5 users (show)

See Also:
Host:
Target: sh4-*-linux-gnu
Build:
Known to work: 4.2.0
Known to fail: 4.0.4 4.1.3
Last reconfirmed: 2006-01-29 00:29:13


Attachments
reduced source from glibc-2.3.5 (459 bytes, text/plain)
2005-05-17 14:33 UTC, dank
Details

Note You need to log in before you can comment on or make changes to this bug.
Description dank 2005-05-17 14:32:43 UTC
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
Comment 1 dank 2005-05-17 14:33:49 UTC
Created attachment 8911 [details]
reduced source from glibc-2.3.5
Comment 2 Andrew Pinski 2005-06-30 12:11:56 UTC
*** Bug 22246 has been marked as a duplicate of this bug. ***
Comment 3 Kazumoto Kojima 2005-10-03 22:28:37 UTC
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.
Comment 4 Jorn Wolfgang Rennecke 2005-11-22 22:57:44 UTC
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

Comment 5 Jorn Wolfgang Rennecke 2005-11-24 18:56:02 UTC
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

Comment 6 Andrew Pinski 2006-01-29 00:29:13 UTC
Confirmed, fixed at least on the mainline, this might be too hard to fix on the 4.1 branch.
Comment 7 joern.rennecke@st.com 2006-02-13 22:02:14 UTC
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.
 


Comment 8 Mark Mitchell 2006-02-14 01:21:38 UTC
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,

Comment 9 Mark Mitchell 2006-05-25 02:36:04 UTC
Will not be fixed in 4.1.1; adjust target milestone to 4.1.2.
Comment 10 Joseph S. Myers 2008-07-04 15:07:47 UTC
Closing 4.1 branch.