aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorBin Cheng <bin.cheng@arm.com>2012-02-09 09:37:37 +0000
committerBin Cheng <amker@gcc.gnu.org>2012-02-09 09:37:37 +0000
commit15ed19ff324f45494d471b65c321804f1858cd26 (patch)
treedb7d4b5e98e0256791ba9060dc4a2afcabda31a3 /gcc
parent365e6b65dd15fb533ae641820ce820347d67596e (diff)
downloadgcc-15ed19ff324f45494d471b65c321804f1858cd26.zip
gcc-15ed19ff324f45494d471b65c321804f1858cd26.tar.gz
gcc-15ed19ff324f45494d471b65c321804f1858cd26.tar.bz2
re PR middle-end/51867 (GCC generates inconsistent code for same sources calling builtin calls, like sqrtf)
PR target/51867 * builtins.c (expand_builtin): Don't check DECL_ASSEMBLER_NAME_SET_P. PR target/51867 * testsuite/c-c++-common/dfp/signbit-2.c: Change '-O0' to '-O1'. * testsuite/gcc.dg/pr51867.c: New test. From-SVN: r184037
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/builtins.c1
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/c-c++-common/dfp/signbit-2.c5
-rw-r--r--gcc/testsuite/gcc.dg/pr51867.c16
5 files changed, 31 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e44e4b8..05837c6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2012-02-09 Bin Cheng <bin.cheng@arm.com>
+
+ PR middle-end/51867
+ * builtins.c (expand_builtin): Don't check DECL_ASSEMBLER_NAME_SET_P.
+
2012-02-08 Magnus Granberg <zorry@gentoo.org>
PR driver/48524
diff --git a/gcc/builtins.c b/gcc/builtins.c
index 74be552..cf49561 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -5776,7 +5776,6 @@ expand_builtin (tree exp, rtx target, rtx subtarget, enum machine_mode mode,
set of builtins. */
if (!optimize
&& !called_as_built_in (fndecl)
- && DECL_ASSEMBLER_NAME_SET_P (fndecl)
&& fcode != BUILT_IN_ALLOCA
&& fcode != BUILT_IN_ALLOCA_WITH_ALIGN
&& fcode != BUILT_IN_FREE)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 66a7e41..2e12bb8 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2012-02-09 Bin Cheng <bin.cheng@arm.com>
+
+ PR middle-end/51867
+ * testsuite/c-c++-common/dfp/signbit-2.c: Change '-O0' to '-O1'.
+ * testsuite/gcc.dg/pr51867.c: New test.
+
2012-02-09 Ian Lance Taylor <iant@google.com>
* go.test/go-test.exp (go-gc-tests): Don't run stack.go on systems
diff --git a/gcc/testsuite/c-c++-common/dfp/signbit-2.c b/gcc/testsuite/c-c++-common/dfp/signbit-2.c
index e51bf91..5444d8f 100644
--- a/gcc/testsuite/c-c++-common/dfp/signbit-2.c
+++ b/gcc/testsuite/c-c++-common/dfp/signbit-2.c
@@ -1,7 +1,10 @@
-/* { dg-options "-O0" } */
+/* { dg-options "-O1" } */
/* Check that the compiler uses builtins for signbit; if not the link
will fail because library functions are in libm. */
+/* See PR51867.
+ Since GCC uses library call when optimizing for "-O0", this test
+ case requires at least "-O1" level optimization now. */
#include "dfp-dbg.h"
diff --git a/gcc/testsuite/gcc.dg/pr51867.c b/gcc/testsuite/gcc.dg/pr51867.c
new file mode 100644
index 0000000..3f1016e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr51867.c
@@ -0,0 +1,16 @@
+/* { dg-do compile } */
+/* { dg-options "-O0 -fno-math-errno -fdump-rtl-expand" } */
+#include <math.h>
+
+float a(float x)
+{
+ return sqrtf(x);
+}
+float b(float x)
+{
+ return sqrtf(x);
+}
+/* Here the calls to sqrtf should be expanded into CALL_INSNs, rather than
+ fpu sqrtf rtl patterns. */
+/* { dg-final { scan-rtl-dump-times "call_insn" 2 "expand" } } */
+/* { dg-final { cleanup-rtl-dump "expand" } } */