Commit 7c27e184 by Paolo Bonzini

Makefile.in: Regenerate.

2004-08-17  Paolo Bonzini  <bonzini@gnu.org>

	* Makefile.in: Regenerate.
	* configure: Regenerate.

	* Makefile.def (bootstrap-stage): Rename extra_*_flags to
	stage_*_flags.
	* Makefile.tpl (configure-[+module+], all-[+module+]): Exit
	for bootstrapped modules if toplevel bootstrap is going.
	(GCC bootstrap): Generate per-stage targets for all bootstrapped
	modules.  Adjust for changes in Makefile.def.  Enable several
	rules even in non-bootstrap mode, just to avoid peppering the
	template with unnecessary "@if/@endif gcc-bootstrap" pairs.
	(stage-[+prev+]-bubble): Remove.

	* Makefile.def (Dependencies): Depend on all-build-bison,
	all-build-flex, all-build-byacc, all-build-texinfo, rather
	than the host variations.
	* Makefile.tpl (BUILD_DIR_PREFIX): Remove.  Replace throughout
	with BUILD_SUBDIR.
	(BISON): Update for recent Bisons.
	(YACC): Fix typo.
	(cross): Depend on all-build.
	(all): Do not depend on all-build.
	(prebootstrap): Remove.
	(dep-kind): Accept separate prefixes for MODULE and ON variables.
	(Prebootstrap dependencies): Add them to the per-stage targets
	and to all-prebootstrap.
	* configure.in (build_configdirs): Always enable build_tools.
	(BUILD_DIR_PREFIX): Remove.

	* Makefile.def (gcc): Add target variable.
	(gdb, expect, guile, tk, tix): Replace with_x with extra_make_flags.
	* Makefile.tpl (Autogenerated `all-*' targets): Invoke $(TARGET-*)
	in the recursive `make', instead of hardwiring `all'.
	(Autogenerated TARGET-* variables): New.

gcc/ChangeLog:
2004-08-17  Paolo Bonzini  <bonzini@gnu.org>

	* configure.ac: Trust toplevel's notion of BISON/FLEX/MAKEINFO.
	No need to check if in a cross configuration.
	* configure: Regenerate.

	* calls.c (precompute_register_parameters):
	Inline preserve_subexpressions_p ().
	* expmed.c (expand_mult_const, emit_store_flag): Likewise.
	* optabs.c (expand_binop, expand_twoval_binop, prepare_cmp_insn):
	Likewise.
	* expr.c (get_subtarget): Likewise.
	* rtl.h (preserve_subexpressions_p): Remove.
	* stmt.c (preserve_subexpressions_p): Remove.

	* dojump.c (do_jump) <COND_EXPR, EQ_EXPR, NE_EXPR,
	TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR, COMPOUND_EXPR>:
	Abort on gimplified cases.

From-SVN: r86111
parent 9a9ff549
2004-08-16 Paolo Bonzini <bonzini@gnu.org>
* Makefile.in: Regenerate.
* configure: Regenerate.
* Makefile.def (bootstrap-stage): Rename extra_*_flags to
stage_*_flags.
* Makefile.tpl (configure-[+module+], all-[+module+]): Exit
for bootstrapped modules if toplevel bootstrap is going.
(GCC bootstrap): Generate per-stage targets for all bootstrapped
modules. Adjust for changes in Makefile.def. Enable several
rules even in non-bootstrap mode, just to avoid peppering the
template with unnecessary "@if/@endif gcc-bootstrap" pairs.
(stage-[+prev+]-bubble): Remove.
* Makefile.def (Dependencies): Depend on all-build-bison,
all-build-flex, all-build-byacc, all-build-texinfo, rather
than the host variations.
* Makefile.tpl (BUILD_DIR_PREFIX): Remove. Replace throughout
with BUILD_SUBDIR.
(BISON): Update for recent Bisons.
(YACC): Fix typo.
(cross): Depend on all-build.
(all): Do not depend on all-build.
(prebootstrap): Remove.
(dep-kind): Accept separate prefixes for MODULE and ON variables.
(Prebootstrap dependencies): Add them to the per-stage targets
and to all-prebootstrap.
* configure.in (build_configdirs): Always enable build_tools.
(BUILD_DIR_PREFIX): Remove.
* Makefile.def (gcc): Add target variable.
(gdb, expect, guile, tk, tix): Replace with_x with extra_make_flags.
* Makefile.tpl (Autogenerated `all-*' targets): Invoke $(TARGET-*)
in the recursive `make', instead of hardwiring `all'.
(Autogenerated TARGET-* variables): New.
2004-08-13 Brian Booth <bbooth@redhat.com> 2004-08-13 Brian Booth <bbooth@redhat.com>
* MAINTAINERS: Remove myself from write-after-approval. * MAINTAINERS: Remove myself from write-after-approval.
......
...@@ -25,7 +25,6 @@ AutoGen definitions Makefile.tpl; ...@@ -25,7 +25,6 @@ AutoGen definitions Makefile.tpl;
// that recursive target in its Makefile. // that recursive target in its Makefile.
build_modules= { module= libiberty; }; build_modules= { module= libiberty; };
build_modules= { module= libbanshee; };
build_modules= { module= bison; }; build_modules= { module= bison; };
build_modules= { module= byacc; }; build_modules= { module= byacc; };
build_modules= { module= flex; }; build_modules= { module= flex; };
...@@ -53,6 +52,7 @@ host_modules= { module= find; }; ...@@ -53,6 +52,7 @@ host_modules= { module= find; };
host_modules= { module= flex; no_check_cross= true; }; host_modules= { module= flex; no_check_cross= true; };
host_modules= { module= gas; bootstrap=true; }; host_modules= { module= gas; bootstrap=true; };
host_modules= { module= gcc; bootstrap=true; host_modules= { module= gcc; bootstrap=true;
target="`if [ -f gcc/stage_last ]; then echo quickstrap ; else echo all; fi`";
extra_make_flags="$(EXTRA_GCC_FLAGS)"; }; extra_make_flags="$(EXTRA_GCC_FLAGS)"; };
host_modules= { module= gawk; }; host_modules= { module= gawk; };
host_modules= { module= gettext; }; host_modules= { module= gettext; };
...@@ -94,10 +94,10 @@ host_modules= { module= uudecode; }; ...@@ -94,10 +94,10 @@ host_modules= { module= uudecode; };
host_modules= { module= wdiff; }; host_modules= { module= wdiff; };
host_modules= { module= zip; no_check_cross=true; }; host_modules= { module= zip; no_check_cross=true; };
host_modules= { module= zlib; no_install=true; no_check=true; bootstrap=true; }; host_modules= { module= zlib; no_install=true; no_check=true; bootstrap=true; };
host_modules= { module= gdb; with_x=true; }; host_modules= { module= gdb; extra_make_flags="$(X11_FLAGS_TO_PASS)"; };
host_modules= { module= expect; with_x=true; }; host_modules= { module= expect; extra_make_flags="$(X11_FLAGS_TO_PASS)"; };
host_modules= { module= guile; with_x=true; }; host_modules= { module= guile; extra_make_flags="$(X11_FLAGS_TO_PASS)"; };
host_modules= { module= tk; with_x=true; }; host_modules= { module= tk; extra_make_flags="$(X11_FLAGS_TO_PASS)"; };
host_modules= { module= libtermcap; no_check=true; host_modules= { module= libtermcap; no_check=true;
missing=mostlyclean; missing=mostlyclean;
missing=clean; missing=clean;
...@@ -238,14 +238,12 @@ dependencies = { module=configure-gcc; on=configure-intl; }; ...@@ -238,14 +238,12 @@ dependencies = { module=configure-gcc; on=configure-intl; };
dependencies = { module=configure-gcc; on=configure-binutils; }; dependencies = { module=configure-gcc; on=configure-binutils; };
dependencies = { module=configure-gcc; on=configure-gas; }; dependencies = { module=configure-gcc; on=configure-gas; };
dependencies = { module=configure-gcc; on=configure-ld; }; dependencies = { module=configure-gcc; on=configure-ld; };
dependencies = { module=configure-gcc; on=configure-bison; };
dependencies = { module=configure-gcc; on=configure-flex; };
dependencies = { module=all-gcc; on=all-libiberty; hard=true; }; dependencies = { module=all-gcc; on=all-libiberty; hard=true; };
dependencies = { module=all-gcc; on=all-intl; }; dependencies = { module=all-gcc; on=all-intl; };
dependencies = { module=all-gcc; on=all-texinfo; }; dependencies = { module=all-gcc; on=all-build-texinfo; };
dependencies = { module=all-gcc; on=all-bison; }; dependencies = { module=all-gcc; on=all-build-bison; };
dependencies = { module=all-gcc; on=all-byacc; }; dependencies = { module=all-gcc; on=all-build-byacc; };
dependencies = { module=all-gcc; on=all-flex; }; dependencies = { module=all-gcc; on=all-build-flex; };
dependencies = { module=all-gcc; on=all-binutils; }; dependencies = { module=all-gcc; on=all-binutils; };
dependencies = { module=all-gcc; on=all-gas; }; dependencies = { module=all-gcc; on=all-gas; };
dependencies = { module=all-gcc; on=all-ld; }; dependencies = { module=all-gcc; on=all-ld; };
...@@ -268,8 +266,8 @@ dependencies = { module=all-gdb; on=all-libiberty; }; ...@@ -268,8 +266,8 @@ dependencies = { module=all-gdb; on=all-libiberty; };
dependencies = { module=all-gdb; on=all-opcodes; }; dependencies = { module=all-gdb; on=all-opcodes; };
dependencies = { module=all-gdb; on=all-bfd; }; dependencies = { module=all-gdb; on=all-bfd; };
dependencies = { module=all-gdb; on=all-readline; }; dependencies = { module=all-gdb; on=all-readline; };
dependencies = { module=all-gdb; on=all-bison; }; dependencies = { module=all-gdb; on=all-build-bison; };
dependencies = { module=all-gdb; on=all-byacc; }; dependencies = { module=all-gdb; on=all-build-byacc; };
dependencies = { module=all-gdb; on=all-sim; }; dependencies = { module=all-gdb; on=all-sim; };
dependencies = { module=install-gdb; on=install-tcl; }; dependencies = { module=install-gdb; on=install-tcl; };
dependencies = { module=install-gdb; on=install-tk; }; dependencies = { module=install-gdb; on=install-tk; };
...@@ -290,9 +288,9 @@ dependencies = { module=all-bfd; on=all-intl; }; ...@@ -290,9 +288,9 @@ dependencies = { module=all-bfd; on=all-intl; };
dependencies = { module=all-binutils; on=all-libiberty; }; dependencies = { module=all-binutils; on=all-libiberty; };
dependencies = { module=all-binutils; on=all-opcodes; }; dependencies = { module=all-binutils; on=all-opcodes; };
dependencies = { module=all-binutils; on=all-bfd; }; dependencies = { module=all-binutils; on=all-bfd; };
dependencies = { module=all-binutils; on=all-flex; }; dependencies = { module=all-binutils; on=all-build-flex; };
dependencies = { module=all-binutils; on=all-bison; }; dependencies = { module=all-binutils; on=all-build-bison; };
dependencies = { module=all-binutils; on=all-byacc; }; dependencies = { module=all-binutils; on=all-build-byacc; };
dependencies = { module=all-binutils; on=all-intl; }; dependencies = { module=all-binutils; on=all-intl; };
// We put install-opcodes before install-binutils because the installed // We put install-opcodes before install-binutils because the installed
...@@ -314,9 +312,9 @@ dependencies = { module=all-gprof; on=all-intl; }; ...@@ -314,9 +312,9 @@ dependencies = { module=all-gprof; on=all-intl; };
dependencies = { module=all-ld; on=all-libiberty; }; dependencies = { module=all-ld; on=all-libiberty; };
dependencies = { module=all-ld; on=all-bfd; }; dependencies = { module=all-ld; on=all-bfd; };
dependencies = { module=all-ld; on=all-opcodes; }; dependencies = { module=all-ld; on=all-opcodes; };
dependencies = { module=all-ld; on=all-bison; }; dependencies = { module=all-ld; on=all-build-bison; };
dependencies = { module=all-ld; on=all-byacc; }; dependencies = { module=all-ld; on=all-build-byacc; };
dependencies = { module=all-ld; on=all-flex; }; dependencies = { module=all-ld; on=all-build-flex; };
dependencies = { module=all-ld; on=all-intl; }; dependencies = { module=all-ld; on=all-intl; };
dependencies = { module=all-opcodes; on=all-bfd; }; dependencies = { module=all-opcodes; on=all-bfd; };
...@@ -358,43 +356,43 @@ dependencies = { module=all-sim; on=configure-gdb; }; ...@@ -358,43 +356,43 @@ dependencies = { module=all-sim; on=configure-gdb; };
// Other host modules. // Other host modules.
dependencies = { module=all-fastjar; on=all-zlib; }; dependencies = { module=all-fastjar; on=all-zlib; };
dependencies = { module=all-fastjar; on=all-texinfo; }; dependencies = { module=all-fastjar; on=all-build-texinfo; };
dependencies = { module=all-fastjar; on=all-libiberty; }; dependencies = { module=all-fastjar; on=all-libiberty; };
// Warning, these are not well tested. // Warning, these are not well tested.
dependencies = { module=all-autoconf; on=all-m4; }; dependencies = { module=all-autoconf; on=all-m4; };
dependencies = { module=all-autoconf; on=all-texinfo; }; dependencies = { module=all-autoconf; on=all-build-texinfo; };
dependencies = { module=all-automake; on=all-m4; }; dependencies = { module=all-automake; on=all-m4; };
dependencies = { module=all-automake; on=all-texinfo; }; dependencies = { module=all-automake; on=all-build-texinfo; };
dependencies = { module=all-automake; on=all-autoconf; }; dependencies = { module=all-automake; on=all-autoconf; };
dependencies = { module=all-bison; on=all-intl; }; dependencies = { module=all-bison; on=all-intl; };
dependencies = { module=all-bison; on=all-texinfo; }; dependencies = { module=all-bison; on=all-build-texinfo; };
dependencies = { module=all-diff; on=all-intl; }; dependencies = { module=all-diff; on=all-intl; };
dependencies = { module=all-diff; on=all-texinfo; }; dependencies = { module=all-diff; on=all-build-texinfo; };
dependencies = { module=all-fileutils; on=all-intl; }; dependencies = { module=all-fileutils; on=all-intl; };
dependencies = { module=all-fileutils; on=all-texinfo; }; dependencies = { module=all-fileutils; on=all-build-texinfo; };
dependencies = { module=all-flex; on=all-bison; }; dependencies = { module=all-flex; on=all-build-bison; };
dependencies = { module=all-flex; on=all-byacc; }; dependencies = { module=all-flex; on=all-build-byacc; };
dependencies = { module=all-flex; on=all-intl; }; dependencies = { module=all-flex; on=all-intl; };
dependencies = { module=all-flex; on=all-m4; }; dependencies = { module=all-flex; on=all-m4; };
dependencies = { module=all-flex; on=all-texinfo; }; dependencies = { module=all-flex; on=all-build-texinfo; };
dependencies = { module=all-gzip; on=all-intl; }; dependencies = { module=all-gzip; on=all-intl; };
dependencies = { module=all-gzip; on=all-zlib; }; dependencies = { module=all-gzip; on=all-zlib; };
dependencies = { module=all-gzip; on=all-texinfo; }; dependencies = { module=all-gzip; on=all-build-texinfo; };
dependencies = { module=all-hello; on=all-intl; }; dependencies = { module=all-hello; on=all-intl; };
dependencies = { module=all-hello; on=all-texinfo; }; dependencies = { module=all-hello; on=all-build-texinfo; };
dependencies = { module=all-m4; on=all-intl; }; dependencies = { module=all-m4; on=all-intl; };
dependencies = { module=all-m4; on=all-texinfo; }; dependencies = { module=all-m4; on=all-build-texinfo; };
dependencies = { module=all-make; on=all-intl; }; dependencies = { module=all-make; on=all-intl; };
dependencies = { module=all-make; on=all-texinfo; }; dependencies = { module=all-make; on=all-build-texinfo; };
dependencies = { module=all-patch; on=all-texinfo; }; dependencies = { module=all-patch; on=all-build-texinfo; };
dependencies = { module=all-make; on=all-texinfo; }; dependencies = { module=all-make; on=all-build-texinfo; };
dependencies = { module=all-prms; on=all-libiberty; }; dependencies = { module=all-prms; on=all-libiberty; };
dependencies = { module=all-recode; on=all-texinfo; }; dependencies = { module=all-recode; on=all-build-texinfo; };
dependencies = { module=all-sed; on=all-texinfo; }; dependencies = { module=all-sed; on=all-build-texinfo; };
dependencies = { module=all-send-pr; on=all-prms; }; dependencies = { module=all-send-pr; on=all-prms; };
dependencies = { module=all-tar; on=all-texinfo; }; dependencies = { module=all-tar; on=all-build-texinfo; };
dependencies = { module=all-uudecode; on=all-texinfo; }; dependencies = { module=all-uudecode; on=all-build-texinfo; };
// Target modules. These can also have dependencies on the language // Target modules. These can also have dependencies on the language
// environment (e.g. on libstdc++). // environment (e.g. on libstdc++).
...@@ -438,32 +436,32 @@ dependencies = { module=all-target-winsup; on=all-target-libtermcap; }; ...@@ -438,32 +436,32 @@ dependencies = { module=all-target-winsup; on=all-target-libtermcap; };
// Toplevel bootstrap // Toplevel bootstrap
bootstrap_stage = { bootstrap_stage = {
id=1 ; id=1 ;
extra_configure_flags='--disable-intermodule \ stage_configure_flags='--disable-intermodule \
--disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"' ; --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"' ;
extra_make_flags='CFLAGS="$(STAGE1_CFLAGS)"' ; }; stage_make_flags='CFLAGS="$(STAGE1_CFLAGS)"' ; };
bootstrap_stage = { bootstrap_stage = {
id=2 ; prev=1 ; id=2 ; prev=1 ;
bootstrap_target=bootstrap2 ; bootstrap_target=bootstrap2 ;
extra_configure_flags="@stage2_werror_flag@" ; stage_configure_flags="@stage2_werror_flag@" ;
extra_make_flags="" ; }; stage_make_flags="" ; };
bootstrap_stage = { bootstrap_stage = {
id=3 ; prev=2 ; id=3 ; prev=2 ;
compare_target=compare ; compare_target=compare ;
bootstrap_target=bootstrap ; bootstrap_target=bootstrap ;
cleanstrap_target=cleanstrap ; cleanstrap_target=cleanstrap ;
extra_configure_flags="@stage2_werror_flag@" ; stage_configure_flags="@stage2_werror_flag@" ;
extra_make_flags="" ; }; stage_make_flags="" ; };
bootstrap_stage = { bootstrap_stage = {
id=4 ; prev=3 ; id=4 ; prev=3 ;
compare_target=compare3 ; compare_target=compare3 ;
bootstrap_target=bootstrap4 ; bootstrap_target=bootstrap4 ;
extra_configure_flags="@stage2_werror_flag@" ; stage_configure_flags="@stage2_werror_flag@" ;
extra_make_flags="" ; }; stage_make_flags="" ; };
bootstrap_stage = { bootstrap_stage = {
id=profile ; prev=1 ; id=profile ; prev=1 ;
extra_configure_flags="@stage2_werror_flag@" ; stage_configure_flags="@stage2_werror_flag@" ;
extra_make_flags='CFLAGS="$(BOOT_CFLAGS) -fprofile-generate"' ; }; stage_make_flags='CFLAGS="$(BOOT_CFLAGS) -fprofile-generate"' ; };
bootstrap_stage = { bootstrap_stage = {
id=feedback ; prev=1 ; id=feedback ; prev=1 ;
extra_configure_flags="@stage2_werror_flag@" ; stage_configure_flags="@stage2_werror_flag@" ;
extra_make_flags='CFLAGS="$(BOOT_CFLAGS) -fprofile-use"' ; }; stage_make_flags='CFLAGS="$(BOOT_CFLAGS) -fprofile-use"' ; };
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -184,9 +184,11 @@ target_tools="target-examples target-groff target-gperf target-rda" ...@@ -184,9 +184,11 @@ target_tools="target-examples target-groff target-gperf target-rda"
configdirs=`echo ${host_libs} ${host_tools}` configdirs=`echo ${host_libs} ${host_tools}`
target_configdirs=`echo ${target_libraries} ${target_tools}` target_configdirs=`echo ${target_libraries} ${target_tools}`
# Only make build modules if build != host. # Only make build libraries if build != host.
if test ${host_alias} != ${build_alias} ; then if test ${host_alias} != ${build_alias} ; then
build_configdirs=`echo ${build_libs} ${build_tools}` build_configdirs=`echo ${build_libs} ${build_tools}`
else
build_configdirs=`echo ${build_tools}`
fi fi
################################################################################ ################################################################################
...@@ -985,7 +987,6 @@ if test "${build}" != "${host}" ; then ...@@ -985,7 +987,6 @@ if test "${build}" != "${host}" ; then
CXX_FOR_TARGET=${CXX_FOR_TARGET-${target_alias}-c++} CXX_FOR_TARGET=${CXX_FOR_TARGET-${target_alias}-c++}
GCJ_FOR_TARGET=${GCJ_FOR_TARGET-${target_alias}-gcj} GCJ_FOR_TARGET=${GCJ_FOR_TARGET-${target_alias}-gcj}
GCC_FOR_TARGET=${GCC_FOR_TARGET-${CC_FOR_TARGET-${target_alias}-gcc}} GCC_FOR_TARGET=${GCC_FOR_TARGET-${CC_FOR_TARGET-${target_alias}-gcc}}
BUILD_DIR_PREFIX=${build_subdir}
BUILD_PREFIX=${build_alias}- BUILD_PREFIX=${build_alias}-
BUILD_PREFIX_1=${build_alias}- BUILD_PREFIX_1=${build_alias}-
...@@ -1000,7 +1001,6 @@ else ...@@ -1000,7 +1001,6 @@ else
CC_FOR_BUILD="\$(CC)" CC_FOR_BUILD="\$(CC)"
GCC_FOR_TARGET="\$(USUAL_GCC_FOR_TARGET)" GCC_FOR_TARGET="\$(USUAL_GCC_FOR_TARGET)"
BUILD_DIR_PREFIX=
BUILD_PREFIX= BUILD_PREFIX=
BUILD_PREFIX_1=loser- BUILD_PREFIX_1=loser-
...@@ -2089,7 +2089,6 @@ AC_SUBST_FILE(ospace_frag) ...@@ -2089,7 +2089,6 @@ AC_SUBST_FILE(ospace_frag)
# Miscellanea: directories, flags, etc. # Miscellanea: directories, flags, etc.
AC_SUBST(SET_LIB_PATH) AC_SUBST(SET_LIB_PATH)
AC_SUBST(RPATH_ENVVAR) AC_SUBST(RPATH_ENVVAR)
AC_SUBST(BUILD_DIR_PREFIX)
AC_SUBST(BUILD_PREFIX) AC_SUBST(BUILD_PREFIX)
AC_SUBST(BUILD_PREFIX_1) AC_SUBST(BUILD_PREFIX_1)
AC_SUBST(gcc_version_trigger) AC_SUBST(gcc_version_trigger)
......
2004-08-17 Paolo Bonzini <bonzini@gnu.org>
* configure.ac: Trust toplevel's notion of BISON/FLEX/MAKEINFO.
No need to check if in a cross configuration.
* configure: Regenerate.
* calls.c (precompute_register_parameters):
Inline preserve_subexpressions_p ().
* expmed.c (expand_mult_const, emit_store_flag): Likewise.
* optabs.c (expand_binop, expand_twoval_binop, prepare_cmp_insn):
Likewise.
* expr.c (get_subtarget): Likewise.
* rtl.h (preserve_subexpressions_p): Remove.
* stmt.c (preserve_subexpressions_p): Remove.
* dojump.c (do_jump) <COND_EXPR, EQ_EXPR, NE_EXPR,
TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR, COMPOUND_EXPR>:
Abort on gimplified cases.
2004-08-16 James E Wilson <wilson@specifixinc.com> 2004-08-16 James E Wilson <wilson@specifixinc.com>
* tree.h (VECTOR_FLOAT_TYPE_P): New. * tree.h (VECTOR_FLOAT_TYPE_P): New.
...@@ -115,6 +134,7 @@ ...@@ -115,6 +134,7 @@
Check for arificial variables, not is_gimple_tmp_var. Check for arificial variables, not is_gimple_tmp_var.
* tree-ssa-live.c (var_union): Likewise. * tree-ssa-live.c (var_union): Likewise.
>>>>>>> 2.4930
2004-08-16 Nathan Sidwell <nathan@codesourcery.com> 2004-08-16 Nathan Sidwell <nathan@codesourcery.com>
* calls.c (load_register_parameters): Remove spurious FIXME token. * calls.c (load_register_parameters): Remove spurious FIXME token.
......
...@@ -691,7 +691,7 @@ precompute_register_parameters (int num_actuals, struct arg_data *args, int *reg ...@@ -691,7 +691,7 @@ precompute_register_parameters (int num_actuals, struct arg_data *args, int *reg
&& args[i].mode != BLKmode && args[i].mode != BLKmode
&& rtx_cost (args[i].value, SET) > COSTS_N_INSNS (1) && rtx_cost (args[i].value, SET) > COSTS_N_INSNS (1)
&& ((SMALL_REGISTER_CLASSES && *reg_parm_seen) && ((SMALL_REGISTER_CLASSES && *reg_parm_seen)
|| preserve_subexpressions_p ())) || optimize))
args[i].value = copy_to_mode_reg (args[i].mode, args[i].value); args[i].value = copy_to_mode_reg (args[i].mode, args[i].value);
} }
} }
......
...@@ -2666,17 +2666,18 @@ function_arg (CUMULATIVE_ARGS *cum, /* current arg information */ ...@@ -2666,17 +2666,18 @@ function_arg (CUMULATIVE_ARGS *cum, /* current arg information */
&& GET_MODE_CLASS (TYPE_MODE (type)) != MODE_VECTOR_FLOAT) && GET_MODE_CLASS (TYPE_MODE (type)) != MODE_VECTOR_FLOAT)
{ {
enum machine_mode innermode = TYPE_MODE (TREE_TYPE (type)); enum machine_mode innermode = TYPE_MODE (TREE_TYPE (type));
mode = TREE_CODE (TREE_TYPE (type)) == REAL_TYPE enum machine_mode newmode
? MIN_MODE_VECTOR_FLOAT : MIN_MODE_VECTOR_INT; = TREE_CODE (TREE_TYPE (type)) == REAL_TYPE
? MIN_MODE_VECTOR_FLOAT : MIN_MODE_VECTOR_INT;
/* Get the mode which has this inner mode and number of units. */ /* Get the mode which has this inner mode and number of units. */
while (GET_MODE_NUNITS (mode) != TYPE_VECTOR_SUBPARTS (type) for (; newmode != VOIDmode; newmode = GET_MODE_WIDER_MODE (newmode))
|| GET_MODE_INNER (mode) != innermode) if (GET_MODE_NUNITS (newmode) == TYPE_VECTOR_SUBPARTS (type)
{ && GET_MODE_INNER (newmode) == innermode)
mode = GET_MODE_WIDER_MODE (mode); {
if (mode == VOIDmode) mode = newmode;
abort (); break;
} }
} }
/* Handle a hidden AL argument containing number of registers for varargs /* Handle a hidden AL argument containing number of registers for varargs
......
...@@ -756,56 +756,45 @@ gcc_AC_PROG_CMP_IGNORE_INITIAL ...@@ -756,56 +756,45 @@ gcc_AC_PROG_CMP_IGNORE_INITIAL
# See if we have the mktemp command. # See if we have the mktemp command.
AC_CHECK_PROG(have_mktemp_command, mktemp, yes, no) AC_CHECK_PROG(have_mktemp_command, mktemp, yes, no)
# Do we have a single-tree copy of texinfo? MISSING="${CONFIG_SHELL-/bin/sh} $srcdir/../missing"
if test -f $srcdir/../texinfo/Makefile.in; then
MAKEINFO='$(objdir)/../texinfo/makeinfo/makeinfo' # See if makeinfo has been installed and is modern enough
gcc_cv_prog_makeinfo_modern=yes # that we can use it.
AC_MSG_RESULT([Using makeinfo from the unified source tree.]) gcc_AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
else
# See if makeinfo has been installed and is modern enough
# that we can use it.
gcc_AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
[GNU texinfo.* \([0-9][0-9.]*\)], [GNU texinfo.* \([0-9][0-9.]*\)],
[4.[2-9]*]) [4.[2-9]*])
fi
if test $gcc_cv_prog_makeinfo_modern = no; then if test $gcc_cv_prog_makeinfo_modern = no; then
MAKEINFO="$MISSING makeinfo"
AC_MSG_WARN([ AC_MSG_WARN([
*** Makeinfo is missing or too old. *** Makeinfo is missing or too old.
*** Info documentation will not be built.]) *** Info documentation will not be built.])
BUILD_INFO= BUILD_INFO=
else else
BUILD_INFO=info AC_SUBST(BUILD_INFO) BUILD_INFO=info
fi fi
AC_SUBST(BUILD_INFO)
# Is pod2man recent enough to regenerate manpages? # Is pod2man recent enough to regenerate manpages?
AC_MSG_CHECKING([for recent Pod::Man]) AC_MSG_CHECKING([for recent Pod::Man])
if (perl -e 'use 1.10 Pod::Man') >/dev/null 2>&1; then if (perl -e 'use 1.10 Pod::Man') >/dev/null 2>&1; then
AC_MSG_RESULT(yes) AC_MSG_RESULT(yes)
GENERATED_MANPAGES=generated-manpages AC_SUBST(GENERATED_MANPAGES) GENERATED_MANPAGES=generated-manpages
else else
AC_MSG_RESULT(no) AC_MSG_RESULT(no)
GENERATED_MANPAGES= GENERATED_MANPAGES=
fi fi
AC_SUBST(GENERATED_MANPAGES)
# How about lex? # How about lex?
dnl Don't use AC_PROG_LEX; we insist on flex. dnl Don't use AC_PROG_LEX; we insist on flex.
dnl LEXLIB is not useful in gcc. dnl LEXLIB is not useful in gcc.
if test x${build} = x${host} && test -f $srcdir/../flex/skel.c \ AC_CHECK_PROGS([FLEX], flex, [$MISSING flex])
&& test -d ../flex ; then
FLEX='$(objdir)/../flex/flex'
else
AC_CHECK_PROG(FLEX, flex, flex, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing flex)
fi
# Bison? # Bison?
# The -L switch is so bison can find its skeleton file. AC_CHECK_PROGS([BISON], bison, [$MISSING bison])
if test x${build} = x${host} && test -f $srcdir/../bison/bison.simple \
&& test -d ../bison ; then # Binutils are not build modules, unlike bison/flex/makeinfo. So we
BISON='$(objdir)/../bison/bison -L $(srcdir)/../bison/' # check for build == host before using them.
else
AC_CHECK_PROG(BISON, bison, bison, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing bison)
fi
# NM # NM
if test x${build} = x${host} && test -f $srcdir/../binutils/nm.c \ if test x${build} = x${host} && test -f $srcdir/../binutils/nm.c \
......
...@@ -208,19 +208,6 @@ do_jump (tree exp, rtx if_false_label, rtx if_true_label) ...@@ -208,19 +208,6 @@ do_jump (tree exp, rtx if_false_label, rtx if_true_label)
do_jump (TREE_OPERAND (exp, 0), if_false_label, if_true_label); do_jump (TREE_OPERAND (exp, 0), if_false_label, if_true_label);
break; break;
#if 0
/* This is never less insns than evaluating the PLUS_EXPR followed by
a test and can be longer if the test is eliminated. */
case PLUS_EXPR:
/* Reduce to minus. */
exp = build2 (MINUS_EXPR, TREE_TYPE (exp),
TREE_OPERAND (exp, 0),
fold (build1 (NEGATE_EXPR,
TREE_TYPE (TREE_OPERAND (exp, 1)),
TREE_OPERAND (exp, 1))));
/* Process as MINUS. */
#endif
case MINUS_EXPR: case MINUS_EXPR:
/* Nonzero iff operands of minus differ. */ /* Nonzero iff operands of minus differ. */
do_compare_and_jump (build2 (NE_EXPR, TREE_TYPE (exp), do_compare_and_jump (build2 (NE_EXPR, TREE_TYPE (exp),
...@@ -281,28 +268,11 @@ do_jump (tree exp, rtx if_false_label, rtx if_true_label) ...@@ -281,28 +268,11 @@ do_jump (tree exp, rtx if_false_label, rtx if_true_label)
break; break;
case TRUTH_ANDIF_EXPR: case TRUTH_ANDIF_EXPR:
if (if_false_label == 0)
if_false_label = drop_through_label = gen_label_rtx ();
do_jump (TREE_OPERAND (exp, 0), if_false_label, NULL_RTX);
do_jump (TREE_OPERAND (exp, 1), if_false_label, if_true_label);
break;
case TRUTH_ORIF_EXPR: case TRUTH_ORIF_EXPR:
if (if_true_label == 0)
if_true_label = drop_through_label = gen_label_rtx ();
do_jump (TREE_OPERAND (exp, 0), NULL_RTX, if_true_label);
do_jump (TREE_OPERAND (exp, 1), if_false_label, if_true_label);
break;
case COMPOUND_EXPR: case COMPOUND_EXPR:
push_temp_slots (); case COND_EXPR:
expand_expr (TREE_OPERAND (exp, 0), const0_rtx, VOIDmode, 0); /* Lowered by gimplify.c. */
preserve_temp_slots (NULL_RTX); abort ();
free_temp_slots ();
pop_temp_slots ();
do_pending_stack_adjust ();
do_jump (TREE_OPERAND (exp, 1), if_false_label, if_true_label);
break;
case COMPONENT_REF: case COMPONENT_REF:
case BIT_FIELD_REF: case BIT_FIELD_REF:
...@@ -334,70 +304,15 @@ do_jump (tree exp, rtx if_false_label, rtx if_true_label) ...@@ -334,70 +304,15 @@ do_jump (tree exp, rtx if_false_label, rtx if_true_label)
goto normal; goto normal;
} }
case COND_EXPR:
/* Do (a ? 1 : 0) and (a ? 0 : 1) as special cases. */
if (integer_onep (TREE_OPERAND (exp, 1))
&& integer_zerop (TREE_OPERAND (exp, 2)))
do_jump (TREE_OPERAND (exp, 0), if_false_label, if_true_label);
else if (integer_zerop (TREE_OPERAND (exp, 1))
&& integer_onep (TREE_OPERAND (exp, 2)))
do_jump (TREE_OPERAND (exp, 0), if_true_label, if_false_label);
else
{
rtx label1 = gen_label_rtx ();
drop_through_label = gen_label_rtx ();
do_jump (TREE_OPERAND (exp, 0), label1, NULL_RTX);
/* Now the THEN-expression. */
do_jump (TREE_OPERAND (exp, 1),
if_false_label ? if_false_label : drop_through_label,
if_true_label ? if_true_label : drop_through_label);
/* In case the do_jump just above never jumps. */
do_pending_stack_adjust ();
emit_label (label1);
/* Now the ELSE-expression. */
do_jump (TREE_OPERAND (exp, 2),
if_false_label ? if_false_label : drop_through_label,
if_true_label ? if_true_label : drop_through_label);
}
break;
case EQ_EXPR: case EQ_EXPR:
{ {
tree inner_type = TREE_TYPE (TREE_OPERAND (exp, 0)); tree inner_type = TREE_TYPE (TREE_OPERAND (exp, 0));
if (GET_MODE_CLASS (TYPE_MODE (inner_type)) == MODE_COMPLEX_FLOAT if (GET_MODE_CLASS (TYPE_MODE (inner_type)) == MODE_COMPLEX_FLOAT
|| GET_MODE_CLASS (TYPE_MODE (inner_type)) == MODE_COMPLEX_INT) || GET_MODE_CLASS (TYPE_MODE (inner_type)) == MODE_COMPLEX_INT)
{ abort ();
tree exp0 = save_expr (TREE_OPERAND (exp, 0));
tree exp1 = save_expr (TREE_OPERAND (exp, 1));
do_jump
(fold
(build2 (TRUTH_ANDIF_EXPR, TREE_TYPE (exp),
fold (build2 (EQ_EXPR, TREE_TYPE (exp),
fold (build1 (REALPART_EXPR,
TREE_TYPE (inner_type),
exp0)),
fold (build1 (REALPART_EXPR,
TREE_TYPE (inner_type),
exp1)))),
fold (build2 (EQ_EXPR, TREE_TYPE (exp),
fold (build1 (IMAGPART_EXPR,
TREE_TYPE (inner_type),
exp0)),
fold (build1 (IMAGPART_EXPR,
TREE_TYPE (inner_type),
exp1)))))),
if_false_label, if_true_label);
}
else if (integer_zerop (TREE_OPERAND (exp, 1))) else if (integer_zerop (TREE_OPERAND (exp, 1)))
do_jump (TREE_OPERAND (exp, 0), if_true_label, if_false_label); do_jump (TREE_OPERAND (exp, 0), if_true_label, if_false_label);
else if (GET_MODE_CLASS (TYPE_MODE (inner_type)) == MODE_INT else if (GET_MODE_CLASS (TYPE_MODE (inner_type)) == MODE_INT
&& !can_compare_p (EQ, TYPE_MODE (inner_type), ccp_jump)) && !can_compare_p (EQ, TYPE_MODE (inner_type), ccp_jump))
do_jump_by_parts_equality (exp, if_false_label, if_true_label); do_jump_by_parts_equality (exp, if_false_label, if_true_label);
...@@ -412,32 +327,9 @@ do_jump (tree exp, rtx if_false_label, rtx if_true_label) ...@@ -412,32 +327,9 @@ do_jump (tree exp, rtx if_false_label, rtx if_true_label)
if (GET_MODE_CLASS (TYPE_MODE (inner_type)) == MODE_COMPLEX_FLOAT if (GET_MODE_CLASS (TYPE_MODE (inner_type)) == MODE_COMPLEX_FLOAT
|| GET_MODE_CLASS (TYPE_MODE (inner_type)) == MODE_COMPLEX_INT) || GET_MODE_CLASS (TYPE_MODE (inner_type)) == MODE_COMPLEX_INT)
{ abort ();
tree exp0 = save_expr (TREE_OPERAND (exp, 0));
tree exp1 = save_expr (TREE_OPERAND (exp, 1));
do_jump
(fold
(build2 (TRUTH_ORIF_EXPR, TREE_TYPE (exp),
fold (build2 (NE_EXPR, TREE_TYPE (exp),
fold (build1 (REALPART_EXPR,
TREE_TYPE (inner_type),
exp0)),
fold (build1 (REALPART_EXPR,
TREE_TYPE (inner_type),
exp1)))),
fold (build2 (NE_EXPR, TREE_TYPE (exp),
fold (build1 (IMAGPART_EXPR,
TREE_TYPE (inner_type),
exp0)),
fold (build1 (IMAGPART_EXPR,
TREE_TYPE (inner_type),
exp1)))))),
if_false_label, if_true_label);
}
else if (integer_zerop (TREE_OPERAND (exp, 1))) else if (integer_zerop (TREE_OPERAND (exp, 1)))
do_jump (TREE_OPERAND (exp, 0), if_false_label, if_true_label); do_jump (TREE_OPERAND (exp, 0), if_false_label, if_true_label);
else if (GET_MODE_CLASS (TYPE_MODE (inner_type)) == MODE_INT else if (GET_MODE_CLASS (TYPE_MODE (inner_type)) == MODE_INT
&& !can_compare_p (NE, TYPE_MODE (inner_type), ccp_jump)) && !can_compare_p (NE, TYPE_MODE (inner_type), ccp_jump))
do_jump_by_parts_equality (exp, if_true_label, if_false_label); do_jump_by_parts_equality (exp, if_true_label, if_false_label);
...@@ -602,15 +494,6 @@ do_jump (tree exp, rtx if_false_label, rtx if_true_label) ...@@ -602,15 +494,6 @@ do_jump (tree exp, rtx if_false_label, rtx if_true_label)
default: default:
normal: normal:
temp = expand_expr (exp, NULL_RTX, VOIDmode, 0); temp = expand_expr (exp, NULL_RTX, VOIDmode, 0);
#if 0
/* This is not needed any more and causes poor code since it causes
comparisons and tests from non-SI objects to have different code
sequences. */
/* Copy to register to avoid generating bad insns by cse
from (set (mem ...) (arithop)) (set (cc0) (mem ...)). */
if (!cse_not_expected && MEM_P (temp))
temp = copy_to_reg (temp);
#endif
do_pending_stack_adjust (); do_pending_stack_adjust ();
if (GET_CODE (temp) == CONST_INT if (GET_CODE (temp) == CONST_INT
......
...@@ -2547,13 +2547,12 @@ expand_mult_const (enum machine_mode mode, rtx op0, HOST_WIDE_INT val, ...@@ -2547,13 +2547,12 @@ expand_mult_const (enum machine_mode mode, rtx op0, HOST_WIDE_INT val,
for (opno = 1; opno < alg->ops; opno++) for (opno = 1; opno < alg->ops; opno++)
{ {
int log = alg->log[opno]; int log = alg->log[opno];
int preserve = preserve_subexpressions_p (); rtx shift_subtarget = optimize ? 0 : accum;
rtx shift_subtarget = preserve ? 0 : accum;
rtx add_target rtx add_target
= (opno == alg->ops - 1 && target != 0 && variant != add_variant = (opno == alg->ops - 1 && target != 0 && variant != add_variant
&& ! preserve) && !optimize)
? target : 0; ? target : 0;
rtx accum_target = preserve ? 0 : accum; rtx accum_target = optimize ? 0 : accum;
switch (alg->op[opno]) switch (alg->op[opno])
{ {
...@@ -2615,8 +2614,8 @@ expand_mult_const (enum machine_mode mode, rtx op0, HOST_WIDE_INT val, ...@@ -2615,8 +2614,8 @@ expand_mult_const (enum machine_mode mode, rtx op0, HOST_WIDE_INT val,
build_int_cst (NULL_TREE, log, 0), build_int_cst (NULL_TREE, log, 0),
NULL_RTX, 0); NULL_RTX, 0);
accum = force_operand (gen_rtx_MINUS (mode, tem, accum), accum = force_operand (gen_rtx_MINUS (mode, tem, accum),
(add_target ? add_target (add_target
: preserve ? 0 : tem)); ? add_target : (optimize ? 0 : tem)));
val_so_far = (val_so_far << log) - val_so_far; val_so_far = (val_so_far << log) - val_so_far;
break; break;
...@@ -4829,8 +4828,7 @@ emit_store_flag (rtx target, enum rtx_code code, rtx op0, rtx op1, ...@@ -4829,8 +4828,7 @@ emit_store_flag (rtx target, enum rtx_code code, rtx op0, rtx op1,
compare_mode = insn_data[(int) icode].operand[0].mode; compare_mode = insn_data[(int) icode].operand[0].mode;
subtarget = target; subtarget = target;
pred = insn_data[(int) icode].operand[0].predicate; pred = insn_data[(int) icode].operand[0].predicate;
if (preserve_subexpressions_p () if (optimize || ! (*pred) (subtarget, compare_mode))
|| ! (*pred) (subtarget, compare_mode))
subtarget = gen_reg_rtx (compare_mode); subtarget = gen_reg_rtx (compare_mode);
pattern = GEN_FCN (icode) (subtarget); pattern = GEN_FCN (icode) (subtarget);
...@@ -4863,7 +4861,7 @@ emit_store_flag (rtx target, enum rtx_code code, rtx op0, rtx op1, ...@@ -4863,7 +4861,7 @@ emit_store_flag (rtx target, enum rtx_code code, rtx op0, rtx op1,
/* If we want to keep subexpressions around, don't reuse our /* If we want to keep subexpressions around, don't reuse our
last target. */ last target. */
if (preserve_subexpressions_p ()) if (optimize)
subtarget = 0; subtarget = 0;
/* Now normalize to the proper value in COMPARE_MODE. Sometimes /* Now normalize to the proper value in COMPARE_MODE. Sometimes
...@@ -4908,10 +4906,10 @@ emit_store_flag (rtx target, enum rtx_code code, rtx op0, rtx op1, ...@@ -4908,10 +4906,10 @@ emit_store_flag (rtx target, enum rtx_code code, rtx op0, rtx op1,
delete_insns_since (last); delete_insns_since (last);
/* If expensive optimizations, use different pseudo registers for each /* If optimizing, use different pseudo registers for each insn, instead
insn, instead of reusing the same pseudo. This leads to better CSE, of reusing the same pseudo. This leads to better CSE, but slows
but slows down the compiler, since there are more pseudos */ down the compiler, since there are more pseudos */
subtarget = (!flag_expensive_optimizations subtarget = (!optimize
&& (target_mode == mode)) ? target : NULL_RTX; && (target_mode == mode)) ? target : NULL_RTX;
/* If we reached here, we can't do this with a scc insn. However, there /* If we reached here, we can't do this with a scc insn. However, there
......
...@@ -3445,16 +3445,14 @@ emit_push_insn (rtx x, enum machine_mode mode, tree type, rtx size, ...@@ -3445,16 +3445,14 @@ emit_push_insn (rtx x, enum machine_mode mode, tree type, rtx size,
static rtx static rtx
get_subtarget (rtx x) get_subtarget (rtx x)
{ {
return ((x == 0 return (optimize
|| x == 0
/* Only registers can be subtargets. */ /* Only registers can be subtargets. */
|| !REG_P (x) || !REG_P (x)
/* If the register is readonly, it can't be set more than once. */ /* If the register is readonly, it can't be set more than once. */
|| RTX_UNCHANGING_P (x) || RTX_UNCHANGING_P (x)
/* Don't use hard regs to avoid extending their life. */ /* Don't use hard regs to avoid extending their life. */
|| REGNO (x) < FIRST_PSEUDO_REGISTER || REGNO (x) < FIRST_PSEUDO_REGISTER
/* Avoid subtargets inside loops,
since they hide some invariant expressions. */
|| preserve_subexpressions_p ())
? 0 : x); ? 0 : x);
} }
......
...@@ -782,13 +782,13 @@ expand_binop (enum machine_mode mode, optab binoptab, rtx op0, rtx op1, ...@@ -782,13 +782,13 @@ expand_binop (enum machine_mode mode, optab binoptab, rtx op0, rtx op1,
binoptab = add_optab; binoptab = add_optab;
} }
/* If we are inside an appropriately-short loop and one operand is an /* If we are inside an appropriately-short loop and we are optimizing,
expensive constant, force it into a register. */ force expensive constants into a register. */
if (CONSTANT_P (op0) && preserve_subexpressions_p () if (CONSTANT_P (op0) && optimize
&& rtx_cost (op0, binoptab->code) > COSTS_N_INSNS (1)) && rtx_cost (op0, binoptab->code) > COSTS_N_INSNS (1))
op0 = force_reg (mode, op0); op0 = force_reg (mode, op0);
if (CONSTANT_P (op1) && preserve_subexpressions_p () if (CONSTANT_P (op1) && optimize
&& ! shift_op && rtx_cost (op1, binoptab->code) > COSTS_N_INSNS (1)) && ! shift_op && rtx_cost (op1, binoptab->code) > COSTS_N_INSNS (1))
op1 = force_reg (mode, op1); op1 = force_reg (mode, op1);
...@@ -2348,13 +2348,13 @@ expand_twoval_binop (optab binoptab, rtx op0, rtx op1, rtx targ0, rtx targ1, ...@@ -2348,13 +2348,13 @@ expand_twoval_binop (optab binoptab, rtx op0, rtx op1, rtx targ0, rtx targ1,
op1 = force_not_mem (op1); op1 = force_not_mem (op1);
} }
/* If we are inside an appropriately-short loop and one operand is an /* If we are inside an appropriately-short loop and we are optimizing,
expensive constant, force it into a register. */ force expensive constants into a register. */
if (CONSTANT_P (op0) && preserve_subexpressions_p () if (CONSTANT_P (op0) && optimize
&& rtx_cost (op0, binoptab->code) > COSTS_N_INSNS (1)) && rtx_cost (op0, binoptab->code) > COSTS_N_INSNS (1))
op0 = force_reg (mode, op0); op0 = force_reg (mode, op0);
if (CONSTANT_P (op1) && preserve_subexpressions_p () if (CONSTANT_P (op1) && optimize
&& rtx_cost (op1, binoptab->code) > COSTS_N_INSNS (1)) && rtx_cost (op1, binoptab->code) > COSTS_N_INSNS (1))
op1 = force_reg (mode, op1); op1 = force_reg (mode, op1);
...@@ -3750,13 +3750,13 @@ prepare_cmp_insn (rtx *px, rtx *py, enum rtx_code *pcomparison, rtx size, ...@@ -3750,13 +3750,13 @@ prepare_cmp_insn (rtx *px, rtx *py, enum rtx_code *pcomparison, rtx size,
} }
} }
/* If we are inside an appropriately-short loop and one operand is an /* If we are inside an appropriately-short loop and we are optimizing,
expensive constant, force it into a register. */ force expensive constants into a register. */
if (CONSTANT_P (x) && preserve_subexpressions_p () if (CONSTANT_P (x) && optimize
&& rtx_cost (x, COMPARE) > COSTS_N_INSNS (1)) && rtx_cost (x, COMPARE) > COSTS_N_INSNS (1))
x = force_reg (mode, x); x = force_reg (mode, x);
if (CONSTANT_P (y) && preserve_subexpressions_p () if (CONSTANT_P (y) && optimize
&& rtx_cost (y, COMPARE) > COSTS_N_INSNS (1)) && rtx_cost (y, COMPARE) > COSTS_N_INSNS (1))
y = force_reg (mode, y); y = force_reg (mode, y);
......
...@@ -2239,7 +2239,6 @@ extern void update_temp_slot_address (rtx, rtx); ...@@ -2239,7 +2239,6 @@ extern void update_temp_slot_address (rtx, rtx);
extern void expand_null_return (void); extern void expand_null_return (void);
extern void expand_naked_return (void); extern void expand_naked_return (void);
extern void emit_jump (rtx); extern void emit_jump (rtx);
extern int preserve_subexpressions_p (void);
/* In expr.c */ /* In expr.c */
extern rtx move_by_pieces (rtx, rtx, unsigned HOST_WIDE_INT, extern rtx move_by_pieces (rtx, rtx, unsigned HOST_WIDE_INT,
......
...@@ -1491,16 +1491,6 @@ warn_if_unused_value (tree exp, location_t locus) ...@@ -1491,16 +1491,6 @@ warn_if_unused_value (tree exp, location_t locus)
return 1; return 1;
} }
} }
/* Return nonzero if we should preserve sub-expressions as separate
pseudos. We never do so if we aren't optimizing. We always do so
if -fexpensive-optimizations. */
int
preserve_subexpressions_p (void)
{
return optimize && (cfun || flag_expensive_optimizations);
}
/* Generate RTL to return from the current function, with no value. /* Generate RTL to return from the current function, with no value.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment