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
This commit is contained in:
Roger Sayle 2007-02-05 19:10:44 +00:00 committed by Roger Sayle
parent 7056b82ec7
commit 2d38026be8
3 changed files with 25 additions and 4 deletions

View File

@ -1,3 +1,12 @@
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.

View File

@ -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;

View File

@ -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;