This is the mail archive of the
mailing list for the GCC project.
Re: PR/18308: ice-on-valid because of non-GIMPLE
On Dec 29, 2004, at 1:31 AM, Paolo Bonzini wrote:
Another point: this PR (a combination of vectorization, which enables
if-conversion, and loop unrolling) shows that COND_EXPR may now
percolate to the expander even in the absence of vectorizable code. I
need to read the code, but I wonder exactly what is different between
phiopt and if-conversion.
AFAIU, phiopt does simple pattern matching to remove phi nodes whenever
possible (irrespective of loop structure) where as if-conversion tries
to make one block for entire loop body. if-conversion knows how to
update loop structure appropriately. My understanding is that phiopt
does not handle cases when basic block has more than one phi node
and/or when basic block has more than one statements (I have not read
phiopt code recently so I could be wrong). if-conversion is enabled
only when automatic vectorization is requested.
It looks like phiopt is essentially a fold() on COND_EXPRs that
if-conversion produces, and that could expose more optimization