This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[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
- From: "sayle at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 29 Jul 2006 19:07:54 -0000
- Subject: [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
- References: <bug-28473-13001@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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