[Bug middle-end/28473] [4.0/4.1 Regression] with -O, casting result of round(x) to uint64_t produces wrong values for x > INT_MAX
sayle at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Sat Jul 29 19:08:00 GMT 2006
------- Comment #10 from sayle at gcc dot gnu dot org 2006-07-29 19:07 -------
Subject: Bug 28473
Author: sayle
Date: Sat Jul 29 19:07:40 2006
New Revision: 115812
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=115812
Log:
PR middle-end/28473
Backport from mainline.
* convert.c (convert_to_integer): When transforming (T)foo(x) into
bar(x) check that bar's result type can represent all the values of T.
* builtins.c (fold_fixed_mathfn): When long and long long are the
same size, canonicalize llceil*, llfloor*, llround* and llrint*
functions to their lceil*, lfloor*, lround* and lrint* forms.
* gcc.dg/fold-convround-1.c: New test case.
* gcc.dg/builtins-55.c: New test case.
Added:
branches/gcc-4_1-branch/gcc/testsuite/gcc.dg/builtins-55.c
branches/gcc-4_1-branch/gcc/testsuite/gcc.dg/fold-convround-1.c
Modified:
branches/gcc-4_1-branch/gcc/ChangeLog
branches/gcc-4_1-branch/gcc/builtins.c
branches/gcc-4_1-branch/gcc/convert.c
branches/gcc-4_1-branch/gcc/testsuite/ChangeLog
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28473
More information about the Gcc-bugs
mailing list