From: ghazi Date: Mon, 5 Mar 2007 23:30:04 +0000 (+0000) Subject: * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7e50d9b5379a2ba16a5772976876807f6d5a282f;p=thirdparty%2Fgcc.git * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint conversion. testsuite: * gcc.dg/torture/builtin-convert-4.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@122581 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a27533fedfe2..f6a9af9a8541 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2007-03-05 Kaveh R. Ghazi + + * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint + conversion. + 2007-03-05 Ian Lance Taylor * c.opt (fgnu89-inline): New option. diff --git a/gcc/convert.c b/gcc/convert.c index b6c6d0fcf750..82b40bad0a74 100644 --- a/gcc/convert.c +++ b/gcc/convert.c @@ -413,12 +413,12 @@ convert_to_integer (tree type, tree expr) fn = mathfn_built_in (s_intype, BUILT_IN_LLROUND); break; - CASE_FLT_FN (BUILT_IN_RINT): - /* Only convert rint* if we can ignore math exceptions. */ + CASE_FLT_FN (BUILT_IN_NEARBYINT): + /* Only convert nearbyint* if we can ignore math exceptions. */ if (flag_trapping_math) break; /* ... Fall through ... */ - CASE_FLT_FN (BUILT_IN_NEARBYINT): + CASE_FLT_FN (BUILT_IN_RINT): if (outprec < TYPE_PRECISION (long_integer_type_node) || (outprec == TYPE_PRECISION (long_integer_type_node) && !TYPE_UNSIGNED (type))) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c3205c6140fe..7753a04e5aea 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2007-03-05 Kaveh R. Ghazi + + * gcc.dg/torture/builtin-convert-4.c: New test. + 2007-03-05 Ian Lance Taylor * gcc.c-torture/compile/pr31034.c: New test. diff --git a/gcc/testsuite/gcc.dg/torture/builtin-convert-4.c b/gcc/testsuite/gcc.dg/torture/builtin-convert-4.c new file mode 100644 index 000000000000..c37bd5e2e8ad --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/builtin-convert-4.c @@ -0,0 +1,37 @@ +/* Copyright (C) 2007 Free Software Foundation. + + Verify that nearbyint isn't transformed into e.g. rint or lrint + when -ftrapping-math is set. + + Written by Kaveh ghazi, 2007-03-04. */ + +/* { dg-do compile } */ +/* { dg-options "-ftrapping-math -fdump-tree-original" } */ +/* { dg-options "-ftrapping-math -fdump-tree-original -mmacosx-version-min=10.3" { target powerpc-*-darwin* } } */ +/* { dg-options "-ftrapping-math -fdump-tree-original -std=c99" { target *-*-solaris2* } } */ + +#include "../builtins-config.h" + +extern void bar (long); + +#define TESTIT(FUNC) do { \ + bar (__builtin_##FUNC(d)); \ + bar (__builtin_##FUNC##f(f)); \ + bar (__builtin_##FUNC##l(ld)); \ +} while (0) + +void __attribute__ ((__noinline__)) foo (double d, float f, long double ld) +{ + TESTIT(nearbyint); +} + +int main() +{ + foo (1.0, 2.0, 3.0); + return 0; +} + +/* { dg-final { scan-tree-dump-times "nearbyint " 1 "original" } } */ +/* { dg-final { scan-tree-dump-times "nearbyintf" 1 "original" } } */ +/* { dg-final { scan-tree-dump-times "nearbyintl" 1 "original" } } */ +/* { dg-final { cleanup-tree-dump "original" } } */