public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug target/23095] New: ICE in regstack compensate_edge
@ 2005-07-27 16:21 steven at gcc dot gnu dot org
2005-07-27 16:31 ` [Bug target/23095] [4.1 Regression] " pinskia at gcc dot gnu dot org
` (7 more replies)
0 siblings, 8 replies; 9+ messages in thread
From: steven at gcc dot gnu dot org @ 2005-07-27 16:21 UTC (permalink / raw)
To: gcc-bugs
Hi,
GNU F95 version 4.1.0 20050727 (experimental) (x86_64-unknown-linux-gnu) gives
an ICE when compiling the following ugly but valid code (reduced from galgel):
============================================
function foo(n)
real*8 foo
integer ix, n, next
real*8 xmax, absx
foo = 0.0d0
assign 20 to next
do ix = 1,n
go to next,(10, 30)
10 assign 40 to next
go to 40
20 if (absx .gt. 8.232d-11) go to 40
30 if (absx .le. xmax) go to 40
xmax = absx
40 go to next,(10, 30)
end do
return
end
============================================
$ ./f951 -w -m32 -ffixed-form -O2 -ffloat-store lapak.f90
foo
Analyzing compilation unitPerforming intraprocedural optimizations
Assembling functions:
foo
lapak.f90: In function 'foo':
lapak.f90:16: internal compiler error: in compensate_edge, at reg-stack.c:2686
--
Summary: ICE in regstack compensate_edge
Product: gcc
Version: 4.1.0
Status: UNCONFIRMED
Keywords: ice-on-valid-code
Severity: normal
Priority: P2
Component: target
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: steven at gcc dot gnu dot org
CC: gcc-bugs at gcc dot gnu dot org,sayle at gcc dot gnu dot
org
GCC target triplet: i686-pc-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23095
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug target/23095] [4.1 Regression] ICE in regstack compensate_edge
2005-07-27 16:21 [Bug target/23095] New: ICE in regstack compensate_edge steven at gcc dot gnu dot org
@ 2005-07-27 16:31 ` pinskia at gcc dot gnu dot org
2005-07-27 19:20 ` steven at gcc dot gnu dot org
` (6 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2005-07-27 16:31 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From pinskia at gcc dot gnu dot org 2005-07-27 16:29 -------
Confirmed, a regression from 4.0.x.
--
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Ever Confirmed| |1
Known to fail| |4.1.0
Known to work| |4.0.2
Last reconfirmed|0000-00-00 00:00:00 |2005-07-27 16:29:56
date| |
Summary|ICE in regstack |[4.1 Regression] ICE in
|compensate_edge |regstack compensate_edge
Target Milestone|--- |4.1.0
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23095
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug target/23095] [4.1 Regression] ICE in regstack compensate_edge
2005-07-27 16:21 [Bug target/23095] New: ICE in regstack compensate_edge steven at gcc dot gnu dot org
2005-07-27 16:31 ` [Bug target/23095] [4.1 Regression] " pinskia at gcc dot gnu dot org
@ 2005-07-27 19:20 ` steven at gcc dot gnu dot org
2005-07-27 19:29 ` steven at gcc dot gnu dot org
` (5 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: steven at gcc dot gnu dot org @ 2005-07-27 19:20 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From steven at gcc dot gnu dot org 2005-07-27 19:15 -------
Roger, this appears to be caused by your patch:
* reg-stack.c (struct block_info_def): Correct grammar typo.
(compensate_edge): Clean-up. Perform as little work as possible
when src and dest stacks match. Avoid modifying block_info.
Reorder and simplify assertion checks. Avoid unnecessary copying
of regstack structure.
(convert_regs_1): Set the done flag here...
(convert_regs_2): ... instead of here.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23095
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug target/23095] [4.1 Regression] ICE in regstack compensate_edge
2005-07-27 16:21 [Bug target/23095] New: ICE in regstack compensate_edge steven at gcc dot gnu dot org
2005-07-27 16:31 ` [Bug target/23095] [4.1 Regression] " pinskia at gcc dot gnu dot org
2005-07-27 19:20 ` steven at gcc dot gnu dot org
@ 2005-07-27 19:29 ` steven at gcc dot gnu dot org
2005-07-27 19:34 ` steven at gcc dot gnu dot org
` (4 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: steven at gcc dot gnu dot org @ 2005-07-27 19:29 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From steven at gcc dot gnu dot org 2005-07-27 19:21 -------
I'm not sure why reg-stack wants to insert compensation code at all. The
reg-stack dump shows that st(0) is live-at-end in the source block of the
edge, but not live-at-start for the target block:
Analyzing compilation unitPerforming intraprocedural optimizations
Assembling functions:
foo
Breakpoint 1, fancy_abort (file=0xb92af8 "../../mainline/gcc/reg-stack.c",
line=2686,
function=0xb93230 "compensate_edge") at diagnostic.c:590
590 internal_error ("in %s, at %s:%d", function, trim_filename (file),
line);
(gdb) up
#1 0x000000000081098f in compensate_edge (e=0x2a95a6ef80, file=0xe3f6e0) at
reg-stack.c:2686
2686 gcc_assert (! (e->flags & EDGE_ABNORMAL));
(gdb) p debug_bb (e->src)
;; basic block 12, loop depth 1, count 0
;; prev block 11, next block 13
;; pred: 11 [100.0%] (fallthru,dfs_back,can_fallthru) 7 [19.0%]
(dfs_back,can_fallthru,irreducible) 6 [19.0%]
(dfs_back,can_fallthru,irreducible) 3 [35.4%] (can_fallthru)
;; succ: 6 [25.0%] (ab,irreducible) 14 [25.0%] (ab,irreducible) 13
[25.0%] (ab,irreducible) 5 [25.0%] (ab,irreducible)
;; Registers live at start: 1 [dx] 3 [bx] 4 [si] 5 [di] 6 [bp] 7 [sp] 20
[frame]
(code_label:HI 29 126 30 12 9 "" [3 uses])
(note:HI 30 29 125 12 [bb 12] NOTE_INSN_BASIC_BLOCK)
(insn:TI 125 30 139 12 (set (reg:DF 8 st)
(mem/i:DF (plus:SI (reg/f:SI 6 bp)
(const_int -32 [0xffffffffffffffe0])) [4 absx+0 S8 A32])) 93
{*movdf_nointeger} (nil)
(nil))
(insn:TI 139 125 31 12 (set (mem:DF (plus:SI (reg/f:SI 6 bp)
(const_int -40 [0xffffffffffffffd8])) [11 S8 A8])
(reg:DF 8 st)) 93 {*movdf_nointeger} (insn_list:REG_DEP_TRUE 125
(nil))
(nil))
(jump_insn:TI 31 139 32 12 (set (pc)
(reg/f:SI 1 dx [orig:59 gotovar.36 ] [59])) 525 {*indirect_jump}
(insn_list:REG_DEP_ANTI 125 (insn_list:REG_DEP_TRUE 139 (nil)))
(expr_list:REG_DEAD (reg/f:SI 1 dx [orig:59 gotovar.36 ] [59])
(nil)))
;; Registers live at end: 3 [bx] 4 [si] 5 [di] 6 [bp] 7 [sp] 8 [st] 20
[frame]
$10 = void
(gdb) p debug_bb (e->dest)
;; basic block 6, loop depth 1, count 0
;; prev block 5, next block 7
;; pred: 12 [25.0%] (ab,irreducible) 5 [100.0%]
(fallthru,can_fallthru) 13 [50.0%] (can_fallthru,irreducible) 14 [50.0%]
(can_fallthru,irreducible) 15 [100.0%] (can_fallthru,irreducible)
;; succ: 12 [19.0%] (dfs_back,can_fallthru,irreducible) 7 [81.0%]
(fallthru,can_fallthru,irreducible)
;; Registers live at start: 3 [bx] 4 [si] 5 [di] 6 [bp] 7 [sp] 20 [frame]
(code_label/s:HI 71 51 72 6 13 ("__label_000040") [6 uses])
(note:HI 72 71 118 6 [bb 6] NOTE_INSN_BASIC_BLOCK)
(insn:TI 118 72 75 6 (set (reg/f:SI 1 dx [orig:59 gotovar.36 ] [59])
(label_ref:SI 49)) 40 {*movsi_1} (nil)
(insn_list:REG_LABEL 49 (expr_list:REG_EQUAL (label_ref:SI 49)
(nil))))
(insn:TI 75 118 76 6 (set (reg:CCZ 17 flags)
(compare:CCZ (reg/f:SI 3 bx [orig:62 next.1 ] [62])
(reg:SI 1 dx))) 5 {*cmpsi_1_insn} (insn_list:REG_DEP_TRUE 118
(nil))
(nil))
(jump_insn:TI 76 75 78 6 (set (pc)
(if_then_else (eq (reg:CCZ 17 flags)
(const_int 0 [0x0]))
(label_ref 29)
(pc))) 509 {*jcc_1} (insn_list:REG_DEP_ANTI 118
(insn_list:REG_DEP_TRUE 75 (nil)))
(expr_list:REG_DEAD (reg:CCZ 17 flags)
(expr_list:REG_BR_PROB (const_int 1900 [0x76c])
(nil))))
;; Registers live at end: 1 [dx] 3 [bx] 4 [si] 5 [di] 6 [bp] 7 [sp] 20
[frame]
$11 = void
(gdb)
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23095
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug target/23095] [4.1 Regression] ICE in regstack compensate_edge
2005-07-27 16:21 [Bug target/23095] New: ICE in regstack compensate_edge steven at gcc dot gnu dot org
` (2 preceding siblings ...)
2005-07-27 19:29 ` steven at gcc dot gnu dot org
@ 2005-07-27 19:34 ` steven at gcc dot gnu dot org
2005-07-31 16:42 ` steven at gcc dot gnu dot org
` (3 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: steven at gcc dot gnu dot org @ 2005-07-27 19:34 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From steven at gcc dot gnu dot org 2005-07-27 19:32 -------
Actually the problem existed before that patch.
And so, the search continues...
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23095
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug target/23095] [4.1 Regression] ICE in regstack compensate_edge
2005-07-27 16:21 [Bug target/23095] New: ICE in regstack compensate_edge steven at gcc dot gnu dot org
` (3 preceding siblings ...)
2005-07-27 19:34 ` steven at gcc dot gnu dot org
@ 2005-07-31 16:42 ` steven at gcc dot gnu dot org
2005-07-31 16:55 ` steven at gcc dot gnu dot org
` (2 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: steven at gcc dot gnu dot org @ 2005-07-31 16:42 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From steven at gcc dot gnu dot org 2005-07-31 16:41 -------
I believe I've found the problem, and it is not Roger's fault. See my
message here: http://gcc.gnu.org/ml/gcc-patches/2005-07/msg02092.html.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23095
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug target/23095] [4.1 Regression] ICE in regstack compensate_edge
2005-07-27 16:21 [Bug target/23095] New: ICE in regstack compensate_edge steven at gcc dot gnu dot org
` (4 preceding siblings ...)
2005-07-31 16:42 ` steven at gcc dot gnu dot org
@ 2005-07-31 16:55 ` steven at gcc dot gnu dot org
2005-07-31 21:45 ` cvs-commit at gcc dot gnu dot org
2005-08-01 0:50 ` steven at gcc dot gnu dot org
7 siblings, 0 replies; 9+ messages in thread
From: steven at gcc dot gnu dot org @ 2005-07-31 16:55 UTC (permalink / raw)
To: gcc-bugs
--
What |Removed |Added
----------------------------------------------------------------------------
AssignedTo|unassigned at gcc dot gnu |steven at gcc dot gnu dot
|dot org |org
Status|NEW |ASSIGNED
Last reconfirmed|2005-07-27 16:29:56 |2005-07-31 16:49:59
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23095
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug target/23095] [4.1 Regression] ICE in regstack compensate_edge
2005-07-27 16:21 [Bug target/23095] New: ICE in regstack compensate_edge steven at gcc dot gnu dot org
` (5 preceding siblings ...)
2005-07-31 16:55 ` steven at gcc dot gnu dot org
@ 2005-07-31 21:45 ` cvs-commit at gcc dot gnu dot org
2005-08-01 0:50 ` steven at gcc dot gnu dot org
7 siblings, 0 replies; 9+ messages in thread
From: cvs-commit at gcc dot gnu dot org @ 2005-07-31 21:45 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From cvs-commit at gcc dot gnu dot org 2005-07-31 21:45 -------
Subject: Bug 23095
CVSROOT: /cvs/gcc
Module name: gcc
Changes by: steven@gcc.gnu.org 2005-07-31 21:45:44
Modified files:
gcc : ChangeLog common.opt postreload-gcse.c
gcc/testsuite : ChangeLog
Added files:
gcc/testsuite/g++.dg/other: pr22003.C
gcc/testsuite/gfortran.dg: pr23095.f
Log message:
PR target/23095
* common.opt (flag_gcse_after_reload): Don't initialize to 2.
(flag_rerun_cse_after_loop): Initialize this to 2 instead.
* postreload-gcse.c (hash_scan_set): Do not consider stack regs.
testsuite/
PR target/23095
* gfortran.dg/pr23095.f: New test.
PR c++/22003
* g++.dg/other/pr22003.C: New test.
Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.9618&r2=2.9619
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/common.opt.diff?cvsroot=gcc&r1=1.84&r2=1.85
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/postreload-gcse.c.diff?cvsroot=gcc&r1=2.19&r2=2.20
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&r1=1.5860&r2=1.5861
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/other/pr22003.C.diff?cvsroot=gcc&r1=NONE&r2=1.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/pr23095.f.diff?cvsroot=gcc&r1=NONE&r2=1.1
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23095
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug target/23095] [4.1 Regression] ICE in regstack compensate_edge
2005-07-27 16:21 [Bug target/23095] New: ICE in regstack compensate_edge steven at gcc dot gnu dot org
` (6 preceding siblings ...)
2005-07-31 21:45 ` cvs-commit at gcc dot gnu dot org
@ 2005-08-01 0:50 ` steven at gcc dot gnu dot org
7 siblings, 0 replies; 9+ messages in thread
From: steven at gcc dot gnu dot org @ 2005-08-01 0:50 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From steven at gcc dot gnu dot org 2005-08-01 00:49 -------
Nothing is worth more than this day -- Goethe
--
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |RESOLVED
Resolution| |FIXED
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23095
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2005-08-01 0:50 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-07-27 16:21 [Bug target/23095] New: ICE in regstack compensate_edge steven at gcc dot gnu dot org
2005-07-27 16:31 ` [Bug target/23095] [4.1 Regression] " pinskia at gcc dot gnu dot org
2005-07-27 19:20 ` steven at gcc dot gnu dot org
2005-07-27 19:29 ` steven at gcc dot gnu dot org
2005-07-27 19:34 ` steven at gcc dot gnu dot org
2005-07-31 16:42 ` steven at gcc dot gnu dot org
2005-07-31 16:55 ` steven at gcc dot gnu dot org
2005-07-31 21:45 ` cvs-commit at gcc dot gnu dot org
2005-08-01 0:50 ` steven at gcc dot gnu dot org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).