On 30/05/16 11:46, Richard Biener wrote:
This patch fixes the assert conservatively by aborting graphite code >generation when encountering a phi with more than two arguments in >copy_bb_and_scalar_dependences. > >Bootstrapped and reg-tested on x86_64. > >OK for trunk, 6 branch?
Did you check if simply returning false from bb_contains_loop_phi_nodes instead of asserting works? The caller has a 'else' that is supposed to handle condition PHIs. After all it already handles one predecessor specially ... Thus if (EDGE_COUNT (bb->preds) != 2) return false; should work here.
Unfortunately, that doesn't work. We run into another assert in copy_cond_phi_nodes:
... /* Cond phi nodes should have exactly two arguments. */ gcc_assert (2 == EDGE_COUNT (bb->preds)); ...
Or replace this function with bb_loop_header_p (bb) (works w/o loop info, the function seems to depend on loop info and thus simply checking bb->loop_father->header == bb should work as well).
I think that will run into the same assert. Thanks, - Tom