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



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



           What    |Removed                     |Added

----------------------------------------------------------------------------

             Status|UNCONFIRMED                 |NEW

   Last reconfirmed|                            |2013-03-01

                 CC|                            |jakub at gcc dot gnu.org

   Target Milestone|---                         |4.6.4

            Summary|infinite loop in cc1 at -O1 |[4.6/4.7 Regression]

                   |and above                   |infinite loop in cc1 at -O1

                   |                            |and above

     Ever Confirmed|0                           |1



--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> 2013-03-01 
10:10:09 UTC ---

Fixed on trunk by http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=187053

which made gsi_for_stmt O(1).

Random interruption in gdb shows that most time is spent in

#0  0x00000000008bddd5 in gsi_next (i=0x7fffffffdb90) at

../../gcc/gimple.h:4945

#1  0x00000000008bf07a in gsi_for_stmt (stmt=0x7ffff1393b00) at

../../gcc/gimple-iterator.c:560

#2  0x0000000000cfe4dc in remove_visited_stmt_chain (var=0x7ffff1394e10) at

../../gcc/tree-ssa-reassoc.c:2228

#3  0x0000000000cfeb5b in rewrite_expr_tree (stmt=0x7ffff1393c60, opindex=0,

ops=0x3505a80, moved=0 '\000') at ../../gcc/tree-ssa-reassoc.c:2383

#4  0x0000000000d02614 in reassociate_bb (bb=0x7ffff1580750) at

../../gcc/tree-ssa-reassoc.c:3607

#5  0x0000000000d02691 in reassociate_bb (bb=0x7ffff15806e8) at

../../gcc/tree-ssa-reassoc.c:3617

#6  0x0000000000d0277f in do_reassoc () at ../../gcc/tree-ssa-reassoc.c:3650

#7  0x0000000000d02b57 in execute_reassoc () at

../../gcc/tree-ssa-reassoc.c:3742



or similar.  Guess for 4.7 and 4.6 perhaps remove_visited_stmt_chain should

before trying gsi_for_stmt test whether gsi from previous iteration isn't

in the same bb as the stmt we'd call gsi_for_stmt on, and if yes, walk from

that gsi backwards manually instead of calling gsi_for_stmt (because, the

definitions generally should be before the uses).  That would make

remove_visited_stmt_chain linear complexity instead of quadratic.

Reply via email to