public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/48641] New: [4.7 Regression] ICE: verify_flow_info failed: Wrong frequency of block 77 -419530 with -O -fno-tree-ccp -fno-tree-copy-prop
@ 2011-04-16 17:58 zsojka at seznam dot cz
  2011-08-01 14:24 ` [Bug tree-optimization/48641] " rguenth at gcc dot gnu.org
                   ` (7 more replies)
  0 siblings, 8 replies; 9+ messages in thread
From: zsojka at seznam dot cz @ 2011-04-16 17:58 UTC (permalink / raw)
  To: gcc-bugs

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

           Summary: [4.7 Regression] ICE: verify_flow_info failed: Wrong
                    frequency of block 77 -419530 with -O -fno-tree-ccp
                    -fno-tree-copy-prop
           Product: gcc
           Version: 4.7.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: zsojka@seznam.cz
              Host: x86_64-pc-linux-gnu
            Target: x86_64-pc-linux-gnu


Created attachment 24012
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=24012
auto-reduced testcase

Compiler output:
$ gcc -O -fno-tree-ccp -fno-tree-copy-prop gcc.dg/torture/builtin-modf-1.c
gcc.dg/torture/builtin-modf-1.c: In function 'foo':
gcc.dg/torture/builtin-modf-1.c:141:1: error: verify_flow_info: Wrong frequency
of block 77 -419530
gcc.dg/torture/builtin-modf-1.c:141:1: error: verify_flow_info: Wrong frequency
of block 76 -210696
gcc.dg/torture/builtin-modf-1.c:141:1: internal compiler error:
verify_flow_info failed
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.

Tested revisions:
r172583 - crash
4.6 r172337 - OK


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

* [Bug tree-optimization/48641] [4.7 Regression] ICE: verify_flow_info failed: Wrong frequency of block 77 -419530 with -O -fno-tree-ccp -fno-tree-copy-prop
  2011-04-16 17:58 [Bug tree-optimization/48641] New: [4.7 Regression] ICE: verify_flow_info failed: Wrong frequency of block 77 -419530 with -O -fno-tree-ccp -fno-tree-copy-prop zsojka at seznam dot cz
@ 2011-08-01 14:24 ` rguenth at gcc dot gnu.org
  2011-08-02 14:02 ` rguenth at gcc dot gnu.org
                   ` (6 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: rguenth at gcc dot gnu.org @ 2011-08-01 14:24 UTC (permalink / raw)
  To: gcc-bugs

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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|---                         |4.7.0


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

* [Bug tree-optimization/48641] [4.7 Regression] ICE: verify_flow_info failed: Wrong frequency of block 77 -419530 with -O -fno-tree-ccp -fno-tree-copy-prop
  2011-04-16 17:58 [Bug tree-optimization/48641] New: [4.7 Regression] ICE: verify_flow_info failed: Wrong frequency of block 77 -419530 with -O -fno-tree-ccp -fno-tree-copy-prop zsojka at seznam dot cz
  2011-08-01 14:24 ` [Bug tree-optimization/48641] " rguenth at gcc dot gnu.org
@ 2011-08-02 14:02 ` rguenth at gcc dot gnu.org
  2011-12-05 14:51 ` jakub at gcc dot gnu.org
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: rguenth at gcc dot gnu.org @ 2011-08-02 14:02 UTC (permalink / raw)
  To: gcc-bugs

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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P3                          |P1
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2011.08.02 14:01:54
     Ever Confirmed|0                           |1

--- Comment #1 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-08-02 14:01:54 UTC ---
Confirmed.


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

* [Bug tree-optimization/48641] [4.7 Regression] ICE: verify_flow_info failed: Wrong frequency of block 77 -419530 with -O -fno-tree-ccp -fno-tree-copy-prop
  2011-04-16 17:58 [Bug tree-optimization/48641] New: [4.7 Regression] ICE: verify_flow_info failed: Wrong frequency of block 77 -419530 with -O -fno-tree-ccp -fno-tree-copy-prop zsojka at seznam dot cz
  2011-08-01 14:24 ` [Bug tree-optimization/48641] " rguenth at gcc dot gnu.org
  2011-08-02 14:02 ` rguenth at gcc dot gnu.org
@ 2011-12-05 14:51 ` jakub at gcc dot gnu.org
  2011-12-23 19:16 ` hubicka at gcc dot gnu.org
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: jakub at gcc dot gnu.org @ 2011-12-05 14:51 UTC (permalink / raw)
  To: gcc-bugs

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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
  Attachment #24012|0                           |1
        is obsolete|                            |

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-12-05 14:51:12 UTC ---
Created attachment 25991
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=25991
pr48641.c

Slightly more reduced testcase.

The problem is in the thread-ssa-threadupdate.c (redirect_edges) hunk added in
r102053:
          rd->dup_block->count += e->count;
          rd->dup_block->frequency += EDGE_FREQUENCY (e);
          EDGE_SUCC (rd->dup_block, 0)->count += e->count;
create_duplicates on this testcase creates huge number of basic blocks, and
this function adjusts the edges, so that each of these rd->dup_block has two
incoming edges, one 100% EDGE_FREQUENCY (for the first one of these from the
ENTRY successor, another one from some other bb (which will be removed as dead
later on, for the other blocks one of the predecessors is the previous dup
block).  Unfortunately this means that rd->dup_block->frequency goes over
BB_FREQ_MAX (the first of these has BB_FREQ_MAX + something, second that plus
something2, etc.) and finally the EDGE_FREQUENCY computation overflows
(e->src->frequency where e->src is the previous rd->dup_block is over 214748
and EDGE_FREQUENCY
multiplies that by 10000).  Caping it to BB_FREQ_MAX wouldn't probably work,
because then cfg cleanup that removes all the unreachable blocks would decrease
it too much.  Honza?


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

* [Bug tree-optimization/48641] [4.7 Regression] ICE: verify_flow_info failed: Wrong frequency of block 77 -419530 with -O -fno-tree-ccp -fno-tree-copy-prop
  2011-04-16 17:58 [Bug tree-optimization/48641] New: [4.7 Regression] ICE: verify_flow_info failed: Wrong frequency of block 77 -419530 with -O -fno-tree-ccp -fno-tree-copy-prop zsojka at seznam dot cz
                   ` (2 preceding siblings ...)
  2011-12-05 14:51 ` jakub at gcc dot gnu.org
@ 2011-12-23 19:16 ` hubicka at gcc dot gnu.org
  2011-12-23 22:01 ` hubicka at gcc dot gnu.org
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: hubicka at gcc dot gnu.org @ 2011-12-23 19:16 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #3 from Jan Hubicka <hubicka at gcc dot gnu.org> 2011-12-23 19:14:12 UTC ---
The frequencies are initially scaled to be in range 0...BB_FREQ_MAX, but
subsequent transformations may break the invariant (when two basic blocks are
unified). If it turns out to be neccessary we probably will add a capping.

Because the function is loopless, the frequencies should not get above sum of
all frequencies in the function no matter what threading does.  So it seems we
just propagate some misupdated profile?

Honza


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

* [Bug tree-optimization/48641] [4.7 Regression] ICE: verify_flow_info failed: Wrong frequency of block 77 -419530 with -O -fno-tree-ccp -fno-tree-copy-prop
  2011-04-16 17:58 [Bug tree-optimization/48641] New: [4.7 Regression] ICE: verify_flow_info failed: Wrong frequency of block 77 -419530 with -O -fno-tree-ccp -fno-tree-copy-prop zsojka at seznam dot cz
                   ` (3 preceding siblings ...)
  2011-12-23 19:16 ` hubicka at gcc dot gnu.org
@ 2011-12-23 22:01 ` hubicka at gcc dot gnu.org
  2011-12-27 10:54 ` hubicka at gcc dot gnu.org
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: hubicka at gcc dot gnu.org @ 2011-12-23 22:01 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #4 from Jan Hubicka <hubicka at gcc dot gnu.org> 2011-12-23 21:47:08 UTC ---
OK, the problem is that profile is wrong and jump threading gets into
conflicting results and the results are propagated through the testcase because
of specific CFG.  I think all we can do is to add capping. I am testing
Index: tree-ssa-threadupdate.c
===================================================================
--- tree-ssa-threadupdate.c     (revision 182657)
+++ tree-ssa-threadupdate.c     (working copy)
@@ -513,7 +513,11 @@ redirect_edges (void **slot, void *data)
                     e->src->index, e->dest->index, rd->dup_block->index);

          rd->dup_block->count += e->count;
-         rd->dup_block->frequency += EDGE_FREQUENCY (e);
+
+         /* Excessive jump threading may make frequencies large enough so
+            the computation overflows.  */
+         if (rd->dup_block->frequency < BB_FREQ_MAX * 2)
+           rd->dup_block->frequency += EDGE_FREQUENCY (e);
          EDGE_SUCC (rd->dup_block, 0)->count += e->count;
          /* Redirect the incoming edge to the appropriate duplicate
             block.  */


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

* [Bug tree-optimization/48641] [4.7 Regression] ICE: verify_flow_info failed: Wrong frequency of block 77 -419530 with -O -fno-tree-ccp -fno-tree-copy-prop
  2011-04-16 17:58 [Bug tree-optimization/48641] New: [4.7 Regression] ICE: verify_flow_info failed: Wrong frequency of block 77 -419530 with -O -fno-tree-ccp -fno-tree-copy-prop zsojka at seznam dot cz
                   ` (4 preceding siblings ...)
  2011-12-23 22:01 ` hubicka at gcc dot gnu.org
@ 2011-12-27 10:54 ` hubicka at gcc dot gnu.org
  2011-12-27 13:53 ` jakub at gcc dot gnu.org
  2013-12-09 14:58 ` jamborm at gcc dot gnu.org
  7 siblings, 0 replies; 9+ messages in thread
From: hubicka at gcc dot gnu.org @ 2011-12-27 10:54 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #5 from Jan Hubicka <hubicka at gcc dot gnu.org> 2011-12-27 10:42:01 UTC ---
Author: hubicka
Date: Tue Dec 27 10:41:58 2011
New Revision: 182693

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=182693
Log:

    PR middle-end/48641 
    * tree-ssa-threadupdate.c (redirect_edges): Watch for overflow.
    * gcc.dg/compile/pr48641.c: New file.

Added:
    trunk/gcc/testsuite/gcc.c-torture/compile/pr48641.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/tree-ssa-threadupdate.c


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

* [Bug tree-optimization/48641] [4.7 Regression] ICE: verify_flow_info failed: Wrong frequency of block 77 -419530 with -O -fno-tree-ccp -fno-tree-copy-prop
  2011-04-16 17:58 [Bug tree-optimization/48641] New: [4.7 Regression] ICE: verify_flow_info failed: Wrong frequency of block 77 -419530 with -O -fno-tree-ccp -fno-tree-copy-prop zsojka at seznam dot cz
                   ` (5 preceding siblings ...)
  2011-12-27 10:54 ` hubicka at gcc dot gnu.org
@ 2011-12-27 13:53 ` jakub at gcc dot gnu.org
  2013-12-09 14:58 ` jamborm at gcc dot gnu.org
  7 siblings, 0 replies; 9+ messages in thread
From: jakub at gcc dot gnu.org @ 2011-12-27 13:53 UTC (permalink / raw)
  To: gcc-bugs

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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

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

--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-12-27 12:12:32 UTC ---
Fixed.


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

* [Bug tree-optimization/48641] [4.7 Regression] ICE: verify_flow_info failed: Wrong frequency of block 77 -419530 with -O -fno-tree-ccp -fno-tree-copy-prop
  2011-04-16 17:58 [Bug tree-optimization/48641] New: [4.7 Regression] ICE: verify_flow_info failed: Wrong frequency of block 77 -419530 with -O -fno-tree-ccp -fno-tree-copy-prop zsojka at seznam dot cz
                   ` (6 preceding siblings ...)
  2011-12-27 13:53 ` jakub at gcc dot gnu.org
@ 2013-12-09 14:58 ` jamborm at gcc dot gnu.org
  7 siblings, 0 replies; 9+ messages in thread
From: jamborm at gcc dot gnu.org @ 2013-12-09 14:58 UTC (permalink / raw)
  To: gcc-bugs

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

Martin Jambor <jamborm at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jamborm at gcc dot gnu.org

--- Comment #7 from Martin Jambor <jamborm at gcc dot gnu.org> ---
As I wrote in http://gcc.gnu.org/ml/gcc-patches/2013-12/msg00835.html,
the testcase is now silently failing.


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

end of thread, other threads:[~2013-12-09 14:58 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-04-16 17:58 [Bug tree-optimization/48641] New: [4.7 Regression] ICE: verify_flow_info failed: Wrong frequency of block 77 -419530 with -O -fno-tree-ccp -fno-tree-copy-prop zsojka at seznam dot cz
2011-08-01 14:24 ` [Bug tree-optimization/48641] " rguenth at gcc dot gnu.org
2011-08-02 14:02 ` rguenth at gcc dot gnu.org
2011-12-05 14:51 ` jakub at gcc dot gnu.org
2011-12-23 19:16 ` hubicka at gcc dot gnu.org
2011-12-23 22:01 ` hubicka at gcc dot gnu.org
2011-12-27 10:54 ` hubicka at gcc dot gnu.org
2011-12-27 13:53 ` jakub at gcc dot gnu.org
2013-12-09 14:58 ` jamborm 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).