On Mon, Dec 19, 2016 at 6:58 PM, James Greenhalgh <james.greenha...@arm.com> wrote: > >> On Thu, Dec 8, 2016 at 10:44 PM, Uros Bizjak <ubiz...@gmail.com> wrote: >> > Hello! >> > >> > Attached patch fixes fall-out from excess-precision improvements >> > patch. As shown in the PR, the code throughout the compiler assumes >> > FLAG_PRECISION_FAST when flag_unsafe_math_optimizations flag is in >> > effect. The patch puts back two lines, removed by excess-precision >> > improvements patch. >> > >> > 2016-12-08 Uros Bizjak <ubiz...@gmail.com> >> > >> > PR middle-end/78738 >> > * toplev.c (init_excess_precision): Initialize flag_excess_precision >> > to EXCESS_PRECISION_FAST for flag_unsafe_math_optimizations. >> > >> > testsuite/ChangeLog: >> > >> > 2016-12-08 Uros Bizjak <ubiz...@gmail.com> >> > >> > PR middle-end/78738 >> > * gcc.target/i386/pr78738.c: New test. >> > >> > Patch was bootstrapped and regression tested on x86_64-linux-gnu {,-m32}. >> > >> > OK for mainline? >> >> Hmm, I think it belongs to set_unsafe_math_optimization_flags instead >> (and be consistent if -fexcess-precision was manually specified). > > I think it would be better if this were implied by -ffast-math/-Ofast > than by -funsafe-math-optimizations . That's what I've implemented here, > and tagged the option as SetByCombined to allow us to honour what the > user requests. > > This should give us the behaviour you were looking for Uros. > > I've bootstrapped and tested the behaviour on x86_64, and I've hacked up > the AArch64 backend to validate that we're setting the flag in the right > circumstances (but that meant changing the AArch64 behaviour, so isn't > something we'd want on trunk, and therefore I can't write a testcase for > this patch). > > OK?
Looks good to me, but please also adjust invoke.texi to list -fexcess-precision as affected by -ffast-math. Ok with that change. Richard. > Thanks, > James > > --- > 2016-12-19 James Greenhalgh <james.greenhal...@arm.com> > > * common.opt (excess_precision): Tag as SetByCombined. > * opts.c (set_fast_math_flags): Also set > flag_excess_precision_cmdline. > (fast_math_flags_set_p): Also check flag_excess_precision_cmdline. >