Summary: | [4.0/4.1 regression] ICE in ia64_expand_move, at config/ia64/ia64.c:1088 | ||
---|---|---|---|
Product: | gcc | Reporter: | Martin Michlmayr <tbm> |
Component: | target | Assignee: | Not yet assigned to anyone <unassigned> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | debian-gcc, gcc-bugs, mmitchel, pinskia, rguenth, sje, wilson |
Priority: | P1 | Keywords: | ice-on-valid-code |
Version: | 4.2.0 | ||
Target Milestone: | 4.0.4 | ||
See Also: | https://gcc.gnu.org/bugzilla/show_bug.cgi?id=42040 | ||
Host: | Target: | ia64-linux-gnu | |
Build: | Known to work: | 3.3.6 3.4.6 | |
Known to fail: | 4.0.3 4.1.1 | Last reconfirmed: | 2006-07-26 08:06:35 |
Attachments: |
test case
test case test case test case test case for 4.0, 4.1 and 4.2 Oops! Wrong bug. |
Description
Martin Michlmayr
2006-07-26 05:39:18 UTC
Created attachment 11944 [details]
test case
This has started to occur sometime between 20051122 and 20060218. Confirmed. Created attachment 11945 [details]
test case
Testcase from application dcraw
Created attachment 11946 [details]
test case
Testcase from application dump
Created attachment 11952 [details]
test case
Testcase from application "yorick".
This bug is also present in gcc 4.0 and 4.1 even though my original testcase didn't expose it there. My new one does: tbm@coconut0:~$ gcc-4.0 -c -O ecl-asdf.c ecl-asdf.c: In function 'LC67traverse': ecl-asdf.c:81: internal compiler error: in ia64_expand_move, at config/ia64/ia64.c:1004 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions. For Debian GNU/Linux specific bug reporting instructions, see <URL:file:///usr/share/doc/gcc-4.0/README.Bugs>. tbm@coconut0:~$ gcc-4.1 -c -O ecl-asdf.c ecl-asdf.c: In function 'LC67traverse': ecl-asdf.c:81: internal compiler error: in ia64_expand_move, at config/ia64/ia64.c:1052 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions. For Debian GNU/Linux specific bug reporting instructions, see <URL:file:///usr/share/doc/gcc-4.1/README.Bugs>. Preprocessed source stored into /tmp/ccQbxgpQ.out file, please attach this to your bugreport. tbm@coconut0:~$ /usr/lib/gcc-snapshot/bin/gcc -c -O ecl-asdf.c ecl-asdf.c: In function 'LC67traverse': ecl-asdf.c:81: internal compiler error: in ia64_expand_move, at config/ia64/ia64.c:1088 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions. This is with: 4.0.4 20060630 4.1.2 20060715 4.2.0 20060721 Created attachment 11980 [details]
test case for 4.0, 4.1 and 4.2
Testcase from application "ecl".
Reduced testcase from comment #8 typedef union cl_lispunion *cl_object; union cl_lispunion { cl_object cons; }; typedef union { cl_object data; } cl_symbol_initializer; extern cl_symbol_initializer cl_symbols[]; extern void cl_funcall (cl_object); extern int _setjmp(vois); void LC67traverse (cl_object *lex0) { cl_object T0; cl_funcall ((cl_object) (cl_symbols + 1)); if (_setjmp ()) ; if (lex0[0] == (cl_object) cl_symbols) goto L791; T0 = ((cl_object) (cl_symbols + 1)); L791:; cl_funcall (T0); } Why is this a P1 regression? ia-64 is not a primary platform. Subject: Re: [4.0/4.1/4.2 regression] ICE in ia64_expand_move,
at config/ia64/ia64.c:1088
steven at gcc dot gnu dot org wrote:
> Why is this a P1 regression? ia-64 is not a primary platform.
True -- but IA64 is a secondary platform, and this looks like relatively
straightforward code. I think it's important.
If we get all the other P1s done, we can argue about whether or not to
ship the compiler. :-)
Created attachment 11996 [details]
Oops! Wrong bug.
*** Bug 28495 has been marked as a duplicate of this bug. *** Steve Ellcey posted a patch here: http://gcc.gnu.org/ml/gcc-patches/2006-08/msg00016.html I posted a better patch here: http://gcc.gnu.org/ml/gcc-patches/2006-08/msg00054.html This patch has not been tested yet. There are also some follow up questions raised in this thread that need to be answered. (In reply to comment #14) > Steve Ellcey posted a patch here: > http://gcc.gnu.org/ml/gcc-patches/2006-08/msg00016.html > I posted a better patch here: > http://gcc.gnu.org/ml/gcc-patches/2006-08/msg00054.html > This patch has not been tested yet. > > There are also some follow up questions raised in this thread that need to be > answered. Steve, are you working on clarifying those new questions? Yes, I did some performance measurements with SPEC2000. Allowing any (symbol + offset) resulted in slightly slower code overall, allowing no (symbol + offset) resulted in slightly faster code overall. I will be submitting a patch to do this but probably not until next week. Subject: Bug 28490 Author: wilson Date: Fri Sep 15 23:05:40 2006 New Revision: 116983 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=116983 Log: Short term fix for PR 28490. * config/ia64/ia64.c (ia64_legitimate_constant_p, cast CONST): Handle symbol offsets same as they are handled in ia64_expand_move and move_operand. Modified: trunk/gcc/ChangeLog trunk/gcc/config/ia64/ia64.c worked around for 4.2.0 so no longer a regression. Subject: Bug 28490 Author: sje Date: Tue Sep 19 16:09:48 2006 New Revision: 117057 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=117057 Log: PR 28490 * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow function pointers as legitimate constants. Modified: trunk/gcc/ChangeLog trunk/gcc/config/ia64/ia64.c Subject: Bug 28490 Author: sje Date: Mon Oct 9 18:24:32 2006 New Revision: 117582 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=117582 Log: PR target/28490 Backport from mainline 2006-09-15 Jim Wilson <wilson@specifix.com> 2006-09-19 Steve Ellcey <sje@cup.hp.com> * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow function pointers as legitimate constants. Handle symbol offsets same as they are handled in ia64_expand_move and move_operand. Modified: branches/gcc-4_1-branch/gcc/ChangeLog branches/gcc-4_1-branch/gcc/config/ia64/ia64.c Subject: Bug 28490 Author: sje Date: Mon Oct 9 18:26:35 2006 New Revision: 117583 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=117583 Log: PR target/28490 Backport from mainline 2006-09-15 Jim Wilson <wilson@specifix.com> 2006-09-19 Steve Ellcey <sje@cup.hp.com> * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow function pointers as legitimate constants. Handle symbol offsets same as they are handled in ia64_expand_move and move_operand. Modified: branches/gcc-4_0-branch/gcc/ChangeLog branches/gcc-4_0-branch/gcc/config/ia64/ia64.c Backported the change to 4.1 and 4.0 branches. Closing as fixed. |