convert.c (convert_to_real): Also optimize (float)log(x) into logf(x) where x is a float, i.e.

* convert.c (convert_to_real): Also optimize (float)log(x) into
	logf(x) where x is a float, i.e. also handle BUILT_IN_LOG{,L}.

From-SVN: r63087
This commit is contained in:
Roger Sayle 2003-02-19 03:39:30 +00:00 committed by Roger Sayle
parent 34fcb7c802
commit 78bd5210e7
2 changed files with 18 additions and 11 deletions

View File

@ -1,3 +1,8 @@
2003-02-18 Roger Sayle <roger@eyesopen.com>
* convert.c (convert_to_real): Also optimize (float)log(x) into
logf(x) where x is a float, i.e. also handle BUILT_IN_LOG{,L}.
2003-02-18 Kaz Kojima <kkojima@gcc.gnu.org>
* config/sh/sh.c (unspec_caller_rtx_p): New.

View File

@ -1,6 +1,6 @@
/* Utility routines for data type conversion for GNU C.
Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1997,
1998 Free Software Foundation, Inc.
Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1997, 1998,
2000, 2001, 2002, 2003 Free Software Foundation, Inc.
This file is part of GCC.
@ -133,15 +133,17 @@ convert_to_real (type, expr)
/* Disable until we figure out how to decide whether the functions are
present in runtime. */
/* Convert (float)sqrt((double)x) where x is float into sqrtf(x) */
if ((fcode == BUILT_IN_SQRT
|| fcode == BUILT_IN_SQRTL
|| fcode == BUILT_IN_SIN
|| fcode == BUILT_IN_SINL
|| fcode == BUILT_IN_COS
|| fcode == BUILT_IN_COSL
|| fcode == BUILT_IN_EXP
|| fcode == BUILT_IN_EXPL)
&& optimize
if (optimize
&& (fcode == BUILT_IN_SQRT
|| fcode == BUILT_IN_SQRTL
|| fcode == BUILT_IN_SIN
|| fcode == BUILT_IN_SINL
|| fcode == BUILT_IN_COS
|| fcode == BUILT_IN_COSL
|| fcode == BUILT_IN_EXP
|| fcode == BUILT_IN_EXPL
|| fcode == BUILT_IN_LOG
|| fcode == BUILT_IN_LOGL)
&& (TYPE_MODE (type) == TYPE_MODE (double_type_node)
|| TYPE_MODE (type) == TYPE_MODE (float_type_node)))
{