------- Comment #23 from matz at gcc dot gnu dot org  2010-02-19 13:19 -------
Richi: not really.  It tries to separate paths where at least one has mostly
constants in their PHI args.  This applies to this testcase for the first
chain of PHI nodes, which are separated as intended.  But this simply leads
to constant propagation into the next chain of PHI nodes.  If repeated until
nothing changes this just ripples down the constants further and further but
doubles the number of incoming edges for the successor blocks.  Until we have
the exponential growth in the number of edges, not the number of PHI nodes.
I.e. effectively all possible paths are then represented by an edge, as would
be expected from a tracer.  At that point the last PHI node with constants
then would be useless and removed.  But we still would have exponential code
size growth.


-- 


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

Reply via email to