public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/55862] New: ICE in compute_antic, at tree-ssa-pre.c:2495
@ 2013-01-03 14:13 antoine.balestrat at gmail dot com
  2013-01-03 16:20 ` [Bug tree-optimization/55862] [4.8 Regression] " rguenth at gcc dot gnu.org
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: antoine.balestrat at gmail dot com @ 2013-01-03 14:13 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55862

             Bug #: 55862
           Summary: ICE in compute_antic, at tree-ssa-pre.c:2495
    Classification: Unclassified
           Product: gcc
           Version: 4.8.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: antoine.balestrat@gmail.com


Hi ! The following testcase makes GCC 4.8.0 as of 20130103 crash at -O2.
It may be related to PR55348 (which was probably a dup anyway).

$ cat antic.c
int g, a, *b;

void f(void)
{
    int *p;

    if(g)
    {
        int **k = &p;

        if(0)
        {
            while(g++)
                for(*b = 0; *b; b++)
label1:
                    ;
        }

        for(; g; p++)
            for(a = 0; a < 1; a++)
            {
                int *c = p;
label2:
                if(a < 1)
                    *c = 0;
            }

        goto label1;
    }

    goto label2;
}

$ xgcc -O2 -w antic.c
antic.c: In function ‘f’:
antic.c:3:6: internal compiler error: in compute_antic, at tree-ssa-pre.c:2495
 void f(void)
      ^
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug tree-optimization/55862] [4.8 Regression] ICE in compute_antic, at tree-ssa-pre.c:2495
  2013-01-03 14:13 [Bug tree-optimization/55862] New: ICE in compute_antic, at tree-ssa-pre.c:2495 antoine.balestrat at gmail dot com
@ 2013-01-03 16:20 ` rguenth at gcc dot gnu.org
  2013-01-04 11:59 ` rguenth at gcc dot gnu.org
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: rguenth at gcc dot gnu.org @ 2013-01-03 16:20 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55862

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |ASSIGNED
   Last reconfirmed|                            |2013-01-03
      Known to work|                            |4.7.3
         AssignedTo|unassigned at gcc dot       |rguenth at gcc dot gnu.org
                   |gnu.org                     |
   Target Milestone|---                         |4.8.0
            Summary|ICE in compute_antic, at    |[4.8 Regression] ICE in
                   |tree-ssa-pre.c:2495         |compute_antic, at
                   |                            |tree-ssa-pre.c:2495
     Ever Confirmed|0                           |1

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> 2013-01-03 16:19:41 UTC ---
Mine.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug tree-optimization/55862] [4.8 Regression] ICE in compute_antic, at tree-ssa-pre.c:2495
  2013-01-03 14:13 [Bug tree-optimization/55862] New: ICE in compute_antic, at tree-ssa-pre.c:2495 antoine.balestrat at gmail dot com
  2013-01-03 16:20 ` [Bug tree-optimization/55862] [4.8 Regression] " rguenth at gcc dot gnu.org
@ 2013-01-04 11:59 ` rguenth at gcc dot gnu.org
  2013-01-04 13:29 ` rguenth at gcc dot gnu.org
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: rguenth at gcc dot gnu.org @ 2013-01-04 11:59 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55862

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> 2013-01-04 11:59:42 UTC ---
For BB 7 we iterate between

(gdb) call debug_bitmap_set (old)
debug[0] := { {mem_ref<0B>,addr_expr<&g>}@.MEM_7 (0018), {plus_expr,g.0_18,1}
(0031), {plus_expr,g.4_37,1} (0046), {mem_ref<0B>,addr_expr<&b>}@.MEM_7 (0049),
{pointer_plus_expr,pretmp_45,4} (0050) }
(gdb) call debug_bitmap_set (((bb_value_sets_t) ((block)->aux))->antic_in)
debug[0] := { p_25 (0024), {mem_ref<0B>,addr_expr<&g>}@.MEM_7 (0018),
{plus_expr,g.0_18,1} (0031), {plus_expr,g.4_37,1} (0046),
{mem_ref<0B>,addr_expr<&b>}@.MEM_7 (0049), {pointer_plus_expr,pretmp_45,4}
(0050) }

(gdb) call debug_bitmap_set (old)
debug[0] := { p_25 (0024), {mem_ref<0B>,addr_expr<&g>}@.MEM_7 (0018),
{plus_expr,g.0_18,1} (0031), {plus_expr,g.4_37,1} (0046),
{mem_ref<0B>,addr_expr<&b>}@.MEM_7 (0049), {pointer_plus_expr,pretmp_45,4}
(0050) }
(gdb) call debug_bitmap_set (((bb_value_sets_t) ((block)->aux))->antic_in)
debug[0] := { {mem_ref<0B>,addr_expr<&g>}@.MEM_7 (0018), {plus_expr,g.0_18,1}
(0031), {plus_expr,g.4_37,1} (0046), {mem_ref<0B>,addr_expr<&b>}@.MEM_7 (0049),
{pointer_plus_expr,pretmp_45,4} (0050) }

(gdb) call debug_bitmap_set (old)
debug[0] := { {mem_ref<0B>,addr_expr<&g>}@.MEM_7 (0018), {plus_expr,g.0_18,1}
(0031), {plus_expr,g.4_37,1} (0046), {mem_ref<0B>,addr_expr<&b>}@.MEM_7 (0049),
{pointer_plus_expr,pretmp_45,4} (0050) }
(gdb) call debug_bitmap_set (((bb_value_sets_t) ((block)->aux))->antic_in)
debug[0] := { p_25 (0024), {mem_ref<0B>,addr_expr<&g>}@.MEM_7 (0018),
{plus_expr,g.0_18,1} (0031), {plus_expr,g.4_37,1} (0046),
{mem_ref<0B>,addr_expr<&b>}@.MEM_7 (0049), {pointer_plus_expr,pretmp_45,4}
(0050) }

The CFG is quite complicated ... easier to read testcase:

int g, a, *b;

void f(void)
{
  int *p;

  if(g)
    {
      int **k = &p;

      for(; g; p++)
        for(a = 0; a < 1; a++)
          {
            int *c = p;
label2:
            if(a < 1)
              *c = 0;
          }

      goto label1;

      while(g++)
        for(*b = 0; *b; b++)
          label1:
              ;
    }

  goto label2;
}

I have a patch.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug tree-optimization/55862] [4.8 Regression] ICE in compute_antic, at tree-ssa-pre.c:2495
  2013-01-03 14:13 [Bug tree-optimization/55862] New: ICE in compute_antic, at tree-ssa-pre.c:2495 antoine.balestrat at gmail dot com
  2013-01-03 16:20 ` [Bug tree-optimization/55862] [4.8 Regression] " rguenth at gcc dot gnu.org
  2013-01-04 11:59 ` rguenth at gcc dot gnu.org
@ 2013-01-04 13:29 ` rguenth at gcc dot gnu.org
  2013-01-04 13:29 ` rguenth at gcc dot gnu.org
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: rguenth at gcc dot gnu.org @ 2013-01-04 13:29 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55862

--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> 2013-01-04 13:29:02 UTC ---
Author: rguenth
Date: Fri Jan  4 13:28:53 2013
New Revision: 194906

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=194906
Log:
2013-01-04  Richard Biener  <rguenther@suse.de>

    PR tree-optimization/55862
    * tree-ssa-pre.c (phi_translate_1): Valueize SSA names after
    translating them through PHI nodes.

    * gcc.dg/torture/pr55862.c: New testcase.

Added:
    trunk/gcc/testsuite/gcc.dg/torture/pr55862.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/tree-ssa-pre.c


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug tree-optimization/55862] [4.8 Regression] ICE in compute_antic, at tree-ssa-pre.c:2495
  2013-01-03 14:13 [Bug tree-optimization/55862] New: ICE in compute_antic, at tree-ssa-pre.c:2495 antoine.balestrat at gmail dot com
                   ` (2 preceding siblings ...)
  2013-01-04 13:29 ` rguenth at gcc dot gnu.org
@ 2013-01-04 13:29 ` rguenth at gcc dot gnu.org
  2013-01-07 13:50 ` rguenth at gcc dot gnu.org
  2013-01-07 14:06 ` rguenth at gcc dot gnu.org
  5 siblings, 0 replies; 7+ messages in thread
From: rguenth at gcc dot gnu.org @ 2013-01-04 13:29 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55862

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|                            |FIXED

--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> 2013-01-04 13:29:21 UTC ---
Fixed.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug tree-optimization/55862] [4.8 Regression] ICE in compute_antic, at tree-ssa-pre.c:2495
  2013-01-03 14:13 [Bug tree-optimization/55862] New: ICE in compute_antic, at tree-ssa-pre.c:2495 antoine.balestrat at gmail dot com
                   ` (3 preceding siblings ...)
  2013-01-04 13:29 ` rguenth at gcc dot gnu.org
@ 2013-01-07 13:50 ` rguenth at gcc dot gnu.org
  2013-01-07 14:06 ` rguenth at gcc dot gnu.org
  5 siblings, 0 replies; 7+ messages in thread
From: rguenth at gcc dot gnu.org @ 2013-01-07 13:50 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55862

--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> 2013-01-07 13:50:03 UTC ---
Followup, because of PR55888.  We have

  <bb 11>:
  # c_21 = PHI <p_66(18), p_67(3)>
  # p_41 = PHI <p_66(18), p_67(3)>
  a.1_42 = a;
  goto <bb 5>;

  <bb 5>:
  # c_57 = PHI <c_1(16), c_21(11)>
  # a.1_63 = PHI <a.1_25(16), a.1_42(11)>
  # p_65 = PHI <p_30(16), p_41(11)>
  *c_57 = 0;

and when PHI-translating p_65 we end up with p_41 (or c_21 value-ized).  But
AVAIL_OUT of BB 11 is:

debug[0] := { c_12(D) (0014), p_32(D) (0027), g.0_11 (0013), c_21 (0033),
a.1_42 (0034) }

thus contains _only_ c_21 (well, exactly one expression per value - it is
a value set after all).  And clean via valid_in_sets does

    case NAME:
      return bitmap_set_contains_expr (AVAIL_OUT (block), expr);

thus checks for the expression availability.  That looks bogus to me.
Instead we should verify if there is a leader for the NAME in AVAIL_OUT.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug tree-optimization/55862] [4.8 Regression] ICE in compute_antic, at tree-ssa-pre.c:2495
  2013-01-03 14:13 [Bug tree-optimization/55862] New: ICE in compute_antic, at tree-ssa-pre.c:2495 antoine.balestrat at gmail dot com
                   ` (4 preceding siblings ...)
  2013-01-07 13:50 ` rguenth at gcc dot gnu.org
@ 2013-01-07 14:06 ` rguenth at gcc dot gnu.org
  5 siblings, 0 replies; 7+ messages in thread
From: rguenth at gcc dot gnu.org @ 2013-01-07 14:06 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55862

--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> 2013-01-07 14:06:32 UTC ---
Author: rguenth
Date: Mon Jan  7 14:06:26 2013
New Revision: 194971

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=194971
Log:
2013-01-07  Richard Biener  <rguenther@suse.de>

    PR tree-optimization/55888
    PR tree-optimization/55862
    * tree-ssa-pre.c (phi_translate_1): Revert previous change.
    (valid_in_sets): Check if a NAME has a leader in AVAIL_OUT,
    not if it is contained therein.

    * gcc.dg/torture/pr55888.c: New testcase.

Added:
    trunk/gcc/testsuite/gcc.dg/torture/pr55888.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/tree-ssa-pre.c


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2013-01-07 14:06 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-01-03 14:13 [Bug tree-optimization/55862] New: ICE in compute_antic, at tree-ssa-pre.c:2495 antoine.balestrat at gmail dot com
2013-01-03 16:20 ` [Bug tree-optimization/55862] [4.8 Regression] " rguenth at gcc dot gnu.org
2013-01-04 11:59 ` rguenth at gcc dot gnu.org
2013-01-04 13:29 ` rguenth at gcc dot gnu.org
2013-01-04 13:29 ` rguenth at gcc dot gnu.org
2013-01-07 13:50 ` rguenth at gcc dot gnu.org
2013-01-07 14:06 ` rguenth at gcc dot gnu.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).