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).