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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@121607
138bc75d-0d04-0410-961f-
82ee72b054a4
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.
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;
/* 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;
{
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;
{
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;