Andrew MacLeod via Gcc-patches <gcc-patches@gcc.gnu.org> writes: > > diff --git a/gcc/gimple-range-side-effect.cc b/gcc/gimple-range-side-effect.cc > index 2c8c77dc569..548e4bea313 100644 > --- a/gcc/gimple-range-side-effect.cc > +++ b/gcc/gimple-range-side-effect.cc > @@ -116,6 +116,23 @@ stmt_side_effects::stmt_side_effects (gimple *s) > walk_stmt_load_store_ops (s, (void *)this, non_null_loadstore, > non_null_loadstore); > > + if (is_a<gassign *> (s)) > + { > + switch (gimple_assign_rhs_code (s)) > + { > + case TRUNC_DIV_EXPR: > + case CEIL_DIV_EXPR: > + case FLOOR_DIV_EXPR: > + case ROUND_DIV_EXPR: > + case EXACT_DIV_EXPR: > + // Divide means operand 2 is not zero after this stmt. > + if (gimple_range_ssa_p (gimple_assign_rhs2 (s))) > + add_nonzero (gimple_assign_rhs2 (s));
Sorry I'm late, but how does this ensure the value is a integer? I believe for floating point the assumption is not correct because division by zero doesn't necessarily fault. -Andi