https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79593
--- Comment #9 from rguenther at suse dot de <rguenther at suse dot de> --- On Tue, 21 Feb 2017, ubizjak at gmail dot com wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79593 > > Uroš Bizjak <ubizjak at gmail dot com> changed: > > What |Removed |Added > ---------------------------------------------------------------------------- > CC| |rguenth at gcc dot gnu.org > > --- Comment #8 from Uroš Bizjak <ubizjak at gmail dot com> --- > The remaining fld %st(0) is there due to multiple uses of global_data+0, once > in XFmode and once in SFmode. But this is what tree optimizers give us: > > long double min; > long double delta; > > float _2; > > <bb 3> [54.00%]: > _2 = global_data[0]; > delta_13 = (long double) _2; > _3 = global_data[1]; > min_14 = (long double) _3; > pretmp_28 = *e_11(D).D.2291.f; > if (_2 < 0.0) > goto <bb 4>; [36.00%] > else > goto <bb 5>; [64.00%] > > Please note the comparison (_2 < 0.0). I don't know why, looking at the > source, > delta_13 should be used there. Let's ask tree experts. Simply an optimization (already the FEs via convert_to_real narrow a widened comparison).