aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoger Sayle <roger@eyesopen.com>2007-02-05 19:10:44 +0000
committerRoger Sayle <sayle@gcc.gnu.org>2007-02-05 19:10:44 +0000
commit2d38026be8d69796e18179b869b50f52ac7cd032 (patch)
tree3c97b40f1a12e9f5fd3092e3cdda0637b1dfbb41
parent7056b82ec7193b85771c1f4aab60daa6b3617250 (diff)
downloadgcc-2d38026be8d69796e18179b869b50f52ac7cd032.zip
gcc-2d38026be8d69796e18179b869b50f52ac7cd032.tar.gz
gcc-2d38026be8d69796e18179b869b50f52ac7cd032.tar.bz2
fold-const.c (fold_unary): Test for availability of BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
* fold-const.c (fold_unary) <REAL_PART>: Test for availability of BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS. <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN. * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS before canonicalizing sincos to cexpi. (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi. From-SVN: r121607
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/builtins.c4
-rw-r--r--gcc/fold-const.c16
3 files changed, 25 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ec8b633..a712429 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,14 @@
2007-02-05 Roger Sayle <roger@eyesopen.com>
+ * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
+ BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
+ <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
+ * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
+ before canonicalizing sincos to cexpi.
+ (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
+
+2007-02-05 Roger Sayle <roger@eyesopen.com>
+
* config/alpha/alpha.c (alpha_add_builtins): New Helper function.
Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
(alpha_init_builtins): Use alpha_add_builtins to process tables.
diff --git a/gcc/builtins.c b/gcc/builtins.c
index b7ff782..8e9d9e4 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -7474,6 +7474,8 @@ fold_builtin_sincos (tree arglist)
return res;
/* Canonicalize sincos to cexpi. */
+ if (!TARGET_C99_FUNCTIONS)
+ return NULL_TREE;
fn = mathfn_built_in (type, BUILT_IN_CEXPI);
if (!fn)
return NULL_TREE;
@@ -7507,6 +7509,8 @@ fold_builtin_cexp (tree arglist, tree type)
/* In case we can figure out the real part of arg0 and it is constant zero
fold to cexpi. */
+ if (!TARGET_C99_FUNCTIONS)
+ return NULL_TREE;
ifn = mathfn_built_in (rtype, BUILT_IN_CEXPI);
if (!ifn)
return NULL_TREE;
diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index ee2c469..c147efa 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -7769,9 +7769,13 @@ fold_unary (enum tree_code code, tree type, tree op0)
{
CASE_FLT_FN (BUILT_IN_CEXPI):
fn = mathfn_built_in (type, BUILT_IN_COS);
- return build_function_call_expr (fn, TREE_OPERAND (arg0, 1));
+ if (fn)
+ return build_function_call_expr (fn,
+ TREE_OPERAND (arg0, 1));
+ break;
- default:;
+ default:
+ break;
}
}
return NULL_TREE;
@@ -7808,9 +7812,13 @@ fold_unary (enum tree_code code, tree type, tree op0)
{
CASE_FLT_FN (BUILT_IN_CEXPI):
fn = mathfn_built_in (type, BUILT_IN_SIN);
- return build_function_call_expr (fn, TREE_OPERAND (arg0, 1));
+ if (fn)
+ return build_function_call_expr (fn,
+ TREE_OPERAND (arg0, 1));
+ break;
- default:;
+ default:
+ break;
}
}
return NULL_TREE;