On 02/24/2016 09:07 PM, Nathan Sidwell wrote:
this patch fixes the ICE reported in pr69916 (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69916) The loop is lowered at omp-lowering, but subsequently determined to be dead before we get to oacc-target-lower. The loop CF is removed along with the (pure) IFN_OACC_LOOP function calls inserted during lowering. However the IFN_UNIQUE loop head & tail calls remain (because they are not pure). Thus in the oacc-target-lower pass we rediscover the loop structure.
@@ -20726,10 +20742,12 @@ oacc_loop_xform_head_tail (gcall *from, determined partitioning mask and chunking argument. */ static void -oacc_loop_xform_loop (gcall *end_marker, tree mask_arg, tree chunk_arg) +oacc_loop_xform_loop (gcall *end_marker, unsigned ifns, + tree mask_arg, tree chunk_arg)
Document the new arg.
+ gcc_checking_assert (ifns);
I prefer "ifns != 0" and "ifns == 0" for non-booleans. I don't think it's a requirement, so your call.
- /* If we didn't see LOOP_BOUND, it should be in the single - successor block. */ + /* The LOOP_BOUND ifn, could be in the single successor + block. */
Lose the comma? Ok with these changes. Bernd