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

--- Comment #2 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-02-01 
12:53:41 UTC ---
Program received signal SIGINT, Interrupt.
tree_code_size (code=POLYNOMIAL_CHREC)
    at /space/rguenther/src/svn/trunk/gcc/tree.c:737
737     }
(gdb) up
#1  0x0000000000c3d049 in make_node_stat (code=POLYNOMIAL_CHREC)
    at /space/rguenther/src/svn/trunk/gcc/tree.c:784
784       size_t length = tree_code_size (code);
(gdb) bt
....
#228 0x0000000000ac555c in follow_ssa_edge_in_condition_phi (
    loop=0x7ffff7edcdd0, condition_phi=0x7ffff5bea800, 
    halting_phi=0x7ffff5bf3400, evolution_of_loop=0x7fffffffd708, limit=0)
    at /space/rguenther/src/svn/trunk/gcc/tree-scalar-evolution.c:1310
#229 0x0000000000ac5a94 in follow_ssa_edge (loop=0x7ffff7edcdd0, 
    def=0x7ffff5bea800, halting_phi=0x7ffff5bf3400, 
    evolution_of_loop=0x7fffffffd708, limit=0)
    at /space/rguenther/src/svn/trunk/gcc/tree-scalar-evolution.c:1415
#230 0x0000000000ac5cd1 in analyze_evolution_in_loop (
    loop_phi_node=0x7ffff5bf3400, init_cond=0x7ffff5bf2948)
    at /space/rguenther/src/svn/trunk/gcc/tree-scalar-evolution.c:1492
#231 0x0000000000ac6108 in interpret_loop_phi (loop=0x7ffff7edcdd0, 
    loop_phi_node=0x7ffff5bf3400)
    at /space/rguenther/src/svn/trunk/gcc/tree-scalar-evolution.c:1631
#232 0x0000000000ac7403 in analyze_scalar_evolution_1 (loop=0x7ffff7edcdd0, 
    var=0x7ffff5a329a0, res=0x0)
    at /space/rguenther/src/svn/trunk/gcc/tree-scalar-evolution.c:1905
#233 0x0000000000ac754f in analyze_scalar_evolution (loop=0x7ffff7edcdd0, 
    var=0x7ffff5a329a0)
    at /space/rguenther/src/svn/trunk/gcc/tree-scalar-evolution.c:1955
---Type <return> to continue, or q <return> to quit---
#234 0x0000000000acbf0f in scev_const_prop ()

so we again run into exponential expression building in SCEV.

The limit we set is 100 which means we allow 2^100 as expression size.
That's quite useless (the limit was recently bumped from 20 we have
on the 4.5 branch).

PHI handling is also odd as we recurse with variable increases
instead of with a constant one.

I'm going to revert the parm change - its documentation also doesn't
match the behavior of the parm, expression growth is at most limited
to be O(2^parm), there is no real limit on the expression size.

Reply via email to