Bug 48250 - ICE in reload_cse_simplify_operands, at postreload.c:403
Summary: ICE in reload_cse_simplify_operands, at postreload.c:403
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: target (show other bugs)
Version: 4.7.0
: P3 normal
Target Milestone: 4.7.0
Assignee: Ramana Radhakrishnan
URL:
Keywords: ice-on-valid-code
Depends on:
Blocks:
 
Reported: 2011-03-23 11:06 UTC by Andrew Stubbs
Modified: 2013-08-05 20:42 UTC (History)
3 users (show)

See Also:
Host:
Target: arm-linux-gnueabi
Build:
Known to work: 4.5.3
Known to fail: 4.6.0, 4.7.0
Last reconfirmed: 2011-03-24 14:34:13


Attachments
Reduced testcase. (223 bytes, application/octet-stream)
2011-03-23 11:06 UTC, Andrew Stubbs
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Andrew Stubbs 2011-03-23 11:06:27 UTC
Created attachment 23755 [details]
Reduced testcase.

Using a trunk (svn 171251) compiler, configured for ARMv7-a, I get the following ICE:

gcc -marm -mfpu=neon -O2 -c lp723185.i 

lp723185.i: In function 'foo':
lp723185.i:29:1: error: insn does not satisfy its constraints:
(insn 30 79 31 5 (set (mem/s:DI (plus:SI (reg:SI 3 r3)
                (const_int -3 [0xfffffffffffffffd])) [4 unaligned_S_6->u64+0 S8 A64])
        (reg:DI 4 r4 [146])) lp723185.i:25 626 {*arm_movdi_vfp}
     (nil))
lp723185.i:29:1: internal compiler error: in reload_cse_simplify_operands, at postreload.c:403
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.


It's possible that this is the same as bug #42949, but I'm not qualified to judge.
Comment 1 Ian Bolton 2011-03-24 14:34:13 UTC
Confirmed on trunk, r171212.

Works on latest 4.5 (r171282).

I don't think this is the same bug as PR42949 because that one has now ceased to occur - for me at least.
Comment 2 Chung-Lin Tang 2011-04-12 04:43:01 UTC
Author: cltang
Date: Tue Apr 12 04:42:55 2011
New Revision: 172297

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=172297
Log:
2011-04-11  Chung-Lin Tang  <cltang@codesourcery.com>
	    Richard Earnshaw  <rearnsha@arm.com>

	PR target/48250
	* config/arm/arm.c (arm_legitimize_reload_address): Update cases
	to use sign-magnitude offsets. Reject unsupported unaligned
	cases. Add detailed description in comments.
	* config/arm/arm.md (reload_outdf): Disable for ARM mode; change
	condition from TARGET_32BIT to TARGET_ARM.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/arm/arm.c
    trunk/gcc/config/arm/arm.md
Comment 3 Ramana Radhakrishnan 2011-06-03 19:34:06 UTC
Fixed on trunk . 

Needs backporting to 4.6 branch.

Ramana
Comment 4 Ramana Radhakrishnan 2011-06-04 08:22:32 UTC
A backport to 4.6 shows the following failures -

arm-sim: gcc.c-torture/execute/loop-ivopts-2.c compilation,  -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions  (internal compiler error)
arm-sim: gcc.c-torture/execute/loop-ivopts-2.c compilation,  -O3 -fomit-frame-pointer -funroll-loops  (internal compiler error)
arm-sim: gcc.c-torture/execute/loop-ivopts-2.c compilation,  -O3 -fomit-frame-pointer  (internal compiler error)
arm-sim: gcc.c-torture/execute/loop-ivopts-2.c compilation,  -O3 -g  (internal compiler error)
arm-sim: gcc.c-torture/execute/pr23135.c compilation,  -O1  (internal compiler error)

 I'll dig further when I have a little more time

ackport-test-armv7aneon/gcc3/gcc/ /home/ramana/cross-build/src/gcc-workarea-2/gcc.c-torture/execute/loop-ivopts-2.c gcc_tg.o  -w  -O3 -fomit-frame-pointer  -DSTACK_SIZE=16384       -Wl,-wrap,exit -Wl,-wrap,_exit -Wl,-wrap,main -Wl,-wrap,abort -lm   -o /home/ramana/cross-build/arm-none-linux-gnueabi/obj-gcc46-backport-test-armv7aneon/gcc3/gcc/testsuite/gcc2/loop-ivopts-2.x3    (timeout = 800)
/home/ramana/cross-build/src/gcc-workarea-2/gcc/testsuite/gcc.c-torture/execute/loop-ivopts-2.c: In function ‘main’:
/home/ramana/cross-build/src/gcc-workarea-2/gcc/testsuite/gcc.c-torture/execute/loop-ivopts-2.c:49:1: error: insn does not satisfy its constraints:
(insn 123 122 67 6 (set (mem/s/c:V2SI (plus:SI (reg:SI 1 r1)
                (const_int -1016 [0xfffffffffffffc08])) [2 MEM[(unsigned int[288] *)&l + 1032B]+0 S8 A64])
        (reg:V2SI 2 r2)) /home/ramana/cross-build/src/gcc-workarea-2/gcc/testsuite/gcc.c-torture/execute/loop-ivopts-2.c:44 742 {*neon_movv2si}
     (nil))
Comment 5 Chung-Lin Tang 2011-06-05 14:12:03 UTC
I was not able to reproduce these ICEs, tried backporting to both mainline gcc-4_6-branch and a latest Linaro 4.6 pull.
Comment 6 jye2 2011-09-19 06:17:55 UTC
Author: jye2
Date: Mon Sep 19 06:17:45 2011
New Revision: 178953

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=178953
Log:
2011-09-19  chengbin  <bin.cheng@arm.com>

	Backport r174035 from mainline
	2011-05-22  Tom de Vries  <tom@codesourcery.com>

	PR middle-end/48689
	* fold-const.c (fold_checksum_tree): Guard TREE_CHAIN use with
	CODE_CONTAINS_STRUCT (TS_COMMON).

	Backport r172297 from mainline
	2011-04-11  Chung-Lin Tang  <cltang@codesourcery.com>
		Richard Earnshaw  <rearnsha@arm.com>

	PR target/48250
	* config/arm/arm.c (arm_legitimize_reload_address): Update cases
	to use sign-magnitude offsets. Reject unsupported unaligned
	cases. Add detailed description in comments.
	* config/arm/arm.md (reload_outdf): Disable for ARM mode; change
	condition from TARGET_32BIT to TARGET_ARM.

	Backport r171978 from mainline
	2011-04-05  Tom de Vries  <tom@codesourcery.com>

	PR target/43920
	* config/arm/arm.h (BRANCH_COST): Set to 1 for Thumb-2 when optimizing
	for size.

	Backport r171632 from mainline
	2011-03-28  Richard Sandiford  <richard.sandiford@linaro.org>

	* builtins.c (expand_builtin_memset_args): Use gen_int_mode
	instead of GEN_INT.

	Backport r171379 from mainline
	2011-03-23  Chung-Lin Tang  <cltang@codesourcery.com>

	PR target/46934
	* config/arm/arm.md (casesi): Use the gen_int_mode() function
	to subtract lower bound instead of GEN_INT().

	Backport r171251 from mainline 
	2011-03-21  Daniel Jacobowitz  <dan@codesourcery.com>

	* config/arm/unwind-arm.c (__gnu_unwind_pr_common): Correct test
	for barrier handlers.

	Backport r171096 from mainline
	2011-03-17  Chung-Lin Tang  <cltang@codesourcery.com>

	PR target/43872
	* config/arm/arm.c (arm_get_frame_offsets): Adjust early
	return condition with !cfun->calls_alloca.


Modified:
    branches/ARM/embedded-4_6-branch/gcc/ChangeLog.arm
    branches/ARM/embedded-4_6-branch/gcc/builtins.c
    branches/ARM/embedded-4_6-branch/gcc/config/arm/arm.c
    branches/ARM/embedded-4_6-branch/gcc/config/arm/arm.h
    branches/ARM/embedded-4_6-branch/gcc/config/arm/arm.md
    branches/ARM/embedded-4_6-branch/gcc/config/arm/unwind-arm.c
    branches/ARM/embedded-4_6-branch/gcc/fold-const.c
    branches/ARM/embedded-4_6-branch/gcc/testsuite/gcc.target/arm/pr40887.c
    branches/ARM/embedded-4_6-branch/gcc/testsuite/gcc.target/arm/pr42575.c
    branches/ARM/embedded-4_6-branch/gcc/testsuite/gcc.target/arm/pr43698.c
    branches/ARM/embedded-4_6-branch/gcc/testsuite/gcc.target/arm/pr44788.c
    branches/ARM/embedded-4_6-branch/gcc/testsuite/gcc.target/arm/sync-1.c
Comment 7 Ramana Radhakrishnan 2013-08-05 20:42:26 UTC
Fixed on 4.7.0 - wont fix on 4.6.x