https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120564
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Priority|P3 |P2
CC| |jakub at gcc dot gnu.org
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
openmp expansion introduces this, not sure why we don't verify after that.
v3 = 10;
v2 = v2 + 18446744073709551613;
if ((signed long) v2 < 0)
looks like failed re(?)-gimplification. The condition is built from
#0 0x000000000349fde6 in extract_omp_for_update_vars (fd=0x7fffffffd830,
nonrect_bounds=0x0, cont_bb=<basic_block 0x7ffff6619240 (4)>,
body_bb=<basic_block 0x7ffff6619240 (4)>)
at ../../src/gcc/gcc/omp-expand.cc:3286
#1 0x00000000034b16d0 in expand_omp_for_static_chunk (region=0x4a671f0,
fd=0x7fffffffd830, inner_stmt=<gimple 0x0>)
at ../../src/gcc/gcc/omp-expand.cc:6253
#2 0x00000000034bd227 in expand_omp_for (region=0x4a671f0,
inner_stmt=<gimple 0x0>) at ../../src/gcc/gcc/omp-expand.cc:8267
3286 t = fold_build2 (fd->loops[i].cond_code, boolean_type_node,
v, t);
3287 stmt = gimple_build_cond_empty (t);
where the latter function doesn't seem to be able to deal with this kind
of folded condition (the plain condition w/o folding would have been OK).
we do
3289 if (walk_tree (gimple_cond_lhs_ptr (as_a <gcond *> (stmt)),
3290 expand_omp_regimplify_p, NULL, NULL)
3291 || walk_tree (gimple_cond_rhs_ptr (as_a <gcond *>
(stmt)),
3292 expand_omp_regimplify_p, NULL, NULL))
3293 gimple_regimplify_operands (stmt, &gsi);
but expand_omp_regimplify_p is oddly simplistic, so maybe we were not supposed
to end up with a conversion in one of the operands.
Leaving to Jakub.