https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107879
--- Comment #12 from Sergei Trofimovich <slyfox at gcc dot gnu.org> ---
(In reply to Jakub Jelinek from comment #5)
> It is the foperator_mult::op{1,2}_range and can be seen even on:
> double
> foo (double x, double y)
> {
> double z = x * y;
> if (z == 0.0)
> return x;
> return 42.0;
> }
> testcase.
> 2->3 (T) x_2(D) : [frange] double [-0.0 (-0x0.0p+0), 0.0 (0x0.0p+0)]
> 2->3 (T) y_3(D) : [frange] double [-0.0 (-0x0.0p+0), 0.0 (0x0.0p+0)]
> 2->3 (T) z_4 : [frange] double [-0.0 (-0x0.0p+0), 0.0 (0x0.0p+0)]
> On the true edge of z == 0.0, we have [-0., 0.] range for z_4, that is
For my curiosity fow did you get such a detailed [frange] output for the
expressions? I tried -fdump-tree-all-all and best I get is a one-liner around
PHI nodes:
# RANGE [frange] double [0.0 (0x0.0p+0), +Inf]
# iftmp.5_6 = PHI <omww_17(3), 0.0(4), 0.0(6)>
# .MEM_23 = PHI <.MEM_19(3), .MEM_19(4), .MEM_15(6)>
# VUSE <.MEM_23>
return iftmp.5_6;
Is there a magic gcc flag to dump more range details? Or you had to patch a bit
of gcc code?