Go to file
Roger Sayle 05d362b88d fold-const.c (negate_mathfn_p): New function to determine whether a built-in mathematical function is sign...
* fold-const.c (negate_mathfn_p): New function to determine whether
	a built-in mathematical function is sign preserving, f(-x) == -f(x).
	Add support for BUILT_IN_ASIN, BUILT_IN_ASINF and BUILT_IN_ASINL.
	(tree_swap_operands_p): Change API to take an additional argument
	indicating that the swapped operands evaluate in reverse order.
	Canonicalize VAR_DECLs and PARM_DECLs last if we can, i.e. neither
	operand side-effects or we don't care about flag_evaluation_order.
	(reorder_operands_p): New function to check whether its safe to
	evaluate the given operands in reverse order.
	(negate_expr_p):  We can always negate integer constants unless
	we honor -ftrapv and the signed type would overflow.  Only allow
	-(A-B) into B-A if reorder_operands_p says that its OK.  Allow
	negation of COMPLEX_CST if both real and imaginary parts can be
	negated.  Allow negation through floating point extensions and
	sign-preserving built-in functions.
	(negate_expr):  Move the code to negate integers from "fold" to
	here.  Always negate integer constants unless we honor -ftrapv
	and the signed type would overflow.  Always negate real constants
	unless we honor -ftrapping-math.  Only convert -(A-B) into B-A
	if allowed by reorder_operands_p.  Add support for COMPLEX_CST.
	Optimize negation through floating point extensions and
	sign-preserving built-in functions (as defined by negate_mathfn_p).
	(fold): Adjust calls to tree_swap_operands_p.
	(fold <NEGATE_EXPR>): Move the remaining negation optimizations
	to negate_expr_p/negate_expr.
	(fold <MINUS_EXPR>): Use reorder_operands_p to check whether we're
	allowed to convert (-A) - B into (-B) - A.

From-SVN: r72381
2003-10-11 21:15:08 +00:00
boehm-gc
config Move ChangeLog entries for config/ subdir into config/ChangeLog, where they belong. 2003-10-08 21:28:40 +00:00
contrib
fastjar
gcc fold-const.c (negate_mathfn_p): New function to determine whether a built-in mathematical function is sign... 2003-10-11 21:15:08 +00:00
include
INSTALL
intl
libf2c
libffi
libiberty
libjava Status.java, [...]: Removing redundant modifiers. 2003-10-11 19:18:24 +00:00
libobjc
libstdc++-v3 crossconfig.m4 (*-uclinux*): New target. 2003-10-11 05:45:07 +02:00
maintainer-scripts
zlib
.cvsignore
ABOUT-NLS
ChangeLog config.guess: Update to 2003-10-07 version. 2003-10-11 04:57:01 +02:00
config-ml.in
config.guess config.guess: Update to 2003-10-07 version. 2003-10-11 04:57:01 +02:00
config.if
config.rpath
config.sub config.guess: Update to 2003-10-07 version. 2003-10-11 04:57:01 +02:00
configure
configure.in
COPYING
COPYING.LIB
install-sh
libtool.m4
ltcf-c.sh
ltcf-cxx.sh
ltcf-gcj.sh
ltconfig
ltmain.sh
MAINTAINERS
Makefile.def
Makefile.in
Makefile.tpl
missing
mkdep
mkinstalldirs
move-if-change
README
README.SCO
symlink-tree
ylwrap

This directory contains the GNU Compiler Collection (GCC).

The GNU Compiler Collection is free software.  See the file COPYING
for copying permission.  The manuals, and some of the runtime
libraries, are under different terms; see the individual source files
for details.

The directory INSTALL contains copies of the installation information
as HTML and plain text.  The source of this information is
gcc/doc/install.texi.  The installation information includes details
of what is included in the GCC sources and what files GCC installs.

See the file gcc/doc/gcc.texi (together with other files that it
includes) for usage and porting information.  An online readable
version of the manual is in the files gcc/doc/gcc.info*.

See http://gcc.gnu.org/bugs.html for how to report bugs usefully.