On Thu, Jul 24, 2014 at 2:36 PM, Kyrill Tkachov <kyrylo.tkac...@arm.com> wrote: > Hi all, > > This fixes PR 61876 by not converting the round + cast into an lround unless > -fno-math-errno is specified. > This is because lround can potentially set math errno whereas round + cast > doesn't, so the transformation isn't universally valid. > > This will cause the tests: > gcc.target/aarch64/fcvt_double_long.c > gcc.target/aarch64/fcvt_double_ulong.c > > to start passing on aarch64-linux. > > aarch64 and x86 bootstrap and regtest looks fine. > > Ok for trunk?
Ok. Does this really only apply to the round() case and not to all the others (floor, ceil, rint) as well? Thanks, Richard. > 2014-06-23 Kyrylo Tkachov <kyrylo.tkac...@arm.com> > > PR middle-end/61876 > * convert.c (convert_to_integer): Do not convert BUILT_IN_ROUND and cast > when flat_errno_math is on.