On Fri, May 27, 2022 at 3:57 PM Andrew MacLeod via Gcc-patches <gcc-patches@gcc.gnu.org> wrote: > > On 5/27/22 15:33, Andi Kleen wrote: > > 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 > > > gimple_range_ssa_p() only returns non-zero when the value is an ssa_name > whose type is supported by the range calculators... currently only > integrals values. When we support floating points we will have to add > additional logic. >
Maybe add a comment to that effect, then? As a reminder... > Andrew >