summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2008-02-26 13:09:58 +0000
committerbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2008-02-26 13:09:58 +0000
commitb8053af55de78a3f080783e5113fd6452e5a43c5 (patch)
treea5906142e844e296abb7382e34657faf4e58f74f
parent4896274c9597b09d4c61bdd2efb3201a72634b3c (diff)
downloadgcc-b8053af55de78a3f080783e5113fd6452e5a43c5.tar.gz
2008-02-26 Basile Starynkevitch <basile@starynkevitch.net>
MELT branch merged with trunk r132671 Merged revisions 132452-132671 via svnmerge from svn+ssh://bstarynk@gcc.gnu.org/svn/gcc/trunk git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/melt-branch@132672 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--ChangeLog37
-rw-r--r--MAINTAINERS2
-rw-r--r--Makefile.def24
-rw-r--r--Makefile.in1801
-rw-r--r--Makefile.tpl57
-rw-r--r--boehm-gc/ChangeLog7
-rw-r--r--boehm-gc/dyn_load.c17
-rw-r--r--boehm-gc/include/private/gc_priv.h12
-rw-r--r--config/ChangeLog9
-rw-r--r--config/mh-ppc-darwin3
-rwxr-xr-xconfigure42
-rw-r--r--configure.ac32
-rw-r--r--fixincludes/ChangeLog12
-rw-r--r--fixincludes/fixincl.c3
-rw-r--r--fixincludes/fixincl.x55
-rw-r--r--fixincludes/inclhack.def24
-rw-r--r--fixincludes/tests/base/iso/math_c99.h7
-rw-r--r--gcc/ChangeLog564
-rw-r--r--gcc/DATESTAMP2
-rw-r--r--gcc/Makefile.in16
-rw-r--r--gcc/ada/ChangeLog32
-rw-r--r--gcc/ada/gnat_rm.texi76
-rw-r--r--gcc/ada/gnat_ugn.texi455
-rw-r--r--gcc/alias.c3
-rw-r--r--gcc/alias.h1
-rw-r--r--gcc/bb-reorder.c8
-rw-r--r--gcc/builtins.c3
-rw-r--r--gcc/builtins.def6
-rw-r--r--gcc/c-common.c25
-rw-r--r--gcc/c-decl.c5
-rw-r--r--gcc/c-pch.c5
-rw-r--r--gcc/c-typeck.c37
-rw-r--r--gcc/c.opt4
-rw-r--r--gcc/common.opt19
-rw-r--r--gcc/config.build8
-rw-r--r--gcc/config.gcc2
-rw-r--r--gcc/config/avr/libgcc.S50
-rw-r--r--gcc/config/cris/cris.h1
-rw-r--r--gcc/config/darwin-protos.h1
-rw-r--r--gcc/config/darwin.c48
-rw-r--r--gcc/config/h8300/h8300.c2
-rw-r--r--gcc/config/h8300/h8300.md3
-rw-r--r--gcc/config/i386/i386.c2
-rw-r--r--gcc/config/i386/i386.h3
-rw-r--r--gcc/config/i386/i386.md176
-rw-r--r--gcc/config/i386/mmx.md16
-rw-r--r--gcc/config/i386/netware-libgcc.exp9
-rw-r--r--gcc/config/i386/netware.c191
-rw-r--r--gcc/config/i386/netware.h24
-rw-r--r--gcc/config/i386/sse.md2722
-rw-r--r--gcc/config/mips/mips.md12
-rw-r--r--gcc/config/rs6000/darwin.h3
-rw-r--r--gcc/config/rs6000/eabispe.h2
-rw-r--r--gcc/config/rs6000/linuxspe.h2
-rw-r--r--gcc/config/rs6000/rs6000.c105
-rw-r--r--gcc/config/rs6000/rs6000.h27
-rw-r--r--gcc/config/rs6000/rs6000.md3
-rw-r--r--gcc/config/sh/sh.c13
-rw-r--r--gcc/config/sh/sh.md2
-rw-r--r--gcc/config/spu/spu.md176
-rwxr-xr-xgcc/configure7
-rw-r--r--gcc/cp/ChangeLog81
-rw-r--r--gcc/cp/cxx-pretty-print.c24
-rw-r--r--gcc/cp/decl.c5
-rw-r--r--gcc/cp/error.c42
-rw-r--r--gcc/cp/friend.c14
-rw-r--r--gcc/cp/name-lookup.c12
-rw-r--r--gcc/cp/parser.c28
-rw-r--r--gcc/cp/pt.c11
-rw-r--r--gcc/cp/typeck.c83
-rw-r--r--gcc/cse.c17
-rw-r--r--gcc/doc/install.texi48
-rwxr-xr-xgcc/doc/install.texi2html4
-rw-r--r--gcc/doc/invoke.texi26
-rw-r--r--gcc/explow.c1
-rw-r--r--gcc/expmed.c19
-rw-r--r--gcc/expr.c1
-rw-r--r--gcc/final.c9
-rw-r--r--gcc/flags.h6
-rw-r--r--gcc/fold-const.c13
-rw-r--r--gcc/fortran/ChangeLog209
-rw-r--r--gcc/fortran/arith.c2
-rw-r--r--gcc/fortran/arith.h2
-rw-r--r--gcc/fortran/array.c2
-rw-r--r--gcc/fortran/bbt.c2
-rw-r--r--gcc/fortran/check.c2
-rw-r--r--gcc/fortran/convert.c4
-rw-r--r--gcc/fortran/data.c2
-rw-r--r--gcc/fortran/data.h2
-rw-r--r--gcc/fortran/decl.c2
-rw-r--r--gcc/fortran/dependency.c2
-rw-r--r--gcc/fortran/dependency.h2
-rw-r--r--gcc/fortran/dump-parse-tree.c2
-rw-r--r--gcc/fortran/error.c2
-rw-r--r--gcc/fortran/expr.c2
-rw-r--r--gcc/fortran/f95-lang.c17
-rw-r--r--gcc/fortran/gfc-internals.texi8
-rw-r--r--gcc/fortran/gfortran.h2
-rw-r--r--gcc/fortran/gfortran.texi6
-rw-r--r--gcc/fortran/gfortranspec.c3
-rw-r--r--gcc/fortran/interface.c2
-rw-r--r--gcc/fortran/intrinsic.c2
-rw-r--r--gcc/fortran/intrinsic.h2
-rw-r--r--gcc/fortran/intrinsic.texi26
-rw-r--r--gcc/fortran/invoke.texi2
-rw-r--r--gcc/fortran/io.c2
-rw-r--r--gcc/fortran/iresolve.c34
-rw-r--r--gcc/fortran/iso-c-binding.def2
-rw-r--r--gcc/fortran/iso-fortran-env.def2
-rw-r--r--gcc/fortran/lang-specs.h2
-rw-r--r--gcc/fortran/lang.opt3
-rw-r--r--gcc/fortran/libgfortran.h2
-rw-r--r--gcc/fortran/match.c9
-rw-r--r--gcc/fortran/match.h2
-rw-r--r--gcc/fortran/matchexp.c2
-rw-r--r--gcc/fortran/misc.c2
-rw-r--r--gcc/fortran/module.c2
-rw-r--r--gcc/fortran/openmp.c2
-rw-r--r--gcc/fortran/options.c2
-rw-r--r--gcc/fortran/parse.c2
-rw-r--r--gcc/fortran/parse.h3
-rw-r--r--gcc/fortran/primary.c2
-rw-r--r--gcc/fortran/resolve.c2
-rw-r--r--gcc/fortran/scanner.c2
-rw-r--r--gcc/fortran/simplify.c18
-rw-r--r--gcc/fortran/st.c2
-rw-r--r--gcc/fortran/symbol.c2
-rw-r--r--gcc/fortran/target-memory.c2
-rw-r--r--gcc/fortran/target-memory.h2
-rw-r--r--gcc/fortran/trans-array.c163
-rw-r--r--gcc/fortran/trans-array.h4
-rw-r--r--gcc/fortran/trans-common.c6
-rw-r--r--gcc/fortran/trans-const.c50
-rw-r--r--gcc/fortran/trans-const.h3
-rw-r--r--gcc/fortran/trans-decl.c64
-rw-r--r--gcc/fortran/trans-expr.c82
-rw-r--r--gcc/fortran/trans-intrinsic.c214
-rw-r--r--gcc/fortran/trans-io.c81
-rw-r--r--gcc/fortran/trans-openmp.c12
-rw-r--r--gcc/fortran/trans-stmt.c59
-rw-r--r--gcc/fortran/trans-stmt.h3
-rw-r--r--gcc/fortran/trans-types.c4
-rw-r--r--gcc/fortran/trans-types.h4
-rw-r--r--gcc/fortran/trans.c55
-rw-r--r--gcc/fortran/trans.h4
-rw-r--r--gcc/fortran/types.def2
-rw-r--r--gcc/modulo-sched.c47
-rw-r--r--gcc/opts.c51
-rw-r--r--gcc/opts.h1
-rw-r--r--gcc/predict.c2
-rw-r--r--gcc/predict.def10
-rw-r--r--gcc/regclass.c4
-rw-r--r--gcc/simplify-rtx.c13
-rw-r--r--gcc/stor-layout.c8
-rw-r--r--gcc/testsuite/ChangeLog255
-rw-r--r--gcc/testsuite/g++.dg/compat/struct-layout-1.h4
-rw-r--r--gcc/testsuite/g++.dg/compat/struct-layout-1_generate.c38
-rw-r--r--gcc/testsuite/g++.dg/lookup/strong-using-1.C3
-rw-r--r--gcc/testsuite/g++.dg/lookup/strong-using-2.C6
-rw-r--r--gcc/testsuite/g++.dg/lookup/strong-using-3.C3
-rw-r--r--gcc/testsuite/g++.dg/template/nontype16.C2
-rw-r--r--gcc/testsuite/g++.dg/template/nontype17.C6
-rw-r--r--gcc/testsuite/g++.old-deja/g++.other/store-expr1.C1
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/nest-align-1.c2
-rw-r--r--gcc/testsuite/gcc.dg/20011021-1.c8
-rw-r--r--gcc/testsuite/gcc.dg/20020426-2.c1
-rw-r--r--gcc/testsuite/gcc.dg/builtins-config.h2
-rw-r--r--gcc/testsuite/gcc.dg/debug/dwarf2/aranges-fnsec-1.c2
-rw-r--r--gcc/testsuite/gcc.dg/dfp/compare-special.h30
-rw-r--r--gcc/testsuite/gcc.dg/pthread-init-1.c1
-rw-r--r--gcc/testsuite/gcc.dg/pthread-init-2.c1
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/recip-3.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-10.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/no-vfa-pr29145.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-117.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-99.c13
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16b.c4
-rw-r--r--gcc/testsuite/gcc.target/i386/movq-2.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/pr25993.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/vecinit-1.c1
-rw-r--r--gcc/testsuite/gcc.target/i386/vecinit-2.c1
-rw-r--r--gcc/testsuite/gcc.target/i386/vecinit-3.c1
-rw-r--r--gcc/testsuite/gcc.target/i386/vecinit-4.c1
-rw-r--r--gcc/testsuite/gfortran.dg/fmt_zero_digits.f9026
-rw-r--r--gcc/testsuite/gfortran.dg/large_real_kind_2.F902
-rw-r--r--gcc/testsuite/gfortran.dg/large_real_kind_form_io_2.f902
-rw-r--r--gcc/testsuite/lib/prune.exp2
-rw-r--r--gcc/testsuite/lib/target-supports.exp17
-rw-r--r--gcc/toplev.c7
-rw-r--r--gcc/tree-complex.c3
-rw-r--r--gcc/tree-inline.c1
-rw-r--r--gcc/tree-pretty-print.c6
-rw-r--r--gcc/tree-ssa-reassoc.c22
-rw-r--r--gcc/tree-vectorizer.c10
-rw-r--r--gcc/tree-vrp.c42
-rw-r--r--gcc/tree.def4
-rw-r--r--gcc/tree.h2
-rw-r--r--libcpp/ChangeLog17
-rw-r--r--libcpp/Makefile.in2
-rw-r--r--libcpp/identifiers.c17
-rw-r--r--libcpp/include/line-map.h4
-rw-r--r--libcpp/lex.c6
-rw-r--r--libcpp/line-map.c7
-rw-r--r--libcpp/traditional.c4
-rw-r--r--libgfortran/ChangeLog52
-rw-r--r--libgfortran/Makefile.am3
-rw-r--r--libgfortran/Makefile.in15
-rw-r--r--libgfortran/acinclude.m46
-rw-r--r--libgfortran/generated/all_l1.c5
-rw-r--r--libgfortran/generated/all_l16.c5
-rw-r--r--libgfortran/generated/all_l2.c5
-rw-r--r--libgfortran/generated/all_l4.c5
-rw-r--r--libgfortran/generated/all_l8.c5
-rw-r--r--libgfortran/generated/any_l1.c5
-rw-r--r--libgfortran/generated/any_l16.c5
-rw-r--r--libgfortran/generated/any_l2.c5
-rw-r--r--libgfortran/generated/any_l4.c5
-rw-r--r--libgfortran/generated/any_l8.c5
-rw-r--r--libgfortran/generated/count_16_l.c5
-rw-r--r--libgfortran/generated/count_1_l.c5
-rw-r--r--libgfortran/generated/count_2_l.c5
-rw-r--r--libgfortran/generated/count_4_l.c5
-rw-r--r--libgfortran/generated/count_8_l.c5
-rw-r--r--libgfortran/io/transfer.c17
-rw-r--r--libgfortran/io/write_float.def13
-rw-r--r--libgfortran/m4/ifunction_logical.m45
-rw-r--r--libjava/ChangeLog8
-rw-r--r--libjava/classpath/ChangeLog.gcj6
-rwxr-xr-xlibjava/classpath/tools/Makefile.am2
-rw-r--r--libjava/classpath/tools/Makefile.in18
-rw-r--r--libjava/configure.ac2
-rw-r--r--libjava/include/config.h.in3
-rw-r--r--libjava/java/io/natFilePosix.cc8
-rw-r--r--libmudflap/ChangeLog6
-rw-r--r--libmudflap/testsuite/libmudflap.c/fail8-frag.c2
-rw-r--r--libmudflap/testsuite/libmudflap.c/fail9-frag.c2
-rw-r--r--libstdc++-v3/ChangeLog14
-rw-r--r--libstdc++-v3/acinclude.m420
-rw-r--r--libstdc++-v3/config/os/generic/error_constants.h7
-rw-r--r--libstdc++-v3/include/bits/c++config26
-rw-r--r--libstdc++-v3/testsuite/19_diagnostics/headers/system_error/types_std_c++0x.cc7
241 files changed, 5990 insertions, 3746 deletions
diff --git a/ChangeLog b/ChangeLog
index 0628614bfe1..751410f37de 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,40 @@
+2008-02-26 Basile Starynkevitch <basile@starynkevitch.net>
+ MELT branch merged with trunk r132671
+ Merged revisions 132452-132671 via svnmerge from
+ svn+ssh://bstarynk@gcc.gnu.org/svn/gcc/trunk
+
+2008-02-25 Tomas Bily <tbily@suse.cz>
+
+ * MAINTAINERS (Write After Approval): Add myself.
+
+2008-02-23 Jakub Jelinek <jakub@redhat.com>
+
+ * MAINTAINERS (OpenMP): Add myself.
+
+2008-02-20 Paolo Bonzini <bonzini@gnu.org>
+
+ PR bootstrap/32009
+ PR bootstrap/32161
+
+ * configure.ac (CFLAGS_FOR_TARGET, CXXFLAGS_FOR_TARGET): Compute here.
+ * configure: Regenerate.
+
+ * Makefile.def: Define stage_libcflags for all bootstrap stages.
+ * Makefile.tpl (BOOT_LIBCFLAGS, STAGE2_LIBCFLAGS, STAGE3_LIBCFLAGS,
+ STAGE4_LIBCFLAGS): New.
+ (CFLAGS_FOR_TARGET, CXXFLAGS_FOR_TARGET): Subst from autoconf, without
+ $(SYSROOT_CFLAGS_FOR_TARGET) and $(DEBUG_PREFIX_CFLAGS_FOR_TARGET).
+ (BASE_TARGET_EXPORTS): Append them here to C{,XX}FLAGS.
+ (EXTRA_TARGET_FLAGS): Append them here to {LIB,}C{,XX}FLAGS.
+ (configure-stage[+id+]-[+prefix+][+module+]): Pass stage_libcflags
+ for target modules. Don't export LIBCFLAGS.
+ (all-stage[+id+]-[+prefix+][+module+]): Pass stage_libcflags; pass
+ $(BASE_FLAGS_TO_PASS) where [+args+] was passed, and [+args+] after
+ the overridden CFLAGS_FOR_TARGET and CXXFLAGS_FOR_TARGET.
+ (invocations of `all'): Replace $(TARGET_FLAGS_TO_PASS) with
+ $(EXTRA_TARGET_FLAGS), $(FLAGS_TO_PASS) with $(EXTRA_HOST_FLAGS).
+ * Makefile.in: Regenerate.
+
2008-02-16 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
PR libgcj/33085
diff --git a/MAINTAINERS b/MAINTAINERS
index ce35d04b901..7942dbedf59 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -214,6 +214,7 @@ auto-vectorizer Richard Guenther rguenther@suse.de
auto-vectorizer Zdenek Dvorak ook@ucw.cz
auto-vectorizer Dorit Nuzman dorit@il.ibm.com
loop infrastructure Zdenek Dvorak ook@ucw.cz
+OpenMP Jakub Jelinek jakub@redhat.com
Note that individuals who maintain parts of the compiler need approval to check
in changes outside of the parts of the compiler they maintain.
@@ -269,6 +270,7 @@ Andrey Belevantsev abel@ispras.ru
Peter Bergner bergner@vnet.ibm.com
Jan Beulich jbeulich@novell.com
David Billinghurst David.Billinghurst@riotinto.com
+Tomas Bily tbily@suse.cz
Laurynas Biveinis laurynas.biveinis@gmail.com
Eric Blake ericb@gcc.gnu.org
Jim Blandy jimb@codesourcery.com
diff --git a/Makefile.def b/Makefile.def
index 85463fbe4b8..a68722598b8 100644
--- a/Makefile.def
+++ b/Makefile.def
@@ -511,43 +511,51 @@ bootstrap_stage = {
// compiler probably has never heard of them.
stage_configure_flags='--disable-intermodule $(STAGE1_CHECKING) \
--disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"' ;
- stage_cflags='$(STAGE1_CFLAGS)' ; };
+ stage_cflags='$(STAGE1_CFLAGS)' ;
+ stage_libcflags='$(STAGE1_LIBCFLAGS)' ; };
bootstrap_stage = {
id=2 ; prev=1 ;
bootstrap_target=bootstrap2 ;
stage_configure_flags="@stage2_werror_flag@" ;
- stage_cflags="$(STAGE2_CFLAGS)" ; };
+ stage_cflags="$(STAGE2_CFLAGS)" ;
+ stage_libcflags="$(STAGE2_LIBCFLAGS)" ; };
bootstrap_stage = {
id=b2g0 ; prev=1 ;
bootstrap_target=bootstrap2-debug ;
stage_configure_flags="@stage2_werror_flag@" ;
- stage_cflags="$(STAGE2_CFLAGS) -g0" ; };
+ stage_cflags="$(STAGE2_CFLAGS) -g0" ;
+ stage_libcflags="$(STAGE2_LIBCFLAGS) -g0" ; };
bootstrap_stage = {
id=3 ; prev=2 ; lean=1 ;
compare_target=compare ;
bootstrap_target=bootstrap ;
cleanstrap_target=cleanstrap ;
stage_configure_flags="@stage2_werror_flag@" ;
- stage_cflags="$(STAGE3_CFLAGS)" ; };
+ stage_cflags="$(STAGE3_CFLAGS)" ;
+ stage_libcflags="$(STAGE3_LIBCFLAGS)" ; };
bootstrap_stage = {
id=b3g2 ; prev=b2g0 ; lean=1 ;
compare_target=compare-debug ;
bootstrap_target=bootstrap-debug ;
cleanstrap_target=cleanstrap-debug ;
stage_configure_flags="@stage2_werror_flag@" ;
- stage_cflags="$(STAGE3_CFLAGS) -g2" ; };
+ stage_cflags="$(STAGE3_CFLAGS) -g2" ;
+ stage_libcflags="$(STAGE3_LIBCFLAGS) -g2" ; };
bootstrap_stage = {
id=4 ; prev=3 ; lean=2 ;
compare_target=compare3 ;
bootstrap_target=bootstrap4 ;
stage_configure_flags="@stage2_werror_flag@" ;
- stage_cflags="$(STAGE4_CFLAGS)" ; };
+ stage_cflags="$(STAGE4_CFLAGS)" ;
+ stage_libcflags="$(STAGE4_CFLAGS)" ; };
bootstrap_stage = {
id=profile ; prev=1 ;
stage_configure_flags="@stage2_werror_flag@" ;
- stage_cflags='$(STAGE2_CFLAGS) -fprofile-generate' ; };
+ stage_cflags='$(STAGE2_CFLAGS) -fprofile-generate' ;
+ stage_libcflags='$(STAGE2_LIBCFLAGS) -fprofile-generate' ; };
bootstrap_stage = {
id=feedback ; prev=profile ;
bootstrap_target=profiledbootstrap ;
stage_configure_flags="@stage2_werror_flag@" ;
- stage_cflags='$(STAGE3_CFLAGS) -fprofile-use' ; };
+ stage_cflags='$(STAGE3_CFLAGS) -fprofile-use' ;
+ stage_libcflags='$(STAGE3_LIBCFLAGS) -fprofile-use' ; };
diff --git a/Makefile.in b/Makefile.in
index 32c5403062f..771dff9d293 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -204,10 +204,10 @@ BASE_TARGET_EXPORTS = \
AR="$(AR_FOR_TARGET)"; export AR; \
AS="$(COMPILER_AS_FOR_TARGET)"; export AS; \
CC="$(CC_FOR_TARGET)"; export CC; \
- CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
+ CFLAGS="$(CFLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CFLAGS; \
CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CPPFLAGS="$(CPPFLAGS_FOR_TARGET)"; export CPPFLAGS; \
- CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
+ CXXFLAGS="$(CXXFLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CXXFLAGS; \
GCJ="$(GCJ_FOR_TARGET)"; export GCJ; \
GFORTRAN="$(GFORTRAN_FOR_TARGET)"; export GFORTRAN; \
DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \
@@ -327,14 +327,19 @@ PICFLAG =
# MAKEINFO and MAKEINFOFLAGS are explicitly passed here to make them
# overrideable (for a bootstrap build stage1 also builds gcc.info).
-STAGE1_CFLAGS=@stage1_cflags@
STAGE1_CHECKING=@stage1_checking@
STAGE1_LANGUAGES=@stage1_languages@
+STAGE1_CFLAGS=@stage1_cflags@
STAGE2_CFLAGS=$(BOOT_CFLAGS)
STAGE3_CFLAGS=$(BOOT_CFLAGS)
STAGE4_CFLAGS=$(BOOT_CFLAGS)
+STAGE1_LIBCFLAGS=$(CFLAGS_FOR_TARGET)
+STAGE2_LIBCFLAGS=$(CFLAGS_FOR_TARGET)
+STAGE3_LIBCFLAGS=$(CFLAGS_FOR_TARGET)
+STAGE4_LIBCFLAGS=$(CFLAGS_FOR_TARGET)
+
do-compare = @do_compare@
do-compare3 = $(do-compare)
do-compare-debug = $(SHELL) $(srcdir)/contrib/compare-debug $$f1 $$f2
@@ -373,18 +378,11 @@ COMPILER_AS_FOR_TARGET=@COMPILER_AS_FOR_TARGET@
COMPILER_LD_FOR_TARGET=@COMPILER_LD_FOR_TARGET@
COMPILER_NM_FOR_TARGET=@COMPILER_NM_FOR_TARGET@
-# During gcc bootstrap, if we use some random cc for stage1 then CFLAGS
-# might be empty or "-g". We don't require a C++ compiler, so CXXFLAGS
-# might also be empty (or "-g", if a non-GCC C++ compiler is in the path).
-# We want to ensure that TARGET libraries (which we know are built with
-# gcc) are built with "-O2 -g", so prepend those options when setting
-# CFLAGS_FOR_TARGET and CXXFLAGS_FOR_TARGET.
-CFLAGS_FOR_TARGET = -O2 -g $(CFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET) \
- $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)
+CFLAGS_FOR_TARGET = @CFLAGS_FOR_TARGET@
+CXXFLAGS_FOR_TARGET = @CXXFLAGS_FOR_TARGET@
SYSROOT_CFLAGS_FOR_TARGET = @SYSROOT_CFLAGS_FOR_TARGET@
DEBUG_PREFIX_CFLAGS_FOR_TARGET = @DEBUG_PREFIX_CFLAGS_FOR_TARGET@
-CXXFLAGS_FOR_TARGET = -O2 -g $(CXXFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET) \
- $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)
+
LIBCFLAGS_FOR_TARGET = $(CFLAGS_FOR_TARGET)
LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates
LDFLAGS_FOR_TARGET =
@@ -591,19 +589,20 @@ POSTSTAGE1_FLAGS_TO_PASS = \
# Flags to pass down to makes which are built with the target environment.
# The double $ decreases the length of the command line; those variables
# are set in BASE_FLAGS_TO_PASS, and the sub-make will expand them. The
-# COMPILER_ prefixed variables are not passed down so we expand them here.
+# *_CFLAGS_FOR_TARGET variables are not passed down and most often empty,
+# so we expand them here.
EXTRA_TARGET_FLAGS = \
'AR=$$(AR_FOR_TARGET)' \
'AS=$(COMPILER_AS_FOR_TARGET)' \
'CC=$$(CC_FOR_TARGET)' \
- 'CFLAGS=$$(CFLAGS_FOR_TARGET)' \
+ 'CFLAGS=$$(CFLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)' \
'CXX=$$(CXX_FOR_TARGET)' \
- 'CXXFLAGS=$$(CXXFLAGS_FOR_TARGET)' \
+ 'CXXFLAGS=$$(CXXFLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)' \
'DLLTOOL=$$(DLLTOOL_FOR_TARGET)' \
'LD=$(COMPILER_LD_FOR_TARGET)' \
'LDFLAGS=$$(LDFLAGS_FOR_TARGET)' \
- 'LIBCFLAGS=$$(LIBCFLAGS_FOR_TARGET)' \
- 'LIBCXXFLAGS=$$(LIBCXXFLAGS_FOR_TARGET)' \
+ 'LIBCFLAGS=$$(LIBCFLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)' \
+ 'LIBCXXFLAGS=$$(LIBCXXFLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)' \
'NM=$(COMPILER_NM_FOR_TARGET)' \
'OBJDUMP=$$(OBJDUMP_FOR_TARGET)' \
'RANLIB=$$(RANLIB_FOR_TARGET)' \
@@ -2737,7 +2736,8 @@ all-build-libiberty: configure-build-libiberty
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(BUILD_EXPORTS) \
(cd $(BUILD_SUBDIR)/libiberty && \
- $(MAKE) $(TARGET-build-libiberty))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ $(TARGET-build-libiberty))
@endif build-libiberty
@@ -2792,7 +2792,8 @@ all-build-bison: configure-build-bison
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(BUILD_EXPORTS) \
(cd $(BUILD_SUBDIR)/bison && \
- $(MAKE) $(TARGET-build-bison))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ $(TARGET-build-bison))
@endif build-bison
@@ -2847,7 +2848,8 @@ all-build-byacc: configure-build-byacc
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(BUILD_EXPORTS) \
(cd $(BUILD_SUBDIR)/byacc && \
- $(MAKE) $(TARGET-build-byacc))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ $(TARGET-build-byacc))
@endif build-byacc
@@ -2902,7 +2904,8 @@ all-build-flex: configure-build-flex
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(BUILD_EXPORTS) \
(cd $(BUILD_SUBDIR)/flex && \
- $(MAKE) $(TARGET-build-flex))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ $(TARGET-build-flex))
@endif build-flex
@@ -2957,7 +2960,8 @@ all-build-m4: configure-build-m4
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(BUILD_EXPORTS) \
(cd $(BUILD_SUBDIR)/m4 && \
- $(MAKE) $(TARGET-build-m4))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ $(TARGET-build-m4))
@endif build-m4
@@ -3012,7 +3016,8 @@ all-build-texinfo: configure-build-texinfo
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(BUILD_EXPORTS) \
(cd $(BUILD_SUBDIR)/texinfo && \
- $(MAKE) $(TARGET-build-texinfo))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ $(TARGET-build-texinfo))
@endif build-texinfo
@@ -3067,7 +3072,8 @@ all-build-fixincludes: configure-build-fixincludes
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(BUILD_EXPORTS) \
(cd $(BUILD_SUBDIR)/fixincludes && \
- $(MAKE) $(TARGET-build-fixincludes))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ $(TARGET-build-fixincludes))
@endif build-fixincludes
@@ -3126,7 +3132,8 @@ all-ash: configure-ash
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/ash && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-ash))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-ash))
@endif ash
@@ -3550,7 +3557,8 @@ all-autoconf: configure-autoconf
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/autoconf && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-autoconf))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-autoconf))
@endif autoconf
@@ -3974,7 +3982,8 @@ all-automake: configure-automake
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/automake && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-automake))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-automake))
@endif automake
@@ -4398,7 +4407,8 @@ all-bash: configure-bash
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/bash && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-bash))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-bash))
@endif bash
@@ -4815,9 +4825,9 @@ configure-stage1-bfd:
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/bfd/Makefile || exit 0; \
- $(HOST_EXPORTS) \
+ $(HOST_EXPORTS) \
CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE1_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 1 in $(HOST_SUBDIR)/bfd ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bfd ; \
cd $(HOST_SUBDIR)/bfd || exit 1; \
@@ -4846,9 +4856,9 @@ configure-stage2-bfd:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/bfd/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 2 in $(HOST_SUBDIR)/bfd ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bfd ; \
cd $(HOST_SUBDIR)/bfd || exit 1; \
@@ -4877,9 +4887,9 @@ configure-stageb2g0-bfd:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/bfd/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE2_CFLAGS) -g0"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS) -g0"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE2_CFLAGS) -g0"; export CXXFLAGS; \
echo Configuring stage b2g0 in $(HOST_SUBDIR)/bfd ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bfd ; \
cd $(HOST_SUBDIR)/bfd || exit 1; \
@@ -4908,9 +4918,9 @@ configure-stage3-bfd:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/bfd/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 3 in $(HOST_SUBDIR)/bfd ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bfd ; \
cd $(HOST_SUBDIR)/bfd || exit 1; \
@@ -4939,9 +4949,9 @@ configure-stageb3g2-bfd:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/bfd/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE3_CFLAGS) -g2"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS) -g2"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE3_CFLAGS) -g2"; export CXXFLAGS; \
echo Configuring stage b3g2 in $(HOST_SUBDIR)/bfd ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bfd ; \
cd $(HOST_SUBDIR)/bfd || exit 1; \
@@ -4970,9 +4980,9 @@ configure-stage4-bfd:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/bfd/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 4 in $(HOST_SUBDIR)/bfd ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bfd ; \
cd $(HOST_SUBDIR)/bfd || exit 1; \
@@ -5001,9 +5011,9 @@ configure-stageprofile-bfd:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/bfd/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export CXXFLAGS; \
echo Configuring stage profile in $(HOST_SUBDIR)/bfd ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bfd ; \
cd $(HOST_SUBDIR)/bfd || exit 1; \
@@ -5032,9 +5042,9 @@ configure-stagefeedback-bfd:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/bfd/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export CXXFLAGS; \
echo Configuring stage feedback in $(HOST_SUBDIR)/bfd ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bfd ; \
cd $(HOST_SUBDIR)/bfd || exit 1; \
@@ -5069,7 +5079,8 @@ all-bfd: configure-bfd
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/bfd && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-bfd))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-bfd))
@endif bfd
@@ -5088,8 +5099,11 @@ all-stage1-bfd: configure-stage1-bfd
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
cd $(HOST_SUBDIR)/bfd && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE1_CFLAGS)" LIBCFLAGS="$(STAGE1_CFLAGS)" \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE1_CFLAGS)" CXXFLAGS="$(STAGE1_CFLAGS)" \
+ LIBCFLAGS="$(STAGE1_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE1_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE1_LIBCFLAGS)" $(EXTRA_HOST_FLAGS) \
$(TARGET-stage1-bfd)
maybe-clean-stage1-bfd: clean-stage1-bfd
@@ -5102,7 +5116,7 @@ clean-stage1-bfd:
$(MAKE) stage1-start; \
fi; \
cd $(HOST_SUBDIR)/bfd && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
clean
@endif bfd-bootstrap
@@ -5122,8 +5136,11 @@ all-stage2-bfd: configure-stage2-bfd
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/bfd && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS)" LIBCFLAGS="$(STAGE2_CFLAGS)" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS)" CXXFLAGS="$(STAGE2_CFLAGS)" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS)" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stage2-bfd)
maybe-clean-stage2-bfd: clean-stage2-bfd
@@ -5136,7 +5153,7 @@ clean-stage2-bfd:
$(MAKE) stage2-start; \
fi; \
cd $(HOST_SUBDIR)/bfd && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif bfd-bootstrap
@@ -5157,8 +5174,11 @@ all-stageb2g0-bfd: configure-stageb2g0-bfd
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/bfd && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS) -g0" LIBCFLAGS="$(STAGE2_CFLAGS) -g0" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS) -g0" CXXFLAGS="$(STAGE2_CFLAGS) -g0" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS) -g0" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -g0" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -g0" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stageb2g0-bfd)
maybe-clean-stageb2g0-bfd: clean-stageb2g0-bfd
@@ -5171,7 +5191,7 @@ clean-stageb2g0-bfd:
$(MAKE) stageb2g0-start; \
fi; \
cd $(HOST_SUBDIR)/bfd && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif bfd-bootstrap
@@ -5192,8 +5212,11 @@ all-stage3-bfd: configure-stage3-bfd
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/bfd && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS)" LIBCFLAGS="$(STAGE3_CFLAGS)" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS)" CXXFLAGS="$(STAGE3_CFLAGS)" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS)" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stage3-bfd)
maybe-clean-stage3-bfd: clean-stage3-bfd
@@ -5206,7 +5229,7 @@ clean-stage3-bfd:
$(MAKE) stage3-start; \
fi; \
cd $(HOST_SUBDIR)/bfd && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif bfd-bootstrap
@@ -5227,8 +5250,11 @@ all-stageb3g2-bfd: configure-stageb3g2-bfd
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/bfd && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS) -g2" LIBCFLAGS="$(STAGE3_CFLAGS) -g2" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS) -g2" CXXFLAGS="$(STAGE3_CFLAGS) -g2" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS) -g2" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -g2" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -g2" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stageb3g2-bfd)
maybe-clean-stageb3g2-bfd: clean-stageb3g2-bfd
@@ -5241,7 +5267,7 @@ clean-stageb3g2-bfd:
$(MAKE) stageb3g2-start; \
fi; \
cd $(HOST_SUBDIR)/bfd && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif bfd-bootstrap
@@ -5262,8 +5288,11 @@ all-stage4-bfd: configure-stage4-bfd
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/bfd && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE4_CFLAGS)" LIBCFLAGS="$(STAGE4_CFLAGS)" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE4_CFLAGS)" CXXFLAGS="$(STAGE4_CFLAGS)" \
+ LIBCFLAGS="$(STAGE4_CFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE4_CFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE4_CFLAGS)" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stage4-bfd)
maybe-clean-stage4-bfd: clean-stage4-bfd
@@ -5276,7 +5305,7 @@ clean-stage4-bfd:
$(MAKE) stage4-start; \
fi; \
cd $(HOST_SUBDIR)/bfd && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif bfd-bootstrap
@@ -5297,8 +5326,11 @@ all-stageprofile-bfd: configure-stageprofile-bfd
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/bfd && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" LIBCFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" CXXFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS) -fprofile-generate" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -fprofile-generate" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -fprofile-generate" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stageprofile-bfd)
maybe-clean-stageprofile-bfd: clean-stageprofile-bfd
@@ -5311,7 +5343,7 @@ clean-stageprofile-bfd:
$(MAKE) stageprofile-start; \
fi; \
cd $(HOST_SUBDIR)/bfd && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif bfd-bootstrap
@@ -5332,8 +5364,11 @@ all-stagefeedback-bfd: configure-stagefeedback-bfd
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/bfd && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS) -fprofile-use" LIBCFLAGS="$(STAGE3_CFLAGS) -fprofile-use" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS) -fprofile-use" CXXFLAGS="$(STAGE3_CFLAGS) -fprofile-use" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS) -fprofile-use" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -fprofile-use" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -fprofile-use" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stagefeedback-bfd)
maybe-clean-stagefeedback-bfd: clean-stagefeedback-bfd
@@ -5346,7 +5381,7 @@ clean-stagefeedback-bfd:
$(MAKE) stagefeedback-start; \
fi; \
cd $(HOST_SUBDIR)/bfd && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif bfd-bootstrap
@@ -5753,9 +5788,9 @@ configure-stage1-opcodes:
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/opcodes/Makefile || exit 0; \
- $(HOST_EXPORTS) \
+ $(HOST_EXPORTS) \
CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE1_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 1 in $(HOST_SUBDIR)/opcodes ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/opcodes ; \
cd $(HOST_SUBDIR)/opcodes || exit 1; \
@@ -5784,9 +5819,9 @@ configure-stage2-opcodes:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/opcodes/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 2 in $(HOST_SUBDIR)/opcodes ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/opcodes ; \
cd $(HOST_SUBDIR)/opcodes || exit 1; \
@@ -5815,9 +5850,9 @@ configure-stageb2g0-opcodes:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/opcodes/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE2_CFLAGS) -g0"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS) -g0"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE2_CFLAGS) -g0"; export CXXFLAGS; \
echo Configuring stage b2g0 in $(HOST_SUBDIR)/opcodes ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/opcodes ; \
cd $(HOST_SUBDIR)/opcodes || exit 1; \
@@ -5846,9 +5881,9 @@ configure-stage3-opcodes:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/opcodes/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 3 in $(HOST_SUBDIR)/opcodes ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/opcodes ; \
cd $(HOST_SUBDIR)/opcodes || exit 1; \
@@ -5877,9 +5912,9 @@ configure-stageb3g2-opcodes:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/opcodes/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE3_CFLAGS) -g2"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS) -g2"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE3_CFLAGS) -g2"; export CXXFLAGS; \
echo Configuring stage b3g2 in $(HOST_SUBDIR)/opcodes ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/opcodes ; \
cd $(HOST_SUBDIR)/opcodes || exit 1; \
@@ -5908,9 +5943,9 @@ configure-stage4-opcodes:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/opcodes/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 4 in $(HOST_SUBDIR)/opcodes ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/opcodes ; \
cd $(HOST_SUBDIR)/opcodes || exit 1; \
@@ -5939,9 +5974,9 @@ configure-stageprofile-opcodes:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/opcodes/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export CXXFLAGS; \
echo Configuring stage profile in $(HOST_SUBDIR)/opcodes ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/opcodes ; \
cd $(HOST_SUBDIR)/opcodes || exit 1; \
@@ -5970,9 +6005,9 @@ configure-stagefeedback-opcodes:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/opcodes/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export CXXFLAGS; \
echo Configuring stage feedback in $(HOST_SUBDIR)/opcodes ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/opcodes ; \
cd $(HOST_SUBDIR)/opcodes || exit 1; \
@@ -6007,7 +6042,8 @@ all-opcodes: configure-opcodes
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/opcodes && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-opcodes))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-opcodes))
@endif opcodes
@@ -6026,8 +6062,11 @@ all-stage1-opcodes: configure-stage1-opcodes
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
cd $(HOST_SUBDIR)/opcodes && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE1_CFLAGS)" LIBCFLAGS="$(STAGE1_CFLAGS)" \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE1_CFLAGS)" CXXFLAGS="$(STAGE1_CFLAGS)" \
+ LIBCFLAGS="$(STAGE1_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE1_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE1_LIBCFLAGS)" $(EXTRA_HOST_FLAGS) \
$(TARGET-stage1-opcodes)
maybe-clean-stage1-opcodes: clean-stage1-opcodes
@@ -6040,7 +6079,7 @@ clean-stage1-opcodes:
$(MAKE) stage1-start; \
fi; \
cd $(HOST_SUBDIR)/opcodes && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
clean
@endif opcodes-bootstrap
@@ -6060,8 +6099,11 @@ all-stage2-opcodes: configure-stage2-opcodes
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/opcodes && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS)" LIBCFLAGS="$(STAGE2_CFLAGS)" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS)" CXXFLAGS="$(STAGE2_CFLAGS)" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS)" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stage2-opcodes)
maybe-clean-stage2-opcodes: clean-stage2-opcodes
@@ -6074,7 +6116,7 @@ clean-stage2-opcodes:
$(MAKE) stage2-start; \
fi; \
cd $(HOST_SUBDIR)/opcodes && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif opcodes-bootstrap
@@ -6095,8 +6137,11 @@ all-stageb2g0-opcodes: configure-stageb2g0-opcodes
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/opcodes && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS) -g0" LIBCFLAGS="$(STAGE2_CFLAGS) -g0" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS) -g0" CXXFLAGS="$(STAGE2_CFLAGS) -g0" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS) -g0" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -g0" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -g0" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stageb2g0-opcodes)
maybe-clean-stageb2g0-opcodes: clean-stageb2g0-opcodes
@@ -6109,7 +6154,7 @@ clean-stageb2g0-opcodes:
$(MAKE) stageb2g0-start; \
fi; \
cd $(HOST_SUBDIR)/opcodes && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif opcodes-bootstrap
@@ -6130,8 +6175,11 @@ all-stage3-opcodes: configure-stage3-opcodes
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/opcodes && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS)" LIBCFLAGS="$(STAGE3_CFLAGS)" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS)" CXXFLAGS="$(STAGE3_CFLAGS)" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS)" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stage3-opcodes)
maybe-clean-stage3-opcodes: clean-stage3-opcodes
@@ -6144,7 +6192,7 @@ clean-stage3-opcodes:
$(MAKE) stage3-start; \
fi; \
cd $(HOST_SUBDIR)/opcodes && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif opcodes-bootstrap
@@ -6165,8 +6213,11 @@ all-stageb3g2-opcodes: configure-stageb3g2-opcodes
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/opcodes && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS) -g2" LIBCFLAGS="$(STAGE3_CFLAGS) -g2" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS) -g2" CXXFLAGS="$(STAGE3_CFLAGS) -g2" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS) -g2" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -g2" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -g2" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stageb3g2-opcodes)
maybe-clean-stageb3g2-opcodes: clean-stageb3g2-opcodes
@@ -6179,7 +6230,7 @@ clean-stageb3g2-opcodes:
$(MAKE) stageb3g2-start; \
fi; \
cd $(HOST_SUBDIR)/opcodes && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif opcodes-bootstrap
@@ -6200,8 +6251,11 @@ all-stage4-opcodes: configure-stage4-opcodes
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/opcodes && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE4_CFLAGS)" LIBCFLAGS="$(STAGE4_CFLAGS)" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE4_CFLAGS)" CXXFLAGS="$(STAGE4_CFLAGS)" \
+ LIBCFLAGS="$(STAGE4_CFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE4_CFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE4_CFLAGS)" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stage4-opcodes)
maybe-clean-stage4-opcodes: clean-stage4-opcodes
@@ -6214,7 +6268,7 @@ clean-stage4-opcodes:
$(MAKE) stage4-start; \
fi; \
cd $(HOST_SUBDIR)/opcodes && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif opcodes-bootstrap
@@ -6235,8 +6289,11 @@ all-stageprofile-opcodes: configure-stageprofile-opcodes
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/opcodes && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" LIBCFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" CXXFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS) -fprofile-generate" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -fprofile-generate" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -fprofile-generate" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stageprofile-opcodes)
maybe-clean-stageprofile-opcodes: clean-stageprofile-opcodes
@@ -6249,7 +6306,7 @@ clean-stageprofile-opcodes:
$(MAKE) stageprofile-start; \
fi; \
cd $(HOST_SUBDIR)/opcodes && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif opcodes-bootstrap
@@ -6270,8 +6327,11 @@ all-stagefeedback-opcodes: configure-stagefeedback-opcodes
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/opcodes && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS) -fprofile-use" LIBCFLAGS="$(STAGE3_CFLAGS) -fprofile-use" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS) -fprofile-use" CXXFLAGS="$(STAGE3_CFLAGS) -fprofile-use" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS) -fprofile-use" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -fprofile-use" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -fprofile-use" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stagefeedback-opcodes)
maybe-clean-stagefeedback-opcodes: clean-stagefeedback-opcodes
@@ -6284,7 +6344,7 @@ clean-stagefeedback-opcodes:
$(MAKE) stagefeedback-start; \
fi; \
cd $(HOST_SUBDIR)/opcodes && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif opcodes-bootstrap
@@ -6691,9 +6751,9 @@ configure-stage1-binutils:
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/binutils/Makefile || exit 0; \
- $(HOST_EXPORTS) \
+ $(HOST_EXPORTS) \
CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE1_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 1 in $(HOST_SUBDIR)/binutils ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/binutils ; \
cd $(HOST_SUBDIR)/binutils || exit 1; \
@@ -6722,9 +6782,9 @@ configure-stage2-binutils:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/binutils/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 2 in $(HOST_SUBDIR)/binutils ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/binutils ; \
cd $(HOST_SUBDIR)/binutils || exit 1; \
@@ -6753,9 +6813,9 @@ configure-stageb2g0-binutils:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/binutils/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE2_CFLAGS) -g0"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS) -g0"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE2_CFLAGS) -g0"; export CXXFLAGS; \
echo Configuring stage b2g0 in $(HOST_SUBDIR)/binutils ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/binutils ; \
cd $(HOST_SUBDIR)/binutils || exit 1; \
@@ -6784,9 +6844,9 @@ configure-stage3-binutils:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/binutils/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 3 in $(HOST_SUBDIR)/binutils ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/binutils ; \
cd $(HOST_SUBDIR)/binutils || exit 1; \
@@ -6815,9 +6875,9 @@ configure-stageb3g2-binutils:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/binutils/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE3_CFLAGS) -g2"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS) -g2"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE3_CFLAGS) -g2"; export CXXFLAGS; \
echo Configuring stage b3g2 in $(HOST_SUBDIR)/binutils ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/binutils ; \
cd $(HOST_SUBDIR)/binutils || exit 1; \
@@ -6846,9 +6906,9 @@ configure-stage4-binutils:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/binutils/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 4 in $(HOST_SUBDIR)/binutils ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/binutils ; \
cd $(HOST_SUBDIR)/binutils || exit 1; \
@@ -6877,9 +6937,9 @@ configure-stageprofile-binutils:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/binutils/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export CXXFLAGS; \
echo Configuring stage profile in $(HOST_SUBDIR)/binutils ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/binutils ; \
cd $(HOST_SUBDIR)/binutils || exit 1; \
@@ -6908,9 +6968,9 @@ configure-stagefeedback-binutils:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/binutils/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export CXXFLAGS; \
echo Configuring stage feedback in $(HOST_SUBDIR)/binutils ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/binutils ; \
cd $(HOST_SUBDIR)/binutils || exit 1; \
@@ -6945,7 +7005,8 @@ all-binutils: configure-binutils
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/binutils && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-binutils))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-binutils))
@endif binutils
@@ -6964,8 +7025,11 @@ all-stage1-binutils: configure-stage1-binutils
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
cd $(HOST_SUBDIR)/binutils && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE1_CFLAGS)" LIBCFLAGS="$(STAGE1_CFLAGS)" \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE1_CFLAGS)" CXXFLAGS="$(STAGE1_CFLAGS)" \
+ LIBCFLAGS="$(STAGE1_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE1_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE1_LIBCFLAGS)" $(EXTRA_HOST_FLAGS) \
$(TARGET-stage1-binutils)
maybe-clean-stage1-binutils: clean-stage1-binutils
@@ -6978,7 +7042,7 @@ clean-stage1-binutils:
$(MAKE) stage1-start; \
fi; \
cd $(HOST_SUBDIR)/binutils && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
clean
@endif binutils-bootstrap
@@ -6998,8 +7062,11 @@ all-stage2-binutils: configure-stage2-binutils
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/binutils && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS)" LIBCFLAGS="$(STAGE2_CFLAGS)" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS)" CXXFLAGS="$(STAGE2_CFLAGS)" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS)" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stage2-binutils)
maybe-clean-stage2-binutils: clean-stage2-binutils
@@ -7012,7 +7079,7 @@ clean-stage2-binutils:
$(MAKE) stage2-start; \
fi; \
cd $(HOST_SUBDIR)/binutils && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif binutils-bootstrap
@@ -7033,8 +7100,11 @@ all-stageb2g0-binutils: configure-stageb2g0-binutils
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/binutils && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS) -g0" LIBCFLAGS="$(STAGE2_CFLAGS) -g0" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS) -g0" CXXFLAGS="$(STAGE2_CFLAGS) -g0" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS) -g0" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -g0" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -g0" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stageb2g0-binutils)
maybe-clean-stageb2g0-binutils: clean-stageb2g0-binutils
@@ -7047,7 +7117,7 @@ clean-stageb2g0-binutils:
$(MAKE) stageb2g0-start; \
fi; \
cd $(HOST_SUBDIR)/binutils && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif binutils-bootstrap
@@ -7068,8 +7138,11 @@ all-stage3-binutils: configure-stage3-binutils
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/binutils && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS)" LIBCFLAGS="$(STAGE3_CFLAGS)" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS)" CXXFLAGS="$(STAGE3_CFLAGS)" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS)" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stage3-binutils)
maybe-clean-stage3-binutils: clean-stage3-binutils
@@ -7082,7 +7155,7 @@ clean-stage3-binutils:
$(MAKE) stage3-start; \
fi; \
cd $(HOST_SUBDIR)/binutils && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif binutils-bootstrap
@@ -7103,8 +7176,11 @@ all-stageb3g2-binutils: configure-stageb3g2-binutils
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/binutils && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS) -g2" LIBCFLAGS="$(STAGE3_CFLAGS) -g2" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS) -g2" CXXFLAGS="$(STAGE3_CFLAGS) -g2" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS) -g2" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -g2" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -g2" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stageb3g2-binutils)
maybe-clean-stageb3g2-binutils: clean-stageb3g2-binutils
@@ -7117,7 +7193,7 @@ clean-stageb3g2-binutils:
$(MAKE) stageb3g2-start; \
fi; \
cd $(HOST_SUBDIR)/binutils && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif binutils-bootstrap
@@ -7138,8 +7214,11 @@ all-stage4-binutils: configure-stage4-binutils
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/binutils && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE4_CFLAGS)" LIBCFLAGS="$(STAGE4_CFLAGS)" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE4_CFLAGS)" CXXFLAGS="$(STAGE4_CFLAGS)" \
+ LIBCFLAGS="$(STAGE4_CFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE4_CFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE4_CFLAGS)" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stage4-binutils)
maybe-clean-stage4-binutils: clean-stage4-binutils
@@ -7152,7 +7231,7 @@ clean-stage4-binutils:
$(MAKE) stage4-start; \
fi; \
cd $(HOST_SUBDIR)/binutils && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif binutils-bootstrap
@@ -7173,8 +7252,11 @@ all-stageprofile-binutils: configure-stageprofile-binutils
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/binutils && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" LIBCFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" CXXFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS) -fprofile-generate" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -fprofile-generate" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -fprofile-generate" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stageprofile-binutils)
maybe-clean-stageprofile-binutils: clean-stageprofile-binutils
@@ -7187,7 +7269,7 @@ clean-stageprofile-binutils:
$(MAKE) stageprofile-start; \
fi; \
cd $(HOST_SUBDIR)/binutils && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif binutils-bootstrap
@@ -7208,8 +7290,11 @@ all-stagefeedback-binutils: configure-stagefeedback-binutils
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/binutils && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS) -fprofile-use" LIBCFLAGS="$(STAGE3_CFLAGS) -fprofile-use" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS) -fprofile-use" CXXFLAGS="$(STAGE3_CFLAGS) -fprofile-use" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS) -fprofile-use" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -fprofile-use" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -fprofile-use" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stagefeedback-binutils)
maybe-clean-stagefeedback-binutils: clean-stagefeedback-binutils
@@ -7222,7 +7307,7 @@ clean-stagefeedback-binutils:
$(MAKE) stagefeedback-start; \
fi; \
cd $(HOST_SUBDIR)/binutils && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif binutils-bootstrap
@@ -7636,7 +7721,8 @@ all-bison: configure-bison
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/bison && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-bison))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-bison))
@endif bison
@@ -8063,7 +8149,8 @@ all-byacc: configure-byacc
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/byacc && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-byacc))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-byacc))
@endif byacc
@@ -8490,7 +8577,8 @@ all-bzip2: configure-bzip2
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/bzip2 && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-bzip2))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-bzip2))
@endif bzip2
@@ -8914,7 +9002,8 @@ all-dejagnu: configure-dejagnu
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/dejagnu && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-dejagnu))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-dejagnu))
@endif dejagnu
@@ -9338,7 +9427,8 @@ all-diff: configure-diff
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/diff && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-diff))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-diff))
@endif diff
@@ -9762,7 +9852,8 @@ all-dosutils: configure-dosutils
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/dosutils && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-dosutils))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-dosutils))
@endif dosutils
@@ -10180,7 +10271,8 @@ all-etc: configure-etc
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/etc && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-etc))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-etc))
@endif etc
@@ -10604,7 +10696,8 @@ all-fastjar: configure-fastjar
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/fastjar && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-fastjar))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-fastjar))
@endif fastjar
@@ -11031,7 +11124,8 @@ all-fileutils: configure-fileutils
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/fileutils && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-fileutils))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-fileutils))
@endif fileutils
@@ -11455,7 +11549,8 @@ all-findutils: configure-findutils
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/findutils && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-findutils))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-findutils))
@endif findutils
@@ -11879,7 +11974,8 @@ all-find: configure-find
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/find && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-find))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-find))
@endif find
@@ -12303,7 +12399,8 @@ all-fixincludes: configure-fixincludes
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/fixincludes && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-fixincludes))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-fixincludes))
@endif fixincludes
@@ -12711,7 +12808,8 @@ all-flex: configure-flex
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/flex && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-flex))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-flex))
@endif flex
@@ -13131,9 +13229,9 @@ configure-stage1-gas:
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/gas/Makefile || exit 0; \
- $(HOST_EXPORTS) \
+ $(HOST_EXPORTS) \
CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE1_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 1 in $(HOST_SUBDIR)/gas ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gas ; \
cd $(HOST_SUBDIR)/gas || exit 1; \
@@ -13162,9 +13260,9 @@ configure-stage2-gas:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/gas/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 2 in $(HOST_SUBDIR)/gas ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gas ; \
cd $(HOST_SUBDIR)/gas || exit 1; \
@@ -13193,9 +13291,9 @@ configure-stageb2g0-gas:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/gas/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE2_CFLAGS) -g0"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS) -g0"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE2_CFLAGS) -g0"; export CXXFLAGS; \
echo Configuring stage b2g0 in $(HOST_SUBDIR)/gas ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gas ; \
cd $(HOST_SUBDIR)/gas || exit 1; \
@@ -13224,9 +13322,9 @@ configure-stage3-gas:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/gas/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 3 in $(HOST_SUBDIR)/gas ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gas ; \
cd $(HOST_SUBDIR)/gas || exit 1; \
@@ -13255,9 +13353,9 @@ configure-stageb3g2-gas:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/gas/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE3_CFLAGS) -g2"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS) -g2"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE3_CFLAGS) -g2"; export CXXFLAGS; \
echo Configuring stage b3g2 in $(HOST_SUBDIR)/gas ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gas ; \
cd $(HOST_SUBDIR)/gas || exit 1; \
@@ -13286,9 +13384,9 @@ configure-stage4-gas:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/gas/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 4 in $(HOST_SUBDIR)/gas ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gas ; \
cd $(HOST_SUBDIR)/gas || exit 1; \
@@ -13317,9 +13415,9 @@ configure-stageprofile-gas:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/gas/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export CXXFLAGS; \
echo Configuring stage profile in $(HOST_SUBDIR)/gas ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gas ; \
cd $(HOST_SUBDIR)/gas || exit 1; \
@@ -13348,9 +13446,9 @@ configure-stagefeedback-gas:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/gas/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export CXXFLAGS; \
echo Configuring stage feedback in $(HOST_SUBDIR)/gas ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gas ; \
cd $(HOST_SUBDIR)/gas || exit 1; \
@@ -13385,7 +13483,8 @@ all-gas: configure-gas
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/gas && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-gas))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-gas))
@endif gas
@@ -13404,8 +13503,11 @@ all-stage1-gas: configure-stage1-gas
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
cd $(HOST_SUBDIR)/gas && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE1_CFLAGS)" LIBCFLAGS="$(STAGE1_CFLAGS)" \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE1_CFLAGS)" CXXFLAGS="$(STAGE1_CFLAGS)" \
+ LIBCFLAGS="$(STAGE1_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE1_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE1_LIBCFLAGS)" $(EXTRA_HOST_FLAGS) \
$(TARGET-stage1-gas)
maybe-clean-stage1-gas: clean-stage1-gas
@@ -13418,7 +13520,7 @@ clean-stage1-gas:
$(MAKE) stage1-start; \
fi; \
cd $(HOST_SUBDIR)/gas && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
clean
@endif gas-bootstrap
@@ -13438,8 +13540,11 @@ all-stage2-gas: configure-stage2-gas
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/gas && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS)" LIBCFLAGS="$(STAGE2_CFLAGS)" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS)" CXXFLAGS="$(STAGE2_CFLAGS)" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS)" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stage2-gas)
maybe-clean-stage2-gas: clean-stage2-gas
@@ -13452,7 +13557,7 @@ clean-stage2-gas:
$(MAKE) stage2-start; \
fi; \
cd $(HOST_SUBDIR)/gas && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif gas-bootstrap
@@ -13473,8 +13578,11 @@ all-stageb2g0-gas: configure-stageb2g0-gas
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/gas && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS) -g0" LIBCFLAGS="$(STAGE2_CFLAGS) -g0" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS) -g0" CXXFLAGS="$(STAGE2_CFLAGS) -g0" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS) -g0" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -g0" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -g0" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stageb2g0-gas)
maybe-clean-stageb2g0-gas: clean-stageb2g0-gas
@@ -13487,7 +13595,7 @@ clean-stageb2g0-gas:
$(MAKE) stageb2g0-start; \
fi; \
cd $(HOST_SUBDIR)/gas && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif gas-bootstrap
@@ -13508,8 +13616,11 @@ all-stage3-gas: configure-stage3-gas
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/gas && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS)" LIBCFLAGS="$(STAGE3_CFLAGS)" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS)" CXXFLAGS="$(STAGE3_CFLAGS)" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS)" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stage3-gas)
maybe-clean-stage3-gas: clean-stage3-gas
@@ -13522,7 +13633,7 @@ clean-stage3-gas:
$(MAKE) stage3-start; \
fi; \
cd $(HOST_SUBDIR)/gas && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif gas-bootstrap
@@ -13543,8 +13654,11 @@ all-stageb3g2-gas: configure-stageb3g2-gas
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/gas && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS) -g2" LIBCFLAGS="$(STAGE3_CFLAGS) -g2" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS) -g2" CXXFLAGS="$(STAGE3_CFLAGS) -g2" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS) -g2" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -g2" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -g2" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stageb3g2-gas)
maybe-clean-stageb3g2-gas: clean-stageb3g2-gas
@@ -13557,7 +13671,7 @@ clean-stageb3g2-gas:
$(MAKE) stageb3g2-start; \
fi; \
cd $(HOST_SUBDIR)/gas && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif gas-bootstrap
@@ -13578,8 +13692,11 @@ all-stage4-gas: configure-stage4-gas
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/gas && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE4_CFLAGS)" LIBCFLAGS="$(STAGE4_CFLAGS)" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE4_CFLAGS)" CXXFLAGS="$(STAGE4_CFLAGS)" \
+ LIBCFLAGS="$(STAGE4_CFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE4_CFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE4_CFLAGS)" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stage4-gas)
maybe-clean-stage4-gas: clean-stage4-gas
@@ -13592,7 +13709,7 @@ clean-stage4-gas:
$(MAKE) stage4-start; \
fi; \
cd $(HOST_SUBDIR)/gas && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif gas-bootstrap
@@ -13613,8 +13730,11 @@ all-stageprofile-gas: configure-stageprofile-gas
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/gas && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" LIBCFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" CXXFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS) -fprofile-generate" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -fprofile-generate" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -fprofile-generate" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stageprofile-gas)
maybe-clean-stageprofile-gas: clean-stageprofile-gas
@@ -13627,7 +13747,7 @@ clean-stageprofile-gas:
$(MAKE) stageprofile-start; \
fi; \
cd $(HOST_SUBDIR)/gas && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif gas-bootstrap
@@ -13648,8 +13768,11 @@ all-stagefeedback-gas: configure-stagefeedback-gas
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/gas && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS) -fprofile-use" LIBCFLAGS="$(STAGE3_CFLAGS) -fprofile-use" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS) -fprofile-use" CXXFLAGS="$(STAGE3_CFLAGS) -fprofile-use" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS) -fprofile-use" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -fprofile-use" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -fprofile-use" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stagefeedback-gas)
maybe-clean-stagefeedback-gas: clean-stagefeedback-gas
@@ -13662,7 +13785,7 @@ clean-stagefeedback-gas:
$(MAKE) stagefeedback-start; \
fi; \
cd $(HOST_SUBDIR)/gas && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif gas-bootstrap
@@ -14069,9 +14192,9 @@ configure-stage1-gcc:
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/gcc/Makefile || exit 0; \
- $(HOST_EXPORTS) \
+ $(HOST_EXPORTS) \
CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE1_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 1 in $(HOST_SUBDIR)/gcc ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gcc ; \
cd $(HOST_SUBDIR)/gcc || exit 1; \
@@ -14100,9 +14223,9 @@ configure-stage2-gcc:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/gcc/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 2 in $(HOST_SUBDIR)/gcc ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gcc ; \
cd $(HOST_SUBDIR)/gcc || exit 1; \
@@ -14131,9 +14254,9 @@ configure-stageb2g0-gcc:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/gcc/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE2_CFLAGS) -g0"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS) -g0"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE2_CFLAGS) -g0"; export CXXFLAGS; \
echo Configuring stage b2g0 in $(HOST_SUBDIR)/gcc ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gcc ; \
cd $(HOST_SUBDIR)/gcc || exit 1; \
@@ -14162,9 +14285,9 @@ configure-stage3-gcc:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/gcc/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 3 in $(HOST_SUBDIR)/gcc ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gcc ; \
cd $(HOST_SUBDIR)/gcc || exit 1; \
@@ -14193,9 +14316,9 @@ configure-stageb3g2-gcc:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/gcc/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE3_CFLAGS) -g2"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS) -g2"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE3_CFLAGS) -g2"; export CXXFLAGS; \
echo Configuring stage b3g2 in $(HOST_SUBDIR)/gcc ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gcc ; \
cd $(HOST_SUBDIR)/gcc || exit 1; \
@@ -14224,9 +14347,9 @@ configure-stage4-gcc:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/gcc/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 4 in $(HOST_SUBDIR)/gcc ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gcc ; \
cd $(HOST_SUBDIR)/gcc || exit 1; \
@@ -14255,9 +14378,9 @@ configure-stageprofile-gcc:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/gcc/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export CXXFLAGS; \
echo Configuring stage profile in $(HOST_SUBDIR)/gcc ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gcc ; \
cd $(HOST_SUBDIR)/gcc || exit 1; \
@@ -14286,9 +14409,9 @@ configure-stagefeedback-gcc:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/gcc/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export CXXFLAGS; \
echo Configuring stage feedback in $(HOST_SUBDIR)/gcc ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gcc ; \
cd $(HOST_SUBDIR)/gcc || exit 1; \
@@ -14323,7 +14446,8 @@ all-gcc: configure-gcc
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/gcc && \
- $(MAKE) $(FLAGS_TO_PASS) $(EXTRA_GCC_FLAGS) $(TARGET-gcc))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(EXTRA_GCC_FLAGS) \
+ $(TARGET-gcc))
@endif gcc
@@ -14342,8 +14466,11 @@ all-stage1-gcc: configure-stage1-gcc
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
cd $(HOST_SUBDIR)/gcc && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE1_CFLAGS)" LIBCFLAGS="$(STAGE1_CFLAGS)" $(EXTRA_GCC_FLAGS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE1_CFLAGS)" CXXFLAGS="$(STAGE1_CFLAGS)" \
+ LIBCFLAGS="$(STAGE1_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE1_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE1_LIBCFLAGS)" $(EXTRA_HOST_FLAGS) $(EXTRA_GCC_FLAGS) \
$(TARGET-stage1-gcc)
maybe-clean-stage1-gcc: clean-stage1-gcc
@@ -14356,7 +14483,7 @@ clean-stage1-gcc:
$(MAKE) stage1-start; \
fi; \
cd $(HOST_SUBDIR)/gcc && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(EXTRA_GCC_FLAGS) clean
@endif gcc-bootstrap
@@ -14376,8 +14503,11 @@ all-stage2-gcc: configure-stage2-gcc
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/gcc && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS)" LIBCFLAGS="$(STAGE2_CFLAGS)" $(POSTSTAGE1_FLAGS_TO_PASS) $(EXTRA_GCC_FLAGS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS)" CXXFLAGS="$(STAGE2_CFLAGS)" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS)" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) $(EXTRA_GCC_FLAGS) \
$(TARGET-stage2-gcc)
maybe-clean-stage2-gcc: clean-stage2-gcc
@@ -14390,7 +14520,7 @@ clean-stage2-gcc:
$(MAKE) stage2-start; \
fi; \
cd $(HOST_SUBDIR)/gcc && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
$(EXTRA_GCC_FLAGS) clean
@endif gcc-bootstrap
@@ -14411,8 +14541,11 @@ all-stageb2g0-gcc: configure-stageb2g0-gcc
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/gcc && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS) -g0" LIBCFLAGS="$(STAGE2_CFLAGS) -g0" $(POSTSTAGE1_FLAGS_TO_PASS) $(EXTRA_GCC_FLAGS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS) -g0" CXXFLAGS="$(STAGE2_CFLAGS) -g0" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS) -g0" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -g0" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -g0" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) $(EXTRA_GCC_FLAGS) \
$(TARGET-stageb2g0-gcc)
maybe-clean-stageb2g0-gcc: clean-stageb2g0-gcc
@@ -14425,7 +14558,7 @@ clean-stageb2g0-gcc:
$(MAKE) stageb2g0-start; \
fi; \
cd $(HOST_SUBDIR)/gcc && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
$(EXTRA_GCC_FLAGS) clean
@endif gcc-bootstrap
@@ -14446,8 +14579,11 @@ all-stage3-gcc: configure-stage3-gcc
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/gcc && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS)" LIBCFLAGS="$(STAGE3_CFLAGS)" $(POSTSTAGE1_FLAGS_TO_PASS) $(EXTRA_GCC_FLAGS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS)" CXXFLAGS="$(STAGE3_CFLAGS)" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS)" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) $(EXTRA_GCC_FLAGS) \
$(TARGET-stage3-gcc)
maybe-clean-stage3-gcc: clean-stage3-gcc
@@ -14460,7 +14596,7 @@ clean-stage3-gcc:
$(MAKE) stage3-start; \
fi; \
cd $(HOST_SUBDIR)/gcc && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
$(EXTRA_GCC_FLAGS) clean
@endif gcc-bootstrap
@@ -14481,8 +14617,11 @@ all-stageb3g2-gcc: configure-stageb3g2-gcc
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/gcc && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS) -g2" LIBCFLAGS="$(STAGE3_CFLAGS) -g2" $(POSTSTAGE1_FLAGS_TO_PASS) $(EXTRA_GCC_FLAGS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS) -g2" CXXFLAGS="$(STAGE3_CFLAGS) -g2" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS) -g2" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -g2" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -g2" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) $(EXTRA_GCC_FLAGS) \
$(TARGET-stageb3g2-gcc)
maybe-clean-stageb3g2-gcc: clean-stageb3g2-gcc
@@ -14495,7 +14634,7 @@ clean-stageb3g2-gcc:
$(MAKE) stageb3g2-start; \
fi; \
cd $(HOST_SUBDIR)/gcc && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
$(EXTRA_GCC_FLAGS) clean
@endif gcc-bootstrap
@@ -14516,8 +14655,11 @@ all-stage4-gcc: configure-stage4-gcc
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/gcc && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE4_CFLAGS)" LIBCFLAGS="$(STAGE4_CFLAGS)" $(POSTSTAGE1_FLAGS_TO_PASS) $(EXTRA_GCC_FLAGS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE4_CFLAGS)" CXXFLAGS="$(STAGE4_CFLAGS)" \
+ LIBCFLAGS="$(STAGE4_CFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE4_CFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE4_CFLAGS)" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) $(EXTRA_GCC_FLAGS) \
$(TARGET-stage4-gcc)
maybe-clean-stage4-gcc: clean-stage4-gcc
@@ -14530,7 +14672,7 @@ clean-stage4-gcc:
$(MAKE) stage4-start; \
fi; \
cd $(HOST_SUBDIR)/gcc && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
$(EXTRA_GCC_FLAGS) clean
@endif gcc-bootstrap
@@ -14551,8 +14693,11 @@ all-stageprofile-gcc: configure-stageprofile-gcc
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/gcc && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" LIBCFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" $(POSTSTAGE1_FLAGS_TO_PASS) $(EXTRA_GCC_FLAGS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" CXXFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS) -fprofile-generate" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -fprofile-generate" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -fprofile-generate" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) $(EXTRA_GCC_FLAGS) \
$(TARGET-stageprofile-gcc)
maybe-clean-stageprofile-gcc: clean-stageprofile-gcc
@@ -14565,7 +14710,7 @@ clean-stageprofile-gcc:
$(MAKE) stageprofile-start; \
fi; \
cd $(HOST_SUBDIR)/gcc && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
$(EXTRA_GCC_FLAGS) clean
@endif gcc-bootstrap
@@ -14586,8 +14731,11 @@ all-stagefeedback-gcc: configure-stagefeedback-gcc
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/gcc && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS) -fprofile-use" LIBCFLAGS="$(STAGE3_CFLAGS) -fprofile-use" $(POSTSTAGE1_FLAGS_TO_PASS) $(EXTRA_GCC_FLAGS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS) -fprofile-use" CXXFLAGS="$(STAGE3_CFLAGS) -fprofile-use" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS) -fprofile-use" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -fprofile-use" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -fprofile-use" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) $(EXTRA_GCC_FLAGS) \
$(TARGET-stagefeedback-gcc)
maybe-clean-stagefeedback-gcc: clean-stagefeedback-gcc
@@ -14600,7 +14748,7 @@ clean-stagefeedback-gcc:
$(MAKE) stagefeedback-start; \
fi; \
cd $(HOST_SUBDIR)/gcc && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
$(EXTRA_GCC_FLAGS) clean
@endif gcc-bootstrap
@@ -15014,7 +15162,8 @@ all-gawk: configure-gawk
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/gawk && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-gawk))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-gawk))
@endif gawk
@@ -15438,7 +15587,8 @@ all-gettext: configure-gettext
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/gettext && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-gettext))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-gettext))
@endif gettext
@@ -15855,9 +16005,9 @@ configure-stage1-gmp:
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/gmp/Makefile || exit 0; \
- $(HOST_EXPORTS) \
+ $(HOST_EXPORTS) \
CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE1_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 1 in $(HOST_SUBDIR)/gmp ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp ; \
cd $(HOST_SUBDIR)/gmp || exit 1; \
@@ -15886,9 +16036,9 @@ configure-stage2-gmp:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/gmp/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 2 in $(HOST_SUBDIR)/gmp ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp ; \
cd $(HOST_SUBDIR)/gmp || exit 1; \
@@ -15917,9 +16067,9 @@ configure-stageb2g0-gmp:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/gmp/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE2_CFLAGS) -g0"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS) -g0"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE2_CFLAGS) -g0"; export CXXFLAGS; \
echo Configuring stage b2g0 in $(HOST_SUBDIR)/gmp ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp ; \
cd $(HOST_SUBDIR)/gmp || exit 1; \
@@ -15948,9 +16098,9 @@ configure-stage3-gmp:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/gmp/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 3 in $(HOST_SUBDIR)/gmp ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp ; \
cd $(HOST_SUBDIR)/gmp || exit 1; \
@@ -15979,9 +16129,9 @@ configure-stageb3g2-gmp:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/gmp/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE3_CFLAGS) -g2"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS) -g2"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE3_CFLAGS) -g2"; export CXXFLAGS; \
echo Configuring stage b3g2 in $(HOST_SUBDIR)/gmp ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp ; \
cd $(HOST_SUBDIR)/gmp || exit 1; \
@@ -16010,9 +16160,9 @@ configure-stage4-gmp:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/gmp/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 4 in $(HOST_SUBDIR)/gmp ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp ; \
cd $(HOST_SUBDIR)/gmp || exit 1; \
@@ -16041,9 +16191,9 @@ configure-stageprofile-gmp:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/gmp/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export CXXFLAGS; \
echo Configuring stage profile in $(HOST_SUBDIR)/gmp ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp ; \
cd $(HOST_SUBDIR)/gmp || exit 1; \
@@ -16072,9 +16222,9 @@ configure-stagefeedback-gmp:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/gmp/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export CXXFLAGS; \
echo Configuring stage feedback in $(HOST_SUBDIR)/gmp ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp ; \
cd $(HOST_SUBDIR)/gmp || exit 1; \
@@ -16109,7 +16259,8 @@ all-gmp: configure-gmp
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/gmp && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-gmp))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-gmp))
@endif gmp
@@ -16128,8 +16279,11 @@ all-stage1-gmp: configure-stage1-gmp
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
cd $(HOST_SUBDIR)/gmp && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE1_CFLAGS)" LIBCFLAGS="$(STAGE1_CFLAGS)" \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE1_CFLAGS)" CXXFLAGS="$(STAGE1_CFLAGS)" \
+ LIBCFLAGS="$(STAGE1_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE1_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE1_LIBCFLAGS)" $(EXTRA_HOST_FLAGS) \
$(TARGET-stage1-gmp)
maybe-clean-stage1-gmp: clean-stage1-gmp
@@ -16142,7 +16296,7 @@ clean-stage1-gmp:
$(MAKE) stage1-start; \
fi; \
cd $(HOST_SUBDIR)/gmp && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
clean
@endif gmp-bootstrap
@@ -16162,8 +16316,11 @@ all-stage2-gmp: configure-stage2-gmp
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/gmp && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS)" LIBCFLAGS="$(STAGE2_CFLAGS)" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS)" CXXFLAGS="$(STAGE2_CFLAGS)" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS)" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stage2-gmp)
maybe-clean-stage2-gmp: clean-stage2-gmp
@@ -16176,7 +16333,7 @@ clean-stage2-gmp:
$(MAKE) stage2-start; \
fi; \
cd $(HOST_SUBDIR)/gmp && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif gmp-bootstrap
@@ -16197,8 +16354,11 @@ all-stageb2g0-gmp: configure-stageb2g0-gmp
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/gmp && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS) -g0" LIBCFLAGS="$(STAGE2_CFLAGS) -g0" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS) -g0" CXXFLAGS="$(STAGE2_CFLAGS) -g0" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS) -g0" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -g0" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -g0" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stageb2g0-gmp)
maybe-clean-stageb2g0-gmp: clean-stageb2g0-gmp
@@ -16211,7 +16371,7 @@ clean-stageb2g0-gmp:
$(MAKE) stageb2g0-start; \
fi; \
cd $(HOST_SUBDIR)/gmp && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif gmp-bootstrap
@@ -16232,8 +16392,11 @@ all-stage3-gmp: configure-stage3-gmp
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/gmp && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS)" LIBCFLAGS="$(STAGE3_CFLAGS)" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS)" CXXFLAGS="$(STAGE3_CFLAGS)" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS)" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stage3-gmp)
maybe-clean-stage3-gmp: clean-stage3-gmp
@@ -16246,7 +16409,7 @@ clean-stage3-gmp:
$(MAKE) stage3-start; \
fi; \
cd $(HOST_SUBDIR)/gmp && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif gmp-bootstrap
@@ -16267,8 +16430,11 @@ all-stageb3g2-gmp: configure-stageb3g2-gmp
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/gmp && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS) -g2" LIBCFLAGS="$(STAGE3_CFLAGS) -g2" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS) -g2" CXXFLAGS="$(STAGE3_CFLAGS) -g2" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS) -g2" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -g2" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -g2" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stageb3g2-gmp)
maybe-clean-stageb3g2-gmp: clean-stageb3g2-gmp
@@ -16281,7 +16447,7 @@ clean-stageb3g2-gmp:
$(MAKE) stageb3g2-start; \
fi; \
cd $(HOST_SUBDIR)/gmp && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif gmp-bootstrap
@@ -16302,8 +16468,11 @@ all-stage4-gmp: configure-stage4-gmp
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/gmp && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE4_CFLAGS)" LIBCFLAGS="$(STAGE4_CFLAGS)" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE4_CFLAGS)" CXXFLAGS="$(STAGE4_CFLAGS)" \
+ LIBCFLAGS="$(STAGE4_CFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE4_CFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE4_CFLAGS)" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stage4-gmp)
maybe-clean-stage4-gmp: clean-stage4-gmp
@@ -16316,7 +16485,7 @@ clean-stage4-gmp:
$(MAKE) stage4-start; \
fi; \
cd $(HOST_SUBDIR)/gmp && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif gmp-bootstrap
@@ -16337,8 +16506,11 @@ all-stageprofile-gmp: configure-stageprofile-gmp
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/gmp && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" LIBCFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" CXXFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS) -fprofile-generate" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -fprofile-generate" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -fprofile-generate" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stageprofile-gmp)
maybe-clean-stageprofile-gmp: clean-stageprofile-gmp
@@ -16351,7 +16523,7 @@ clean-stageprofile-gmp:
$(MAKE) stageprofile-start; \
fi; \
cd $(HOST_SUBDIR)/gmp && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif gmp-bootstrap
@@ -16372,8 +16544,11 @@ all-stagefeedback-gmp: configure-stagefeedback-gmp
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/gmp && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS) -fprofile-use" LIBCFLAGS="$(STAGE3_CFLAGS) -fprofile-use" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS) -fprofile-use" CXXFLAGS="$(STAGE3_CFLAGS) -fprofile-use" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS) -fprofile-use" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -fprofile-use" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -fprofile-use" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stagefeedback-gmp)
maybe-clean-stagefeedback-gmp: clean-stagefeedback-gmp
@@ -16386,7 +16561,7 @@ clean-stagefeedback-gmp:
$(MAKE) stagefeedback-start; \
fi; \
cd $(HOST_SUBDIR)/gmp && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif gmp-bootstrap
@@ -16787,9 +16962,9 @@ configure-stage1-mpfr:
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/mpfr/Makefile || exit 0; \
- $(HOST_EXPORTS) \
+ $(HOST_EXPORTS) \
CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE1_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 1 in $(HOST_SUBDIR)/mpfr ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpfr ; \
cd $(HOST_SUBDIR)/mpfr || exit 1; \
@@ -16818,9 +16993,9 @@ configure-stage2-mpfr:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/mpfr/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 2 in $(HOST_SUBDIR)/mpfr ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpfr ; \
cd $(HOST_SUBDIR)/mpfr || exit 1; \
@@ -16849,9 +17024,9 @@ configure-stageb2g0-mpfr:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/mpfr/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE2_CFLAGS) -g0"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS) -g0"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE2_CFLAGS) -g0"; export CXXFLAGS; \
echo Configuring stage b2g0 in $(HOST_SUBDIR)/mpfr ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpfr ; \
cd $(HOST_SUBDIR)/mpfr || exit 1; \
@@ -16880,9 +17055,9 @@ configure-stage3-mpfr:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/mpfr/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 3 in $(HOST_SUBDIR)/mpfr ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpfr ; \
cd $(HOST_SUBDIR)/mpfr || exit 1; \
@@ -16911,9 +17086,9 @@ configure-stageb3g2-mpfr:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/mpfr/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE3_CFLAGS) -g2"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS) -g2"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE3_CFLAGS) -g2"; export CXXFLAGS; \
echo Configuring stage b3g2 in $(HOST_SUBDIR)/mpfr ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpfr ; \
cd $(HOST_SUBDIR)/mpfr || exit 1; \
@@ -16942,9 +17117,9 @@ configure-stage4-mpfr:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/mpfr/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 4 in $(HOST_SUBDIR)/mpfr ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpfr ; \
cd $(HOST_SUBDIR)/mpfr || exit 1; \
@@ -16973,9 +17148,9 @@ configure-stageprofile-mpfr:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/mpfr/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export CXXFLAGS; \
echo Configuring stage profile in $(HOST_SUBDIR)/mpfr ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpfr ; \
cd $(HOST_SUBDIR)/mpfr || exit 1; \
@@ -17004,9 +17179,9 @@ configure-stagefeedback-mpfr:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/mpfr/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export CXXFLAGS; \
echo Configuring stage feedback in $(HOST_SUBDIR)/mpfr ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpfr ; \
cd $(HOST_SUBDIR)/mpfr || exit 1; \
@@ -17041,7 +17216,8 @@ all-mpfr: configure-mpfr
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/mpfr && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-mpfr))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-mpfr))
@endif mpfr
@@ -17060,8 +17236,11 @@ all-stage1-mpfr: configure-stage1-mpfr
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
cd $(HOST_SUBDIR)/mpfr && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE1_CFLAGS)" LIBCFLAGS="$(STAGE1_CFLAGS)" \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE1_CFLAGS)" CXXFLAGS="$(STAGE1_CFLAGS)" \
+ LIBCFLAGS="$(STAGE1_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE1_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE1_LIBCFLAGS)" $(EXTRA_HOST_FLAGS) \
$(TARGET-stage1-mpfr)
maybe-clean-stage1-mpfr: clean-stage1-mpfr
@@ -17074,7 +17253,7 @@ clean-stage1-mpfr:
$(MAKE) stage1-start; \
fi; \
cd $(HOST_SUBDIR)/mpfr && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
clean
@endif mpfr-bootstrap
@@ -17094,8 +17273,11 @@ all-stage2-mpfr: configure-stage2-mpfr
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/mpfr && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS)" LIBCFLAGS="$(STAGE2_CFLAGS)" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS)" CXXFLAGS="$(STAGE2_CFLAGS)" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS)" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stage2-mpfr)
maybe-clean-stage2-mpfr: clean-stage2-mpfr
@@ -17108,7 +17290,7 @@ clean-stage2-mpfr:
$(MAKE) stage2-start; \
fi; \
cd $(HOST_SUBDIR)/mpfr && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif mpfr-bootstrap
@@ -17129,8 +17311,11 @@ all-stageb2g0-mpfr: configure-stageb2g0-mpfr
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/mpfr && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS) -g0" LIBCFLAGS="$(STAGE2_CFLAGS) -g0" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS) -g0" CXXFLAGS="$(STAGE2_CFLAGS) -g0" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS) -g0" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -g0" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -g0" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stageb2g0-mpfr)
maybe-clean-stageb2g0-mpfr: clean-stageb2g0-mpfr
@@ -17143,7 +17328,7 @@ clean-stageb2g0-mpfr:
$(MAKE) stageb2g0-start; \
fi; \
cd $(HOST_SUBDIR)/mpfr && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif mpfr-bootstrap
@@ -17164,8 +17349,11 @@ all-stage3-mpfr: configure-stage3-mpfr
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/mpfr && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS)" LIBCFLAGS="$(STAGE3_CFLAGS)" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS)" CXXFLAGS="$(STAGE3_CFLAGS)" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS)" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stage3-mpfr)
maybe-clean-stage3-mpfr: clean-stage3-mpfr
@@ -17178,7 +17366,7 @@ clean-stage3-mpfr:
$(MAKE) stage3-start; \
fi; \
cd $(HOST_SUBDIR)/mpfr && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif mpfr-bootstrap
@@ -17199,8 +17387,11 @@ all-stageb3g2-mpfr: configure-stageb3g2-mpfr
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/mpfr && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS) -g2" LIBCFLAGS="$(STAGE3_CFLAGS) -g2" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS) -g2" CXXFLAGS="$(STAGE3_CFLAGS) -g2" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS) -g2" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -g2" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -g2" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stageb3g2-mpfr)
maybe-clean-stageb3g2-mpfr: clean-stageb3g2-mpfr
@@ -17213,7 +17404,7 @@ clean-stageb3g2-mpfr:
$(MAKE) stageb3g2-start; \
fi; \
cd $(HOST_SUBDIR)/mpfr && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif mpfr-bootstrap
@@ -17234,8 +17425,11 @@ all-stage4-mpfr: configure-stage4-mpfr
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/mpfr && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE4_CFLAGS)" LIBCFLAGS="$(STAGE4_CFLAGS)" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE4_CFLAGS)" CXXFLAGS="$(STAGE4_CFLAGS)" \
+ LIBCFLAGS="$(STAGE4_CFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE4_CFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE4_CFLAGS)" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stage4-mpfr)
maybe-clean-stage4-mpfr: clean-stage4-mpfr
@@ -17248,7 +17442,7 @@ clean-stage4-mpfr:
$(MAKE) stage4-start; \
fi; \
cd $(HOST_SUBDIR)/mpfr && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif mpfr-bootstrap
@@ -17269,8 +17463,11 @@ all-stageprofile-mpfr: configure-stageprofile-mpfr
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/mpfr && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" LIBCFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" CXXFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS) -fprofile-generate" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -fprofile-generate" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -fprofile-generate" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stageprofile-mpfr)
maybe-clean-stageprofile-mpfr: clean-stageprofile-mpfr
@@ -17283,7 +17480,7 @@ clean-stageprofile-mpfr:
$(MAKE) stageprofile-start; \
fi; \
cd $(HOST_SUBDIR)/mpfr && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif mpfr-bootstrap
@@ -17304,8 +17501,11 @@ all-stagefeedback-mpfr: configure-stagefeedback-mpfr
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/mpfr && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS) -fprofile-use" LIBCFLAGS="$(STAGE3_CFLAGS) -fprofile-use" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS) -fprofile-use" CXXFLAGS="$(STAGE3_CFLAGS) -fprofile-use" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS) -fprofile-use" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -fprofile-use" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -fprofile-use" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stagefeedback-mpfr)
maybe-clean-stagefeedback-mpfr: clean-stagefeedback-mpfr
@@ -17318,7 +17518,7 @@ clean-stagefeedback-mpfr:
$(MAKE) stagefeedback-start; \
fi; \
cd $(HOST_SUBDIR)/mpfr && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif mpfr-bootstrap
@@ -17726,7 +17926,8 @@ all-gnuserv: configure-gnuserv
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/gnuserv && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-gnuserv))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-gnuserv))
@endif gnuserv
@@ -18150,7 +18351,8 @@ all-gprof: configure-gprof
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/gprof && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-gprof))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-gprof))
@endif gprof
@@ -18574,7 +18776,8 @@ all-gzip: configure-gzip
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/gzip && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-gzip))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-gzip))
@endif gzip
@@ -18998,7 +19201,8 @@ all-hello: configure-hello
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/hello && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-hello))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-hello))
@endif hello
@@ -19422,7 +19626,8 @@ all-indent: configure-indent
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/indent && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-indent))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-indent))
@endif indent
@@ -19839,9 +20044,9 @@ configure-stage1-intl:
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/intl/Makefile || exit 0; \
- $(HOST_EXPORTS) \
+ $(HOST_EXPORTS) \
CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE1_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 1 in $(HOST_SUBDIR)/intl ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/intl ; \
cd $(HOST_SUBDIR)/intl || exit 1; \
@@ -19870,9 +20075,9 @@ configure-stage2-intl:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/intl/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 2 in $(HOST_SUBDIR)/intl ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/intl ; \
cd $(HOST_SUBDIR)/intl || exit 1; \
@@ -19901,9 +20106,9 @@ configure-stageb2g0-intl:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/intl/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE2_CFLAGS) -g0"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS) -g0"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE2_CFLAGS) -g0"; export CXXFLAGS; \
echo Configuring stage b2g0 in $(HOST_SUBDIR)/intl ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/intl ; \
cd $(HOST_SUBDIR)/intl || exit 1; \
@@ -19932,9 +20137,9 @@ configure-stage3-intl:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/intl/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 3 in $(HOST_SUBDIR)/intl ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/intl ; \
cd $(HOST_SUBDIR)/intl || exit 1; \
@@ -19963,9 +20168,9 @@ configure-stageb3g2-intl:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/intl/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE3_CFLAGS) -g2"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS) -g2"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE3_CFLAGS) -g2"; export CXXFLAGS; \
echo Configuring stage b3g2 in $(HOST_SUBDIR)/intl ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/intl ; \
cd $(HOST_SUBDIR)/intl || exit 1; \
@@ -19994,9 +20199,9 @@ configure-stage4-intl:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/intl/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 4 in $(HOST_SUBDIR)/intl ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/intl ; \
cd $(HOST_SUBDIR)/intl || exit 1; \
@@ -20025,9 +20230,9 @@ configure-stageprofile-intl:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/intl/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export CXXFLAGS; \
echo Configuring stage profile in $(HOST_SUBDIR)/intl ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/intl ; \
cd $(HOST_SUBDIR)/intl || exit 1; \
@@ -20056,9 +20261,9 @@ configure-stagefeedback-intl:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/intl/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export CXXFLAGS; \
echo Configuring stage feedback in $(HOST_SUBDIR)/intl ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/intl ; \
cd $(HOST_SUBDIR)/intl || exit 1; \
@@ -20093,7 +20298,8 @@ all-intl: configure-intl
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/intl && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-intl))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-intl))
@endif intl
@@ -20112,8 +20318,11 @@ all-stage1-intl: configure-stage1-intl
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
cd $(HOST_SUBDIR)/intl && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE1_CFLAGS)" LIBCFLAGS="$(STAGE1_CFLAGS)" \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE1_CFLAGS)" CXXFLAGS="$(STAGE1_CFLAGS)" \
+ LIBCFLAGS="$(STAGE1_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE1_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE1_LIBCFLAGS)" $(EXTRA_HOST_FLAGS) \
$(TARGET-stage1-intl)
maybe-clean-stage1-intl: clean-stage1-intl
@@ -20126,7 +20335,7 @@ clean-stage1-intl:
$(MAKE) stage1-start; \
fi; \
cd $(HOST_SUBDIR)/intl && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
clean
@endif intl-bootstrap
@@ -20146,8 +20355,11 @@ all-stage2-intl: configure-stage2-intl
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/intl && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS)" LIBCFLAGS="$(STAGE2_CFLAGS)" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS)" CXXFLAGS="$(STAGE2_CFLAGS)" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS)" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stage2-intl)
maybe-clean-stage2-intl: clean-stage2-intl
@@ -20160,7 +20372,7 @@ clean-stage2-intl:
$(MAKE) stage2-start; \
fi; \
cd $(HOST_SUBDIR)/intl && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif intl-bootstrap
@@ -20181,8 +20393,11 @@ all-stageb2g0-intl: configure-stageb2g0-intl
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/intl && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS) -g0" LIBCFLAGS="$(STAGE2_CFLAGS) -g0" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS) -g0" CXXFLAGS="$(STAGE2_CFLAGS) -g0" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS) -g0" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -g0" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -g0" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stageb2g0-intl)
maybe-clean-stageb2g0-intl: clean-stageb2g0-intl
@@ -20195,7 +20410,7 @@ clean-stageb2g0-intl:
$(MAKE) stageb2g0-start; \
fi; \
cd $(HOST_SUBDIR)/intl && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif intl-bootstrap
@@ -20216,8 +20431,11 @@ all-stage3-intl: configure-stage3-intl
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/intl && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS)" LIBCFLAGS="$(STAGE3_CFLAGS)" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS)" CXXFLAGS="$(STAGE3_CFLAGS)" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS)" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stage3-intl)
maybe-clean-stage3-intl: clean-stage3-intl
@@ -20230,7 +20448,7 @@ clean-stage3-intl:
$(MAKE) stage3-start; \
fi; \
cd $(HOST_SUBDIR)/intl && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif intl-bootstrap
@@ -20251,8 +20469,11 @@ all-stageb3g2-intl: configure-stageb3g2-intl
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/intl && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS) -g2" LIBCFLAGS="$(STAGE3_CFLAGS) -g2" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS) -g2" CXXFLAGS="$(STAGE3_CFLAGS) -g2" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS) -g2" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -g2" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -g2" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stageb3g2-intl)
maybe-clean-stageb3g2-intl: clean-stageb3g2-intl
@@ -20265,7 +20486,7 @@ clean-stageb3g2-intl:
$(MAKE) stageb3g2-start; \
fi; \
cd $(HOST_SUBDIR)/intl && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif intl-bootstrap
@@ -20286,8 +20507,11 @@ all-stage4-intl: configure-stage4-intl
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/intl && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE4_CFLAGS)" LIBCFLAGS="$(STAGE4_CFLAGS)" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE4_CFLAGS)" CXXFLAGS="$(STAGE4_CFLAGS)" \
+ LIBCFLAGS="$(STAGE4_CFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE4_CFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE4_CFLAGS)" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stage4-intl)
maybe-clean-stage4-intl: clean-stage4-intl
@@ -20300,7 +20524,7 @@ clean-stage4-intl:
$(MAKE) stage4-start; \
fi; \
cd $(HOST_SUBDIR)/intl && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif intl-bootstrap
@@ -20321,8 +20545,11 @@ all-stageprofile-intl: configure-stageprofile-intl
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/intl && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" LIBCFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" CXXFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS) -fprofile-generate" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -fprofile-generate" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -fprofile-generate" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stageprofile-intl)
maybe-clean-stageprofile-intl: clean-stageprofile-intl
@@ -20335,7 +20562,7 @@ clean-stageprofile-intl:
$(MAKE) stageprofile-start; \
fi; \
cd $(HOST_SUBDIR)/intl && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif intl-bootstrap
@@ -20356,8 +20583,11 @@ all-stagefeedback-intl: configure-stagefeedback-intl
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/intl && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS) -fprofile-use" LIBCFLAGS="$(STAGE3_CFLAGS) -fprofile-use" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS) -fprofile-use" CXXFLAGS="$(STAGE3_CFLAGS) -fprofile-use" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS) -fprofile-use" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -fprofile-use" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -fprofile-use" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stagefeedback-intl)
maybe-clean-stagefeedback-intl: clean-stagefeedback-intl
@@ -20370,7 +20600,7 @@ clean-stagefeedback-intl:
$(MAKE) stagefeedback-start; \
fi; \
cd $(HOST_SUBDIR)/intl && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif intl-bootstrap
@@ -20784,7 +21014,8 @@ all-tcl: configure-tcl
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/tcl && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-tcl))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-tcl))
@endif tcl
@@ -21193,7 +21424,8 @@ all-itcl: configure-itcl
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/itcl && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-itcl))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-itcl))
@endif itcl
@@ -21610,9 +21842,9 @@ configure-stage1-ld:
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/ld/Makefile || exit 0; \
- $(HOST_EXPORTS) \
+ $(HOST_EXPORTS) \
CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE1_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 1 in $(HOST_SUBDIR)/ld ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ld ; \
cd $(HOST_SUBDIR)/ld || exit 1; \
@@ -21641,9 +21873,9 @@ configure-stage2-ld:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/ld/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 2 in $(HOST_SUBDIR)/ld ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ld ; \
cd $(HOST_SUBDIR)/ld || exit 1; \
@@ -21672,9 +21904,9 @@ configure-stageb2g0-ld:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/ld/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE2_CFLAGS) -g0"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS) -g0"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE2_CFLAGS) -g0"; export CXXFLAGS; \
echo Configuring stage b2g0 in $(HOST_SUBDIR)/ld ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ld ; \
cd $(HOST_SUBDIR)/ld || exit 1; \
@@ -21703,9 +21935,9 @@ configure-stage3-ld:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/ld/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 3 in $(HOST_SUBDIR)/ld ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ld ; \
cd $(HOST_SUBDIR)/ld || exit 1; \
@@ -21734,9 +21966,9 @@ configure-stageb3g2-ld:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/ld/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE3_CFLAGS) -g2"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS) -g2"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE3_CFLAGS) -g2"; export CXXFLAGS; \
echo Configuring stage b3g2 in $(HOST_SUBDIR)/ld ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ld ; \
cd $(HOST_SUBDIR)/ld || exit 1; \
@@ -21765,9 +21997,9 @@ configure-stage4-ld:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/ld/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 4 in $(HOST_SUBDIR)/ld ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ld ; \
cd $(HOST_SUBDIR)/ld || exit 1; \
@@ -21796,9 +22028,9 @@ configure-stageprofile-ld:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/ld/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export CXXFLAGS; \
echo Configuring stage profile in $(HOST_SUBDIR)/ld ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ld ; \
cd $(HOST_SUBDIR)/ld || exit 1; \
@@ -21827,9 +22059,9 @@ configure-stagefeedback-ld:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/ld/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export CXXFLAGS; \
echo Configuring stage feedback in $(HOST_SUBDIR)/ld ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ld ; \
cd $(HOST_SUBDIR)/ld || exit 1; \
@@ -21864,7 +22096,8 @@ all-ld: configure-ld
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/ld && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-ld))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-ld))
@endif ld
@@ -21883,8 +22116,11 @@ all-stage1-ld: configure-stage1-ld
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
cd $(HOST_SUBDIR)/ld && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE1_CFLAGS)" LIBCFLAGS="$(STAGE1_CFLAGS)" \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE1_CFLAGS)" CXXFLAGS="$(STAGE1_CFLAGS)" \
+ LIBCFLAGS="$(STAGE1_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE1_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE1_LIBCFLAGS)" $(EXTRA_HOST_FLAGS) \
$(TARGET-stage1-ld)
maybe-clean-stage1-ld: clean-stage1-ld
@@ -21897,7 +22133,7 @@ clean-stage1-ld:
$(MAKE) stage1-start; \
fi; \
cd $(HOST_SUBDIR)/ld && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
clean
@endif ld-bootstrap
@@ -21917,8 +22153,11 @@ all-stage2-ld: configure-stage2-ld
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/ld && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS)" LIBCFLAGS="$(STAGE2_CFLAGS)" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS)" CXXFLAGS="$(STAGE2_CFLAGS)" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS)" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stage2-ld)
maybe-clean-stage2-ld: clean-stage2-ld
@@ -21931,7 +22170,7 @@ clean-stage2-ld:
$(MAKE) stage2-start; \
fi; \
cd $(HOST_SUBDIR)/ld && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif ld-bootstrap
@@ -21952,8 +22191,11 @@ all-stageb2g0-ld: configure-stageb2g0-ld
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/ld && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS) -g0" LIBCFLAGS="$(STAGE2_CFLAGS) -g0" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS) -g0" CXXFLAGS="$(STAGE2_CFLAGS) -g0" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS) -g0" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -g0" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -g0" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stageb2g0-ld)
maybe-clean-stageb2g0-ld: clean-stageb2g0-ld
@@ -21966,7 +22208,7 @@ clean-stageb2g0-ld:
$(MAKE) stageb2g0-start; \
fi; \
cd $(HOST_SUBDIR)/ld && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif ld-bootstrap
@@ -21987,8 +22229,11 @@ all-stage3-ld: configure-stage3-ld
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/ld && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS)" LIBCFLAGS="$(STAGE3_CFLAGS)" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS)" CXXFLAGS="$(STAGE3_CFLAGS)" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS)" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stage3-ld)
maybe-clean-stage3-ld: clean-stage3-ld
@@ -22001,7 +22246,7 @@ clean-stage3-ld:
$(MAKE) stage3-start; \
fi; \
cd $(HOST_SUBDIR)/ld && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif ld-bootstrap
@@ -22022,8 +22267,11 @@ all-stageb3g2-ld: configure-stageb3g2-ld
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/ld && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS) -g2" LIBCFLAGS="$(STAGE3_CFLAGS) -g2" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS) -g2" CXXFLAGS="$(STAGE3_CFLAGS) -g2" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS) -g2" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -g2" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -g2" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stageb3g2-ld)
maybe-clean-stageb3g2-ld: clean-stageb3g2-ld
@@ -22036,7 +22284,7 @@ clean-stageb3g2-ld:
$(MAKE) stageb3g2-start; \
fi; \
cd $(HOST_SUBDIR)/ld && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif ld-bootstrap
@@ -22057,8 +22305,11 @@ all-stage4-ld: configure-stage4-ld
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/ld && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE4_CFLAGS)" LIBCFLAGS="$(STAGE4_CFLAGS)" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE4_CFLAGS)" CXXFLAGS="$(STAGE4_CFLAGS)" \
+ LIBCFLAGS="$(STAGE4_CFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE4_CFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE4_CFLAGS)" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stage4-ld)
maybe-clean-stage4-ld: clean-stage4-ld
@@ -22071,7 +22322,7 @@ clean-stage4-ld:
$(MAKE) stage4-start; \
fi; \
cd $(HOST_SUBDIR)/ld && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif ld-bootstrap
@@ -22092,8 +22343,11 @@ all-stageprofile-ld: configure-stageprofile-ld
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/ld && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" LIBCFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" CXXFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS) -fprofile-generate" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -fprofile-generate" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -fprofile-generate" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stageprofile-ld)
maybe-clean-stageprofile-ld: clean-stageprofile-ld
@@ -22106,7 +22360,7 @@ clean-stageprofile-ld:
$(MAKE) stageprofile-start; \
fi; \
cd $(HOST_SUBDIR)/ld && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif ld-bootstrap
@@ -22127,8 +22381,11 @@ all-stagefeedback-ld: configure-stagefeedback-ld
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/ld && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS) -fprofile-use" LIBCFLAGS="$(STAGE3_CFLAGS) -fprofile-use" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS) -fprofile-use" CXXFLAGS="$(STAGE3_CFLAGS) -fprofile-use" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS) -fprofile-use" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -fprofile-use" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -fprofile-use" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stagefeedback-ld)
maybe-clean-stagefeedback-ld: clean-stagefeedback-ld
@@ -22141,7 +22398,7 @@ clean-stagefeedback-ld:
$(MAKE) stagefeedback-start; \
fi; \
cd $(HOST_SUBDIR)/ld && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif ld-bootstrap
@@ -22548,9 +22805,9 @@ configure-stage1-libcpp:
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/libcpp/Makefile || exit 0; \
- $(HOST_EXPORTS) \
+ $(HOST_EXPORTS) \
CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE1_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 1 in $(HOST_SUBDIR)/libcpp ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcpp ; \
cd $(HOST_SUBDIR)/libcpp || exit 1; \
@@ -22579,9 +22836,9 @@ configure-stage2-libcpp:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/libcpp/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 2 in $(HOST_SUBDIR)/libcpp ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcpp ; \
cd $(HOST_SUBDIR)/libcpp || exit 1; \
@@ -22610,9 +22867,9 @@ configure-stageb2g0-libcpp:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/libcpp/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE2_CFLAGS) -g0"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS) -g0"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE2_CFLAGS) -g0"; export CXXFLAGS; \
echo Configuring stage b2g0 in $(HOST_SUBDIR)/libcpp ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcpp ; \
cd $(HOST_SUBDIR)/libcpp || exit 1; \
@@ -22641,9 +22898,9 @@ configure-stage3-libcpp:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/libcpp/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 3 in $(HOST_SUBDIR)/libcpp ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcpp ; \
cd $(HOST_SUBDIR)/libcpp || exit 1; \
@@ -22672,9 +22929,9 @@ configure-stageb3g2-libcpp:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/libcpp/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE3_CFLAGS) -g2"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS) -g2"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE3_CFLAGS) -g2"; export CXXFLAGS; \
echo Configuring stage b3g2 in $(HOST_SUBDIR)/libcpp ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcpp ; \
cd $(HOST_SUBDIR)/libcpp || exit 1; \
@@ -22703,9 +22960,9 @@ configure-stage4-libcpp:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/libcpp/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 4 in $(HOST_SUBDIR)/libcpp ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcpp ; \
cd $(HOST_SUBDIR)/libcpp || exit 1; \
@@ -22734,9 +22991,9 @@ configure-stageprofile-libcpp:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/libcpp/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export CXXFLAGS; \
echo Configuring stage profile in $(HOST_SUBDIR)/libcpp ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcpp ; \
cd $(HOST_SUBDIR)/libcpp || exit 1; \
@@ -22765,9 +23022,9 @@ configure-stagefeedback-libcpp:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/libcpp/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export CXXFLAGS; \
echo Configuring stage feedback in $(HOST_SUBDIR)/libcpp ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcpp ; \
cd $(HOST_SUBDIR)/libcpp || exit 1; \
@@ -22802,7 +23059,8 @@ all-libcpp: configure-libcpp
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/libcpp && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-libcpp))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-libcpp))
@endif libcpp
@@ -22821,8 +23079,11 @@ all-stage1-libcpp: configure-stage1-libcpp
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
cd $(HOST_SUBDIR)/libcpp && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE1_CFLAGS)" LIBCFLAGS="$(STAGE1_CFLAGS)" \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE1_CFLAGS)" CXXFLAGS="$(STAGE1_CFLAGS)" \
+ LIBCFLAGS="$(STAGE1_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE1_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE1_LIBCFLAGS)" $(EXTRA_HOST_FLAGS) \
$(TARGET-stage1-libcpp)
maybe-clean-stage1-libcpp: clean-stage1-libcpp
@@ -22835,7 +23096,7 @@ clean-stage1-libcpp:
$(MAKE) stage1-start; \
fi; \
cd $(HOST_SUBDIR)/libcpp && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
clean
@endif libcpp-bootstrap
@@ -22855,8 +23116,11 @@ all-stage2-libcpp: configure-stage2-libcpp
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/libcpp && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS)" LIBCFLAGS="$(STAGE2_CFLAGS)" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS)" CXXFLAGS="$(STAGE2_CFLAGS)" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS)" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stage2-libcpp)
maybe-clean-stage2-libcpp: clean-stage2-libcpp
@@ -22869,7 +23133,7 @@ clean-stage2-libcpp:
$(MAKE) stage2-start; \
fi; \
cd $(HOST_SUBDIR)/libcpp && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif libcpp-bootstrap
@@ -22890,8 +23154,11 @@ all-stageb2g0-libcpp: configure-stageb2g0-libcpp
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/libcpp && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS) -g0" LIBCFLAGS="$(STAGE2_CFLAGS) -g0" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS) -g0" CXXFLAGS="$(STAGE2_CFLAGS) -g0" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS) -g0" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -g0" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -g0" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stageb2g0-libcpp)
maybe-clean-stageb2g0-libcpp: clean-stageb2g0-libcpp
@@ -22904,7 +23171,7 @@ clean-stageb2g0-libcpp:
$(MAKE) stageb2g0-start; \
fi; \
cd $(HOST_SUBDIR)/libcpp && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif libcpp-bootstrap
@@ -22925,8 +23192,11 @@ all-stage3-libcpp: configure-stage3-libcpp
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/libcpp && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS)" LIBCFLAGS="$(STAGE3_CFLAGS)" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS)" CXXFLAGS="$(STAGE3_CFLAGS)" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS)" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stage3-libcpp)
maybe-clean-stage3-libcpp: clean-stage3-libcpp
@@ -22939,7 +23209,7 @@ clean-stage3-libcpp:
$(MAKE) stage3-start; \
fi; \
cd $(HOST_SUBDIR)/libcpp && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif libcpp-bootstrap
@@ -22960,8 +23230,11 @@ all-stageb3g2-libcpp: configure-stageb3g2-libcpp
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/libcpp && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS) -g2" LIBCFLAGS="$(STAGE3_CFLAGS) -g2" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS) -g2" CXXFLAGS="$(STAGE3_CFLAGS) -g2" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS) -g2" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -g2" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -g2" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stageb3g2-libcpp)
maybe-clean-stageb3g2-libcpp: clean-stageb3g2-libcpp
@@ -22974,7 +23247,7 @@ clean-stageb3g2-libcpp:
$(MAKE) stageb3g2-start; \
fi; \
cd $(HOST_SUBDIR)/libcpp && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif libcpp-bootstrap
@@ -22995,8 +23268,11 @@ all-stage4-libcpp: configure-stage4-libcpp
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/libcpp && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE4_CFLAGS)" LIBCFLAGS="$(STAGE4_CFLAGS)" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE4_CFLAGS)" CXXFLAGS="$(STAGE4_CFLAGS)" \
+ LIBCFLAGS="$(STAGE4_CFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE4_CFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE4_CFLAGS)" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stage4-libcpp)
maybe-clean-stage4-libcpp: clean-stage4-libcpp
@@ -23009,7 +23285,7 @@ clean-stage4-libcpp:
$(MAKE) stage4-start; \
fi; \
cd $(HOST_SUBDIR)/libcpp && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif libcpp-bootstrap
@@ -23030,8 +23306,11 @@ all-stageprofile-libcpp: configure-stageprofile-libcpp
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/libcpp && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" LIBCFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" CXXFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS) -fprofile-generate" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -fprofile-generate" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -fprofile-generate" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stageprofile-libcpp)
maybe-clean-stageprofile-libcpp: clean-stageprofile-libcpp
@@ -23044,7 +23323,7 @@ clean-stageprofile-libcpp:
$(MAKE) stageprofile-start; \
fi; \
cd $(HOST_SUBDIR)/libcpp && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif libcpp-bootstrap
@@ -23065,8 +23344,11 @@ all-stagefeedback-libcpp: configure-stagefeedback-libcpp
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/libcpp && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS) -fprofile-use" LIBCFLAGS="$(STAGE3_CFLAGS) -fprofile-use" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS) -fprofile-use" CXXFLAGS="$(STAGE3_CFLAGS) -fprofile-use" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS) -fprofile-use" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -fprofile-use" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -fprofile-use" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stagefeedback-libcpp)
maybe-clean-stagefeedback-libcpp: clean-stagefeedback-libcpp
@@ -23079,7 +23361,7 @@ clean-stagefeedback-libcpp:
$(MAKE) stagefeedback-start; \
fi; \
cd $(HOST_SUBDIR)/libcpp && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif libcpp-bootstrap
@@ -23486,9 +23768,9 @@ configure-stage1-libdecnumber:
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/libdecnumber/Makefile || exit 0; \
- $(HOST_EXPORTS) \
+ $(HOST_EXPORTS) \
CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE1_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 1 in $(HOST_SUBDIR)/libdecnumber ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libdecnumber ; \
cd $(HOST_SUBDIR)/libdecnumber || exit 1; \
@@ -23517,9 +23799,9 @@ configure-stage2-libdecnumber:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/libdecnumber/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 2 in $(HOST_SUBDIR)/libdecnumber ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libdecnumber ; \
cd $(HOST_SUBDIR)/libdecnumber || exit 1; \
@@ -23548,9 +23830,9 @@ configure-stageb2g0-libdecnumber:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/libdecnumber/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE2_CFLAGS) -g0"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS) -g0"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE2_CFLAGS) -g0"; export CXXFLAGS; \
echo Configuring stage b2g0 in $(HOST_SUBDIR)/libdecnumber ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libdecnumber ; \
cd $(HOST_SUBDIR)/libdecnumber || exit 1; \
@@ -23579,9 +23861,9 @@ configure-stage3-libdecnumber:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/libdecnumber/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 3 in $(HOST_SUBDIR)/libdecnumber ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libdecnumber ; \
cd $(HOST_SUBDIR)/libdecnumber || exit 1; \
@@ -23610,9 +23892,9 @@ configure-stageb3g2-libdecnumber:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/libdecnumber/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE3_CFLAGS) -g2"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS) -g2"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE3_CFLAGS) -g2"; export CXXFLAGS; \
echo Configuring stage b3g2 in $(HOST_SUBDIR)/libdecnumber ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libdecnumber ; \
cd $(HOST_SUBDIR)/libdecnumber || exit 1; \
@@ -23641,9 +23923,9 @@ configure-stage4-libdecnumber:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/libdecnumber/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 4 in $(HOST_SUBDIR)/libdecnumber ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libdecnumber ; \
cd $(HOST_SUBDIR)/libdecnumber || exit 1; \
@@ -23672,9 +23954,9 @@ configure-stageprofile-libdecnumber:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/libdecnumber/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export CXXFLAGS; \
echo Configuring stage profile in $(HOST_SUBDIR)/libdecnumber ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libdecnumber ; \
cd $(HOST_SUBDIR)/libdecnumber || exit 1; \
@@ -23703,9 +23985,9 @@ configure-stagefeedback-libdecnumber:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/libdecnumber/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export CXXFLAGS; \
echo Configuring stage feedback in $(HOST_SUBDIR)/libdecnumber ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libdecnumber ; \
cd $(HOST_SUBDIR)/libdecnumber || exit 1; \
@@ -23740,7 +24022,8 @@ all-libdecnumber: configure-libdecnumber
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/libdecnumber && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-libdecnumber))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-libdecnumber))
@endif libdecnumber
@@ -23759,8 +24042,11 @@ all-stage1-libdecnumber: configure-stage1-libdecnumber
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
cd $(HOST_SUBDIR)/libdecnumber && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE1_CFLAGS)" LIBCFLAGS="$(STAGE1_CFLAGS)" \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE1_CFLAGS)" CXXFLAGS="$(STAGE1_CFLAGS)" \
+ LIBCFLAGS="$(STAGE1_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE1_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE1_LIBCFLAGS)" $(EXTRA_HOST_FLAGS) \
$(TARGET-stage1-libdecnumber)
maybe-clean-stage1-libdecnumber: clean-stage1-libdecnumber
@@ -23773,7 +24059,7 @@ clean-stage1-libdecnumber:
$(MAKE) stage1-start; \
fi; \
cd $(HOST_SUBDIR)/libdecnumber && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
clean
@endif libdecnumber-bootstrap
@@ -23793,8 +24079,11 @@ all-stage2-libdecnumber: configure-stage2-libdecnumber
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/libdecnumber && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS)" LIBCFLAGS="$(STAGE2_CFLAGS)" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS)" CXXFLAGS="$(STAGE2_CFLAGS)" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS)" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stage2-libdecnumber)
maybe-clean-stage2-libdecnumber: clean-stage2-libdecnumber
@@ -23807,7 +24096,7 @@ clean-stage2-libdecnumber:
$(MAKE) stage2-start; \
fi; \
cd $(HOST_SUBDIR)/libdecnumber && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif libdecnumber-bootstrap
@@ -23828,8 +24117,11 @@ all-stageb2g0-libdecnumber: configure-stageb2g0-libdecnumber
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/libdecnumber && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS) -g0" LIBCFLAGS="$(STAGE2_CFLAGS) -g0" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS) -g0" CXXFLAGS="$(STAGE2_CFLAGS) -g0" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS) -g0" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -g0" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -g0" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stageb2g0-libdecnumber)
maybe-clean-stageb2g0-libdecnumber: clean-stageb2g0-libdecnumber
@@ -23842,7 +24134,7 @@ clean-stageb2g0-libdecnumber:
$(MAKE) stageb2g0-start; \
fi; \
cd $(HOST_SUBDIR)/libdecnumber && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif libdecnumber-bootstrap
@@ -23863,8 +24155,11 @@ all-stage3-libdecnumber: configure-stage3-libdecnumber
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/libdecnumber && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS)" LIBCFLAGS="$(STAGE3_CFLAGS)" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS)" CXXFLAGS="$(STAGE3_CFLAGS)" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS)" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stage3-libdecnumber)
maybe-clean-stage3-libdecnumber: clean-stage3-libdecnumber
@@ -23877,7 +24172,7 @@ clean-stage3-libdecnumber:
$(MAKE) stage3-start; \
fi; \
cd $(HOST_SUBDIR)/libdecnumber && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif libdecnumber-bootstrap
@@ -23898,8 +24193,11 @@ all-stageb3g2-libdecnumber: configure-stageb3g2-libdecnumber
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/libdecnumber && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS) -g2" LIBCFLAGS="$(STAGE3_CFLAGS) -g2" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS) -g2" CXXFLAGS="$(STAGE3_CFLAGS) -g2" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS) -g2" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -g2" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -g2" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stageb3g2-libdecnumber)
maybe-clean-stageb3g2-libdecnumber: clean-stageb3g2-libdecnumber
@@ -23912,7 +24210,7 @@ clean-stageb3g2-libdecnumber:
$(MAKE) stageb3g2-start; \
fi; \
cd $(HOST_SUBDIR)/libdecnumber && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif libdecnumber-bootstrap
@@ -23933,8 +24231,11 @@ all-stage4-libdecnumber: configure-stage4-libdecnumber
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/libdecnumber && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE4_CFLAGS)" LIBCFLAGS="$(STAGE4_CFLAGS)" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE4_CFLAGS)" CXXFLAGS="$(STAGE4_CFLAGS)" \
+ LIBCFLAGS="$(STAGE4_CFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE4_CFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE4_CFLAGS)" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stage4-libdecnumber)
maybe-clean-stage4-libdecnumber: clean-stage4-libdecnumber
@@ -23947,7 +24248,7 @@ clean-stage4-libdecnumber:
$(MAKE) stage4-start; \
fi; \
cd $(HOST_SUBDIR)/libdecnumber && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif libdecnumber-bootstrap
@@ -23968,8 +24269,11 @@ all-stageprofile-libdecnumber: configure-stageprofile-libdecnumber
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/libdecnumber && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" LIBCFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" CXXFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS) -fprofile-generate" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -fprofile-generate" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -fprofile-generate" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stageprofile-libdecnumber)
maybe-clean-stageprofile-libdecnumber: clean-stageprofile-libdecnumber
@@ -23982,7 +24286,7 @@ clean-stageprofile-libdecnumber:
$(MAKE) stageprofile-start; \
fi; \
cd $(HOST_SUBDIR)/libdecnumber && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif libdecnumber-bootstrap
@@ -24003,8 +24307,11 @@ all-stagefeedback-libdecnumber: configure-stagefeedback-libdecnumber
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/libdecnumber && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS) -fprofile-use" LIBCFLAGS="$(STAGE3_CFLAGS) -fprofile-use" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS) -fprofile-use" CXXFLAGS="$(STAGE3_CFLAGS) -fprofile-use" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS) -fprofile-use" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -fprofile-use" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -fprofile-use" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stagefeedback-libdecnumber)
maybe-clean-stagefeedback-libdecnumber: clean-stagefeedback-libdecnumber
@@ -24017,7 +24324,7 @@ clean-stagefeedback-libdecnumber:
$(MAKE) stagefeedback-start; \
fi; \
cd $(HOST_SUBDIR)/libdecnumber && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif libdecnumber-bootstrap
@@ -24431,7 +24738,8 @@ all-libgui: configure-libgui
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/libgui && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-libgui))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-libgui))
@endif libgui
@@ -24848,9 +25156,9 @@ configure-stage1-libiberty:
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/libiberty/Makefile || exit 0; \
- $(HOST_EXPORTS) \
+ $(HOST_EXPORTS) \
CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE1_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 1 in $(HOST_SUBDIR)/libiberty ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty ; \
cd $(HOST_SUBDIR)/libiberty || exit 1; \
@@ -24879,9 +25187,9 @@ configure-stage2-libiberty:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/libiberty/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 2 in $(HOST_SUBDIR)/libiberty ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty ; \
cd $(HOST_SUBDIR)/libiberty || exit 1; \
@@ -24910,9 +25218,9 @@ configure-stageb2g0-libiberty:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/libiberty/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE2_CFLAGS) -g0"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS) -g0"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE2_CFLAGS) -g0"; export CXXFLAGS; \
echo Configuring stage b2g0 in $(HOST_SUBDIR)/libiberty ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty ; \
cd $(HOST_SUBDIR)/libiberty || exit 1; \
@@ -24941,9 +25249,9 @@ configure-stage3-libiberty:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/libiberty/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 3 in $(HOST_SUBDIR)/libiberty ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty ; \
cd $(HOST_SUBDIR)/libiberty || exit 1; \
@@ -24972,9 +25280,9 @@ configure-stageb3g2-libiberty:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/libiberty/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE3_CFLAGS) -g2"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS) -g2"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE3_CFLAGS) -g2"; export CXXFLAGS; \
echo Configuring stage b3g2 in $(HOST_SUBDIR)/libiberty ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty ; \
cd $(HOST_SUBDIR)/libiberty || exit 1; \
@@ -25003,9 +25311,9 @@ configure-stage4-libiberty:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/libiberty/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 4 in $(HOST_SUBDIR)/libiberty ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty ; \
cd $(HOST_SUBDIR)/libiberty || exit 1; \
@@ -25034,9 +25342,9 @@ configure-stageprofile-libiberty:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/libiberty/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export CXXFLAGS; \
echo Configuring stage profile in $(HOST_SUBDIR)/libiberty ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty ; \
cd $(HOST_SUBDIR)/libiberty || exit 1; \
@@ -25065,9 +25373,9 @@ configure-stagefeedback-libiberty:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/libiberty/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export CXXFLAGS; \
echo Configuring stage feedback in $(HOST_SUBDIR)/libiberty ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty ; \
cd $(HOST_SUBDIR)/libiberty || exit 1; \
@@ -25102,7 +25410,8 @@ all-libiberty: configure-libiberty
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/libiberty && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-libiberty))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-libiberty))
@endif libiberty
@@ -25121,8 +25430,11 @@ all-stage1-libiberty: configure-stage1-libiberty
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
cd $(HOST_SUBDIR)/libiberty && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE1_CFLAGS)" LIBCFLAGS="$(STAGE1_CFLAGS)" \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE1_CFLAGS)" CXXFLAGS="$(STAGE1_CFLAGS)" \
+ LIBCFLAGS="$(STAGE1_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE1_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE1_LIBCFLAGS)" $(EXTRA_HOST_FLAGS) \
$(TARGET-stage1-libiberty)
maybe-clean-stage1-libiberty: clean-stage1-libiberty
@@ -25135,7 +25447,7 @@ clean-stage1-libiberty:
$(MAKE) stage1-start; \
fi; \
cd $(HOST_SUBDIR)/libiberty && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
clean
@endif libiberty-bootstrap
@@ -25155,8 +25467,11 @@ all-stage2-libiberty: configure-stage2-libiberty
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/libiberty && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS)" LIBCFLAGS="$(STAGE2_CFLAGS)" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS)" CXXFLAGS="$(STAGE2_CFLAGS)" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS)" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stage2-libiberty)
maybe-clean-stage2-libiberty: clean-stage2-libiberty
@@ -25169,7 +25484,7 @@ clean-stage2-libiberty:
$(MAKE) stage2-start; \
fi; \
cd $(HOST_SUBDIR)/libiberty && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif libiberty-bootstrap
@@ -25190,8 +25505,11 @@ all-stageb2g0-libiberty: configure-stageb2g0-libiberty
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/libiberty && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS) -g0" LIBCFLAGS="$(STAGE2_CFLAGS) -g0" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS) -g0" CXXFLAGS="$(STAGE2_CFLAGS) -g0" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS) -g0" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -g0" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -g0" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stageb2g0-libiberty)
maybe-clean-stageb2g0-libiberty: clean-stageb2g0-libiberty
@@ -25204,7 +25522,7 @@ clean-stageb2g0-libiberty:
$(MAKE) stageb2g0-start; \
fi; \
cd $(HOST_SUBDIR)/libiberty && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif libiberty-bootstrap
@@ -25225,8 +25543,11 @@ all-stage3-libiberty: configure-stage3-libiberty
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/libiberty && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS)" LIBCFLAGS="$(STAGE3_CFLAGS)" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS)" CXXFLAGS="$(STAGE3_CFLAGS)" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS)" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stage3-libiberty)
maybe-clean-stage3-libiberty: clean-stage3-libiberty
@@ -25239,7 +25560,7 @@ clean-stage3-libiberty:
$(MAKE) stage3-start; \
fi; \
cd $(HOST_SUBDIR)/libiberty && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif libiberty-bootstrap
@@ -25260,8 +25581,11 @@ all-stageb3g2-libiberty: configure-stageb3g2-libiberty
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/libiberty && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS) -g2" LIBCFLAGS="$(STAGE3_CFLAGS) -g2" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS) -g2" CXXFLAGS="$(STAGE3_CFLAGS) -g2" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS) -g2" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -g2" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -g2" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stageb3g2-libiberty)
maybe-clean-stageb3g2-libiberty: clean-stageb3g2-libiberty
@@ -25274,7 +25598,7 @@ clean-stageb3g2-libiberty:
$(MAKE) stageb3g2-start; \
fi; \
cd $(HOST_SUBDIR)/libiberty && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif libiberty-bootstrap
@@ -25295,8 +25619,11 @@ all-stage4-libiberty: configure-stage4-libiberty
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/libiberty && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE4_CFLAGS)" LIBCFLAGS="$(STAGE4_CFLAGS)" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE4_CFLAGS)" CXXFLAGS="$(STAGE4_CFLAGS)" \
+ LIBCFLAGS="$(STAGE4_CFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE4_CFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE4_CFLAGS)" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stage4-libiberty)
maybe-clean-stage4-libiberty: clean-stage4-libiberty
@@ -25309,7 +25636,7 @@ clean-stage4-libiberty:
$(MAKE) stage4-start; \
fi; \
cd $(HOST_SUBDIR)/libiberty && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif libiberty-bootstrap
@@ -25330,8 +25657,11 @@ all-stageprofile-libiberty: configure-stageprofile-libiberty
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/libiberty && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" LIBCFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" CXXFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS) -fprofile-generate" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -fprofile-generate" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -fprofile-generate" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stageprofile-libiberty)
maybe-clean-stageprofile-libiberty: clean-stageprofile-libiberty
@@ -25344,7 +25674,7 @@ clean-stageprofile-libiberty:
$(MAKE) stageprofile-start; \
fi; \
cd $(HOST_SUBDIR)/libiberty && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif libiberty-bootstrap
@@ -25365,8 +25695,11 @@ all-stagefeedback-libiberty: configure-stagefeedback-libiberty
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/libiberty && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS) -fprofile-use" LIBCFLAGS="$(STAGE3_CFLAGS) -fprofile-use" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS) -fprofile-use" CXXFLAGS="$(STAGE3_CFLAGS) -fprofile-use" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS) -fprofile-use" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -fprofile-use" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -fprofile-use" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stagefeedback-libiberty)
maybe-clean-stagefeedback-libiberty: clean-stagefeedback-libiberty
@@ -25379,7 +25712,7 @@ clean-stagefeedback-libiberty:
$(MAKE) stagefeedback-start; \
fi; \
cd $(HOST_SUBDIR)/libiberty && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif libiberty-bootstrap
@@ -25793,7 +26126,8 @@ all-libtool: configure-libtool
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/libtool && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-libtool))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-libtool))
@endif libtool
@@ -26217,7 +26551,8 @@ all-m4: configure-m4
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/m4 && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-m4))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-m4))
@endif m4
@@ -26641,7 +26976,8 @@ all-make: configure-make
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/make && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-make))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-make))
@endif make
@@ -27065,7 +27401,8 @@ all-mmalloc: configure-mmalloc
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/mmalloc && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-mmalloc))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-mmalloc))
@endif mmalloc
@@ -27483,7 +27820,8 @@ all-patch: configure-patch
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/patch && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-patch))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-patch))
@endif patch
@@ -27907,7 +28245,8 @@ all-perl: configure-perl
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/perl && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-perl))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-perl))
@endif perl
@@ -28331,7 +28670,8 @@ all-prms: configure-prms
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/prms && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-prms))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-prms))
@endif prms
@@ -28755,7 +29095,8 @@ all-rcs: configure-rcs
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/rcs && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-rcs))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-rcs))
@endif rcs
@@ -29179,7 +29520,8 @@ all-readline: configure-readline
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/readline && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-readline))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-readline))
@endif readline
@@ -29603,7 +29945,8 @@ all-release: configure-release
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/release && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-release))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-release))
@endif release
@@ -30015,7 +30358,8 @@ all-recode: configure-recode
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/recode && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-recode))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-recode))
@endif recode
@@ -30439,7 +30783,8 @@ all-sed: configure-sed
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/sed && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-sed))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-sed))
@endif sed
@@ -30863,7 +31208,8 @@ all-send-pr: configure-send-pr
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/send-pr && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-send-pr))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-send-pr))
@endif send-pr
@@ -31287,7 +31633,8 @@ all-shellutils: configure-shellutils
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/shellutils && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-shellutils))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-shellutils))
@endif shellutils
@@ -31711,7 +32058,8 @@ all-sid: configure-sid
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/sid && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-sid))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-sid))
@endif sid
@@ -32135,7 +32483,8 @@ all-sim: configure-sim
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/sim && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-sim))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-sim))
@endif sim
@@ -32559,7 +32908,8 @@ all-tar: configure-tar
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/tar && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-tar))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-tar))
@endif tar
@@ -32983,7 +33333,8 @@ all-texinfo: configure-texinfo
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/texinfo && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-texinfo))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-texinfo))
@endif texinfo
@@ -33401,7 +33752,8 @@ all-textutils: configure-textutils
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/textutils && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-textutils))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-textutils))
@endif textutils
@@ -33825,7 +34177,8 @@ all-time: configure-time
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/time && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-time))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-time))
@endif time
@@ -34249,7 +34602,8 @@ all-uudecode: configure-uudecode
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/uudecode && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-uudecode))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-uudecode))
@endif uudecode
@@ -34673,7 +35027,8 @@ all-wdiff: configure-wdiff
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/wdiff && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-wdiff))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-wdiff))
@endif wdiff
@@ -35097,7 +35452,8 @@ all-zip: configure-zip
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/zip && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-zip))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-zip))
@endif zip
@@ -35517,9 +35873,9 @@ configure-stage1-zlib:
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/zlib/Makefile || exit 0; \
- $(HOST_EXPORTS) \
+ $(HOST_EXPORTS) \
CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE1_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 1 in $(HOST_SUBDIR)/zlib ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/zlib ; \
cd $(HOST_SUBDIR)/zlib || exit 1; \
@@ -35548,9 +35904,9 @@ configure-stage2-zlib:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/zlib/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 2 in $(HOST_SUBDIR)/zlib ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/zlib ; \
cd $(HOST_SUBDIR)/zlib || exit 1; \
@@ -35579,9 +35935,9 @@ configure-stageb2g0-zlib:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/zlib/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE2_CFLAGS) -g0"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS) -g0"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE2_CFLAGS) -g0"; export CXXFLAGS; \
echo Configuring stage b2g0 in $(HOST_SUBDIR)/zlib ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/zlib ; \
cd $(HOST_SUBDIR)/zlib || exit 1; \
@@ -35610,9 +35966,9 @@ configure-stage3-zlib:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/zlib/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 3 in $(HOST_SUBDIR)/zlib ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/zlib ; \
cd $(HOST_SUBDIR)/zlib || exit 1; \
@@ -35641,9 +35997,9 @@ configure-stageb3g2-zlib:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/zlib/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE3_CFLAGS) -g2"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS) -g2"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE3_CFLAGS) -g2"; export CXXFLAGS; \
echo Configuring stage b3g2 in $(HOST_SUBDIR)/zlib ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/zlib ; \
cd $(HOST_SUBDIR)/zlib || exit 1; \
@@ -35672,9 +36028,9 @@ configure-stage4-zlib:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/zlib/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \
echo Configuring stage 4 in $(HOST_SUBDIR)/zlib ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/zlib ; \
cd $(HOST_SUBDIR)/zlib || exit 1; \
@@ -35703,9 +36059,9 @@ configure-stageprofile-zlib:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/zlib/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export CXXFLAGS; \
echo Configuring stage profile in $(HOST_SUBDIR)/zlib ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/zlib ; \
cd $(HOST_SUBDIR)/zlib || exit 1; \
@@ -35734,9 +36090,9 @@ configure-stagefeedback-zlib:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
test ! -f $(HOST_SUBDIR)/zlib/Makefile || exit 0; \
$(HOST_EXPORTS) \
- $(POSTSTAGE1_HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
CFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export LIBCFLAGS; \
+ CXXFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export CXXFLAGS; \
echo Configuring stage feedback in $(HOST_SUBDIR)/zlib ; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/zlib ; \
cd $(HOST_SUBDIR)/zlib || exit 1; \
@@ -35771,7 +36127,8 @@ all-zlib: configure-zlib
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/zlib && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-zlib))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-zlib))
@endif zlib
@@ -35790,8 +36147,11 @@ all-stage1-zlib: configure-stage1-zlib
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
cd $(HOST_SUBDIR)/zlib && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE1_CFLAGS)" LIBCFLAGS="$(STAGE1_CFLAGS)" \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE1_CFLAGS)" CXXFLAGS="$(STAGE1_CFLAGS)" \
+ LIBCFLAGS="$(STAGE1_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE1_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE1_LIBCFLAGS)" $(EXTRA_HOST_FLAGS) \
$(TARGET-stage1-zlib)
maybe-clean-stage1-zlib: clean-stage1-zlib
@@ -35804,7 +36164,7 @@ clean-stage1-zlib:
$(MAKE) stage1-start; \
fi; \
cd $(HOST_SUBDIR)/zlib && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
clean
@endif zlib-bootstrap
@@ -35824,8 +36184,11 @@ all-stage2-zlib: configure-stage2-zlib
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/zlib && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS)" LIBCFLAGS="$(STAGE2_CFLAGS)" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS)" CXXFLAGS="$(STAGE2_CFLAGS)" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS)" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stage2-zlib)
maybe-clean-stage2-zlib: clean-stage2-zlib
@@ -35838,7 +36201,7 @@ clean-stage2-zlib:
$(MAKE) stage2-start; \
fi; \
cd $(HOST_SUBDIR)/zlib && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif zlib-bootstrap
@@ -35859,8 +36222,11 @@ all-stageb2g0-zlib: configure-stageb2g0-zlib
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/zlib && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS) -g0" LIBCFLAGS="$(STAGE2_CFLAGS) -g0" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS) -g0" CXXFLAGS="$(STAGE2_CFLAGS) -g0" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS) -g0" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -g0" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -g0" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stageb2g0-zlib)
maybe-clean-stageb2g0-zlib: clean-stageb2g0-zlib
@@ -35873,7 +36239,7 @@ clean-stageb2g0-zlib:
$(MAKE) stageb2g0-start; \
fi; \
cd $(HOST_SUBDIR)/zlib && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif zlib-bootstrap
@@ -35894,8 +36260,11 @@ all-stage3-zlib: configure-stage3-zlib
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/zlib && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS)" LIBCFLAGS="$(STAGE3_CFLAGS)" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS)" CXXFLAGS="$(STAGE3_CFLAGS)" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS)" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stage3-zlib)
maybe-clean-stage3-zlib: clean-stage3-zlib
@@ -35908,7 +36277,7 @@ clean-stage3-zlib:
$(MAKE) stage3-start; \
fi; \
cd $(HOST_SUBDIR)/zlib && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif zlib-bootstrap
@@ -35929,8 +36298,11 @@ all-stageb3g2-zlib: configure-stageb3g2-zlib
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/zlib && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS) -g2" LIBCFLAGS="$(STAGE3_CFLAGS) -g2" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS) -g2" CXXFLAGS="$(STAGE3_CFLAGS) -g2" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS) -g2" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -g2" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -g2" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stageb3g2-zlib)
maybe-clean-stageb3g2-zlib: clean-stageb3g2-zlib
@@ -35943,7 +36315,7 @@ clean-stageb3g2-zlib:
$(MAKE) stageb3g2-start; \
fi; \
cd $(HOST_SUBDIR)/zlib && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif zlib-bootstrap
@@ -35964,8 +36336,11 @@ all-stage4-zlib: configure-stage4-zlib
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/zlib && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE4_CFLAGS)" LIBCFLAGS="$(STAGE4_CFLAGS)" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE4_CFLAGS)" CXXFLAGS="$(STAGE4_CFLAGS)" \
+ LIBCFLAGS="$(STAGE4_CFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE4_CFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE4_CFLAGS)" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stage4-zlib)
maybe-clean-stage4-zlib: clean-stage4-zlib
@@ -35978,7 +36353,7 @@ clean-stage4-zlib:
$(MAKE) stage4-start; \
fi; \
cd $(HOST_SUBDIR)/zlib && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif zlib-bootstrap
@@ -35999,8 +36374,11 @@ all-stageprofile-zlib: configure-stageprofile-zlib
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/zlib && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" LIBCFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" CXXFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS) -fprofile-generate" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -fprofile-generate" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -fprofile-generate" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stageprofile-zlib)
maybe-clean-stageprofile-zlib: clean-stageprofile-zlib
@@ -36013,7 +36391,7 @@ clean-stageprofile-zlib:
$(MAKE) stageprofile-start; \
fi; \
cd $(HOST_SUBDIR)/zlib && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif zlib-bootstrap
@@ -36034,8 +36412,11 @@ all-stagefeedback-zlib: configure-stagefeedback-zlib
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
cd $(HOST_SUBDIR)/zlib && \
- $(MAKE) $(FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS) -fprofile-use" LIBCFLAGS="$(STAGE3_CFLAGS) -fprofile-use" $(POSTSTAGE1_FLAGS_TO_PASS) \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS) -fprofile-use" CXXFLAGS="$(STAGE3_CFLAGS) -fprofile-use" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS) -fprofile-use" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -fprofile-use" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -fprofile-use" $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
$(TARGET-stagefeedback-zlib)
maybe-clean-stagefeedback-zlib: clean-stagefeedback-zlib
@@ -36048,7 +36429,7 @@ clean-stagefeedback-zlib:
$(MAKE) stagefeedback-start; \
fi; \
cd $(HOST_SUBDIR)/zlib && \
- $(MAKE) $(FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
$(POSTSTAGE1_FLAGS_TO_PASS) \
clean
@endif zlib-bootstrap
@@ -36450,7 +36831,8 @@ all-gdb: configure-gdb
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/gdb && \
- $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) $(TARGET-gdb))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS) \
+ $(TARGET-gdb))
@endif gdb
@@ -36874,7 +37256,8 @@ all-expect: configure-expect
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/expect && \
- $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) $(TARGET-expect))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS) \
+ $(TARGET-expect))
@endif expect
@@ -37298,7 +37681,8 @@ all-guile: configure-guile
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/guile && \
- $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) $(TARGET-guile))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS) \
+ $(TARGET-guile))
@endif guile
@@ -37722,7 +38106,8 @@ all-tk: configure-tk
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/tk && \
- $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) $(TARGET-tk))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS) \
+ $(TARGET-tk))
@endif tk
@@ -38146,7 +38531,8 @@ all-libtermcap: configure-libtermcap
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/libtermcap && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-libtermcap))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-libtermcap))
@endif libtermcap
@@ -38504,7 +38890,8 @@ all-utils: configure-utils
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/utils && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-utils))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-utils))
@endif utils
@@ -38922,7 +39309,8 @@ all-gnattools: configure-gnattools
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd $(HOST_SUBDIR)/gnattools && \
- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-gnattools))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-gnattools))
@endif gnattools
@@ -39367,7 +39755,8 @@ all-target-libstdc++-v3: configure-target-libstdc++-v3
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(RAW_CXX_TARGET_EXPORTS) \
(cd $(TARGET_SUBDIR)/libstdc++-v3 && \
- $(MAKE) $(TARGET_FLAGS_TO_PASS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' $(TARGET-target-libstdc++-v3))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \
+ $(TARGET-target-libstdc++-v3))
@endif target-libstdc++-v3
@@ -39808,7 +40197,8 @@ all-target-libmudflap: configure-target-libmudflap
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(NORMAL_TARGET_EXPORTS) \
(cd $(TARGET_SUBDIR)/libmudflap && \
- $(MAKE) $(TARGET_FLAGS_TO_PASS) $(TARGET-target-libmudflap))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \
+ $(TARGET-target-libmudflap))
@endif target-libmudflap
@@ -40249,7 +40639,8 @@ all-target-libssp: configure-target-libssp
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(NORMAL_TARGET_EXPORTS) \
(cd $(TARGET_SUBDIR)/libssp && \
- $(MAKE) $(TARGET_FLAGS_TO_PASS) $(TARGET-target-libssp))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \
+ $(TARGET-target-libssp))
@endif target-libssp
@@ -40690,7 +41081,8 @@ all-target-newlib: configure-target-newlib
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(NORMAL_TARGET_EXPORTS) \
(cd $(TARGET_SUBDIR)/newlib && \
- $(MAKE) $(TARGET_FLAGS_TO_PASS) $(TARGET-target-newlib))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \
+ $(TARGET-target-newlib))
@endif target-newlib
@@ -41136,9 +41528,9 @@ configure-stage1-target-libgcc:
mv $(TARGET_SUBDIR)/libgcc/multilib.tmp $(TARGET_SUBDIR)/libgcc/multilib.out; \
fi; \
test ! -f $(TARGET_SUBDIR)/libgcc/Makefile || exit 0; \
- $(NORMAL_TARGET_EXPORTS) \
- CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE1_CFLAGS)"; export LIBCFLAGS; \
+ $(NORMAL_TARGET_EXPORTS) \
+ CFLAGS="$(STAGE1_LIBCFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CFLAGS; \
+ CXXFLAGS="$(STAGE1_LIBCFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CXXFLAGS; \
echo Configuring stage 1 in $(TARGET_SUBDIR)/libgcc ; \
$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgcc ; \
cd $(TARGET_SUBDIR)/libgcc || exit 1; \
@@ -41179,9 +41571,9 @@ configure-stage2-target-libgcc:
fi; \
test ! -f $(TARGET_SUBDIR)/libgcc/Makefile || exit 0; \
$(NORMAL_TARGET_EXPORTS) \
- \
- CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \
+ \
+ CFLAGS="$(STAGE2_LIBCFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CFLAGS; \
+ CXXFLAGS="$(STAGE2_LIBCFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CXXFLAGS; \
echo Configuring stage 2 in $(TARGET_SUBDIR)/libgcc ; \
$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgcc ; \
cd $(TARGET_SUBDIR)/libgcc || exit 1; \
@@ -41222,9 +41614,9 @@ configure-stageb2g0-target-libgcc:
fi; \
test ! -f $(TARGET_SUBDIR)/libgcc/Makefile || exit 0; \
$(NORMAL_TARGET_EXPORTS) \
- \
- CFLAGS="$(STAGE2_CFLAGS) -g0"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS) -g0"; export LIBCFLAGS; \
+ \
+ CFLAGS="$(STAGE2_LIBCFLAGS) -g0 $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CFLAGS; \
+ CXXFLAGS="$(STAGE2_LIBCFLAGS) -g0 $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CXXFLAGS; \
echo Configuring stage b2g0 in $(TARGET_SUBDIR)/libgcc ; \
$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgcc ; \
cd $(TARGET_SUBDIR)/libgcc || exit 1; \
@@ -41265,9 +41657,9 @@ configure-stage3-target-libgcc:
fi; \
test ! -f $(TARGET_SUBDIR)/libgcc/Makefile || exit 0; \
$(NORMAL_TARGET_EXPORTS) \
- \
- CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \
+ \
+ CFLAGS="$(STAGE3_LIBCFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CFLAGS; \
+ CXXFLAGS="$(STAGE3_LIBCFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CXXFLAGS; \
echo Configuring stage 3 in $(TARGET_SUBDIR)/libgcc ; \
$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgcc ; \
cd $(TARGET_SUBDIR)/libgcc || exit 1; \
@@ -41308,9 +41700,9 @@ configure-stageb3g2-target-libgcc:
fi; \
test ! -f $(TARGET_SUBDIR)/libgcc/Makefile || exit 0; \
$(NORMAL_TARGET_EXPORTS) \
- \
- CFLAGS="$(STAGE3_CFLAGS) -g2"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS) -g2"; export LIBCFLAGS; \
+ \
+ CFLAGS="$(STAGE3_LIBCFLAGS) -g2 $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CFLAGS; \
+ CXXFLAGS="$(STAGE3_LIBCFLAGS) -g2 $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CXXFLAGS; \
echo Configuring stage b3g2 in $(TARGET_SUBDIR)/libgcc ; \
$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgcc ; \
cd $(TARGET_SUBDIR)/libgcc || exit 1; \
@@ -41351,9 +41743,9 @@ configure-stage4-target-libgcc:
fi; \
test ! -f $(TARGET_SUBDIR)/libgcc/Makefile || exit 0; \
$(NORMAL_TARGET_EXPORTS) \
- \
- CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \
- LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \
+ \
+ CFLAGS="$(STAGE4_CFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CFLAGS; \
+ CXXFLAGS="$(STAGE4_CFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CXXFLAGS; \
echo Configuring stage 4 in $(TARGET_SUBDIR)/libgcc ; \
$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgcc ; \
cd $(TARGET_SUBDIR)/libgcc || exit 1; \
@@ -41394,9 +41786,9 @@ configure-stageprofile-target-libgcc:
fi; \
test ! -f $(TARGET_SUBDIR)/libgcc/Makefile || exit 0; \
$(NORMAL_TARGET_EXPORTS) \
- \
- CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export CFLAGS; \
- LIBCFLAGS="$(STAGE2_CFLAGS) -fprofile-generate"; export LIBCFLAGS; \
+ \
+ CFLAGS="$(STAGE2_LIBCFLAGS) -fprofile-generate $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CFLAGS; \
+ CXXFLAGS="$(STAGE2_LIBCFLAGS) -fprofile-generate $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CXXFLAGS; \
echo Configuring stage profile in $(TARGET_SUBDIR)/libgcc ; \
$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgcc ; \
cd $(TARGET_SUBDIR)/libgcc || exit 1; \
@@ -41437,9 +41829,9 @@ configure-stagefeedback-target-libgcc:
fi; \
test ! -f $(TARGET_SUBDIR)/libgcc/Makefile || exit 0; \
$(NORMAL_TARGET_EXPORTS) \
- \
- CFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export CFLAGS; \
- LIBCFLAGS="$(STAGE3_CFLAGS) -fprofile-use"; export LIBCFLAGS; \
+ \
+ CFLAGS="$(STAGE3_LIBCFLAGS) -fprofile-use $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CFLAGS; \
+ CXXFLAGS="$(STAGE3_LIBCFLAGS) -fprofile-use $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CXXFLAGS; \
echo Configuring stage feedback in $(TARGET_SUBDIR)/libgcc ; \
$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgcc ; \
cd $(TARGET_SUBDIR)/libgcc || exit 1; \
@@ -41474,7 +41866,8 @@ all-target-libgcc: configure-target-libgcc
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(NORMAL_TARGET_EXPORTS) \
(cd $(TARGET_SUBDIR)/libgcc && \
- $(MAKE) $(TARGET_FLAGS_TO_PASS) $(TARGET-target-libgcc))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \
+ $(TARGET-target-libgcc))
@endif target-libgcc
@@ -41493,8 +41886,11 @@ all-stage1-target-libgcc: configure-stage1-target-libgcc
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(NORMAL_TARGET_EXPORTS) \
cd $(TARGET_SUBDIR)/libgcc && \
- $(MAKE) $(TARGET_FLAGS_TO_PASS) \
- CFLAGS="$(STAGE1_CFLAGS)" LIBCFLAGS="$(STAGE1_CFLAGS)" \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE1_CFLAGS)" CXXFLAGS="$(STAGE1_CFLAGS)" \
+ LIBCFLAGS="$(STAGE1_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE1_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE1_LIBCFLAGS)" $(EXTRA_TARGET_FLAGS) \
$(TARGET-stage1-target-libgcc)
maybe-clean-stage1-target-libgcc: clean-stage1-target-libgcc
@@ -41507,7 +41903,7 @@ clean-stage1-target-libgcc:
$(MAKE) stage1-start; \
fi; \
cd $(TARGET_SUBDIR)/libgcc && \
- $(MAKE) $(TARGET_FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_TARGET_FLAGS) \
clean
@endif target-libgcc-bootstrap
@@ -41527,8 +41923,11 @@ all-stage2-target-libgcc: configure-stage2-target-libgcc
$(NORMAL_TARGET_EXPORTS) \
\
cd $(TARGET_SUBDIR)/libgcc && \
- $(MAKE) $(TARGET_FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS)" LIBCFLAGS="$(STAGE2_CFLAGS)" \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS)" CXXFLAGS="$(STAGE2_CFLAGS)" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS)" $(EXTRA_TARGET_FLAGS) \
$(TARGET-stage2-target-libgcc)
maybe-clean-stage2-target-libgcc: clean-stage2-target-libgcc
@@ -41541,7 +41940,7 @@ clean-stage2-target-libgcc:
$(MAKE) stage2-start; \
fi; \
cd $(TARGET_SUBDIR)/libgcc && \
- $(MAKE) $(TARGET_FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_TARGET_FLAGS) \
\
clean
@endif target-libgcc-bootstrap
@@ -41562,8 +41961,11 @@ all-stageb2g0-target-libgcc: configure-stageb2g0-target-libgcc
$(NORMAL_TARGET_EXPORTS) \
\
cd $(TARGET_SUBDIR)/libgcc && \
- $(MAKE) $(TARGET_FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS) -g0" LIBCFLAGS="$(STAGE2_CFLAGS) -g0" \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS) -g0" CXXFLAGS="$(STAGE2_CFLAGS) -g0" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS) -g0" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -g0" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -g0" $(EXTRA_TARGET_FLAGS) \
$(TARGET-stageb2g0-target-libgcc)
maybe-clean-stageb2g0-target-libgcc: clean-stageb2g0-target-libgcc
@@ -41576,7 +41978,7 @@ clean-stageb2g0-target-libgcc:
$(MAKE) stageb2g0-start; \
fi; \
cd $(TARGET_SUBDIR)/libgcc && \
- $(MAKE) $(TARGET_FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_TARGET_FLAGS) \
\
clean
@endif target-libgcc-bootstrap
@@ -41597,8 +41999,11 @@ all-stage3-target-libgcc: configure-stage3-target-libgcc
$(NORMAL_TARGET_EXPORTS) \
\
cd $(TARGET_SUBDIR)/libgcc && \
- $(MAKE) $(TARGET_FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS)" LIBCFLAGS="$(STAGE3_CFLAGS)" \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS)" CXXFLAGS="$(STAGE3_CFLAGS)" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS)" $(EXTRA_TARGET_FLAGS) \
$(TARGET-stage3-target-libgcc)
maybe-clean-stage3-target-libgcc: clean-stage3-target-libgcc
@@ -41611,7 +42016,7 @@ clean-stage3-target-libgcc:
$(MAKE) stage3-start; \
fi; \
cd $(TARGET_SUBDIR)/libgcc && \
- $(MAKE) $(TARGET_FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_TARGET_FLAGS) \
\
clean
@endif target-libgcc-bootstrap
@@ -41632,8 +42037,11 @@ all-stageb3g2-target-libgcc: configure-stageb3g2-target-libgcc
$(NORMAL_TARGET_EXPORTS) \
\
cd $(TARGET_SUBDIR)/libgcc && \
- $(MAKE) $(TARGET_FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS) -g2" LIBCFLAGS="$(STAGE3_CFLAGS) -g2" \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS) -g2" CXXFLAGS="$(STAGE3_CFLAGS) -g2" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS) -g2" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -g2" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -g2" $(EXTRA_TARGET_FLAGS) \
$(TARGET-stageb3g2-target-libgcc)
maybe-clean-stageb3g2-target-libgcc: clean-stageb3g2-target-libgcc
@@ -41646,7 +42054,7 @@ clean-stageb3g2-target-libgcc:
$(MAKE) stageb3g2-start; \
fi; \
cd $(TARGET_SUBDIR)/libgcc && \
- $(MAKE) $(TARGET_FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_TARGET_FLAGS) \
\
clean
@endif target-libgcc-bootstrap
@@ -41667,8 +42075,11 @@ all-stage4-target-libgcc: configure-stage4-target-libgcc
$(NORMAL_TARGET_EXPORTS) \
\
cd $(TARGET_SUBDIR)/libgcc && \
- $(MAKE) $(TARGET_FLAGS_TO_PASS) \
- CFLAGS="$(STAGE4_CFLAGS)" LIBCFLAGS="$(STAGE4_CFLAGS)" \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE4_CFLAGS)" CXXFLAGS="$(STAGE4_CFLAGS)" \
+ LIBCFLAGS="$(STAGE4_CFLAGS)" \
+ CFLAGS_FOR_TARGET="$(STAGE4_CFLAGS)" \
+ CXXFLAGS_FOR_TARGET="$(STAGE4_CFLAGS)" $(EXTRA_TARGET_FLAGS) \
$(TARGET-stage4-target-libgcc)
maybe-clean-stage4-target-libgcc: clean-stage4-target-libgcc
@@ -41681,7 +42092,7 @@ clean-stage4-target-libgcc:
$(MAKE) stage4-start; \
fi; \
cd $(TARGET_SUBDIR)/libgcc && \
- $(MAKE) $(TARGET_FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_TARGET_FLAGS) \
\
clean
@endif target-libgcc-bootstrap
@@ -41702,8 +42113,11 @@ all-stageprofile-target-libgcc: configure-stageprofile-target-libgcc
$(NORMAL_TARGET_EXPORTS) \
\
cd $(TARGET_SUBDIR)/libgcc && \
- $(MAKE) $(TARGET_FLAGS_TO_PASS) \
- CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" LIBCFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" CXXFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" \
+ LIBCFLAGS="$(STAGE2_LIBCFLAGS) -fprofile-generate" \
+ CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -fprofile-generate" \
+ CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -fprofile-generate" $(EXTRA_TARGET_FLAGS) \
$(TARGET-stageprofile-target-libgcc)
maybe-clean-stageprofile-target-libgcc: clean-stageprofile-target-libgcc
@@ -41716,7 +42130,7 @@ clean-stageprofile-target-libgcc:
$(MAKE) stageprofile-start; \
fi; \
cd $(TARGET_SUBDIR)/libgcc && \
- $(MAKE) $(TARGET_FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_TARGET_FLAGS) \
\
clean
@endif target-libgcc-bootstrap
@@ -41737,8 +42151,11 @@ all-stagefeedback-target-libgcc: configure-stagefeedback-target-libgcc
$(NORMAL_TARGET_EXPORTS) \
\
cd $(TARGET_SUBDIR)/libgcc && \
- $(MAKE) $(TARGET_FLAGS_TO_PASS) \
- CFLAGS="$(STAGE3_CFLAGS) -fprofile-use" LIBCFLAGS="$(STAGE3_CFLAGS) -fprofile-use" \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS) -fprofile-use" CXXFLAGS="$(STAGE3_CFLAGS) -fprofile-use" \
+ LIBCFLAGS="$(STAGE3_LIBCFLAGS) -fprofile-use" \
+ CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -fprofile-use" \
+ CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -fprofile-use" $(EXTRA_TARGET_FLAGS) \
$(TARGET-stagefeedback-target-libgcc)
maybe-clean-stagefeedback-target-libgcc: clean-stagefeedback-target-libgcc
@@ -41751,7 +42168,7 @@ clean-stagefeedback-target-libgcc:
$(MAKE) stagefeedback-start; \
fi; \
cd $(TARGET_SUBDIR)/libgcc && \
- $(MAKE) $(TARGET_FLAGS_TO_PASS) \
+ $(MAKE) $(EXTRA_TARGET_FLAGS) \
\
clean
@endif target-libgcc-bootstrap
@@ -42190,7 +42607,8 @@ all-target-libgfortran: configure-target-libgfortran
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(NORMAL_TARGET_EXPORTS) \
(cd $(TARGET_SUBDIR)/libgfortran && \
- $(MAKE) $(TARGET_FLAGS_TO_PASS) $(TARGET-target-libgfortran))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \
+ $(TARGET-target-libgfortran))
@endif target-libgfortran
@@ -42631,7 +43049,8 @@ all-target-libobjc: configure-target-libobjc
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(NORMAL_TARGET_EXPORTS) \
(cd $(TARGET_SUBDIR)/libobjc && \
- $(MAKE) $(TARGET_FLAGS_TO_PASS) $(TARGET-target-libobjc))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \
+ $(TARGET-target-libobjc))
@endif target-libobjc
@@ -43072,7 +43491,8 @@ all-target-libtermcap: configure-target-libtermcap
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(NORMAL_TARGET_EXPORTS) \
(cd $(TARGET_SUBDIR)/libtermcap && \
- $(MAKE) $(TARGET_FLAGS_TO_PASS) $(TARGET-target-libtermcap))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \
+ $(TARGET-target-libtermcap))
@endif target-libtermcap
@@ -43448,7 +43868,8 @@ all-target-winsup: configure-target-winsup
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(NORMAL_TARGET_EXPORTS) \
(cd $(TARGET_SUBDIR)/winsup && \
- $(MAKE) $(TARGET_FLAGS_TO_PASS) $(TARGET-target-winsup))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \
+ $(TARGET-target-winsup))
@endif target-winsup
@@ -43889,7 +44310,8 @@ all-target-libgloss: configure-target-libgloss
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(NORMAL_TARGET_EXPORTS) \
(cd $(TARGET_SUBDIR)/libgloss && \
- $(MAKE) $(TARGET_FLAGS_TO_PASS) $(TARGET-target-libgloss))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \
+ $(TARGET-target-libgloss))
@endif target-libgloss
@@ -44325,7 +44747,8 @@ all-target-libiberty: configure-target-libiberty
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(NORMAL_TARGET_EXPORTS) \
(cd $(TARGET_SUBDIR)/libiberty && \
- $(MAKE) $(TARGET_FLAGS_TO_PASS) $(TARGET-target-libiberty))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \
+ $(TARGET-target-libiberty))
@endif target-libiberty
@@ -44766,7 +45189,8 @@ all-target-gperf: configure-target-gperf
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(NORMAL_TARGET_EXPORTS) \
(cd $(TARGET_SUBDIR)/gperf && \
- $(MAKE) $(TARGET_FLAGS_TO_PASS) $(TARGET-target-gperf))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \
+ $(TARGET-target-gperf))
@endif target-gperf
@@ -45207,7 +45631,8 @@ all-target-examples: configure-target-examples
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(NORMAL_TARGET_EXPORTS) \
(cd $(TARGET_SUBDIR)/examples && \
- $(MAKE) $(TARGET_FLAGS_TO_PASS) $(TARGET-target-examples))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \
+ $(TARGET-target-examples))
@endif target-examples
@@ -45638,7 +46063,8 @@ all-target-libffi: configure-target-libffi
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(NORMAL_TARGET_EXPORTS) \
(cd $(TARGET_SUBDIR)/libffi && \
- $(MAKE) $(TARGET_FLAGS_TO_PASS) $(TARGET-target-libffi))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \
+ $(TARGET-target-libffi))
@endif target-libffi
@@ -46079,7 +46505,8 @@ all-target-libjava: configure-target-libjava
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(RAW_CXX_TARGET_EXPORTS) \
(cd $(TARGET_SUBDIR)/libjava && \
- $(MAKE) $(TARGET_FLAGS_TO_PASS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' $(TARGET-target-libjava))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \
+ $(TARGET-target-libjava))
@endif target-libjava
@@ -46520,7 +46947,8 @@ all-target-zlib: configure-target-zlib
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(NORMAL_TARGET_EXPORTS) \
(cd $(TARGET_SUBDIR)/zlib && \
- $(MAKE) $(TARGET_FLAGS_TO_PASS) $(TARGET-target-zlib))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \
+ $(TARGET-target-zlib))
@endif target-zlib
@@ -46961,7 +47389,8 @@ all-target-boehm-gc: configure-target-boehm-gc
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(NORMAL_TARGET_EXPORTS) \
(cd $(TARGET_SUBDIR)/boehm-gc && \
- $(MAKE) $(TARGET_FLAGS_TO_PASS) $(TARGET-target-boehm-gc))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \
+ $(TARGET-target-boehm-gc))
@endif target-boehm-gc
@@ -47402,7 +47831,8 @@ all-target-qthreads: configure-target-qthreads
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(NORMAL_TARGET_EXPORTS) \
(cd $(TARGET_SUBDIR)/qthreads && \
- $(MAKE) $(TARGET_FLAGS_TO_PASS) $(TARGET-target-qthreads))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \
+ $(TARGET-target-qthreads))
@endif target-qthreads
@@ -47843,7 +48273,8 @@ all-target-rda: configure-target-rda
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(NORMAL_TARGET_EXPORTS) \
(cd $(TARGET_SUBDIR)/rda && \
- $(MAKE) $(TARGET_FLAGS_TO_PASS) $(TARGET-target-rda))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \
+ $(TARGET-target-rda))
@endif target-rda
@@ -48284,7 +48715,8 @@ all-target-libada: configure-target-libada
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(NORMAL_TARGET_EXPORTS) \
(cd $(TARGET_SUBDIR)/libada && \
- $(MAKE) $(TARGET_FLAGS_TO_PASS) $(TARGET-target-libada))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \
+ $(TARGET-target-libada))
@endif target-libada
@@ -48725,7 +49157,8 @@ all-target-libgomp: configure-target-libgomp
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(NORMAL_TARGET_EXPORTS) \
(cd $(TARGET_SUBDIR)/libgomp && \
- $(MAKE) $(TARGET_FLAGS_TO_PASS) $(TARGET-target-libgomp))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \
+ $(TARGET-target-libgomp))
@endif target-libgomp
diff --git a/Makefile.tpl b/Makefile.tpl
index 12ad2a1ff07..6bc461bfdda 100644
--- a/Makefile.tpl
+++ b/Makefile.tpl
@@ -207,10 +207,10 @@ BASE_TARGET_EXPORTS = \
AR="$(AR_FOR_TARGET)"; export AR; \
AS="$(COMPILER_AS_FOR_TARGET)"; export AS; \
CC="$(CC_FOR_TARGET)"; export CC; \
- CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
+ CFLAGS="$(CFLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CFLAGS; \
CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CPPFLAGS="$(CPPFLAGS_FOR_TARGET)"; export CPPFLAGS; \
- CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
+ CXXFLAGS="$(CXXFLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CXXFLAGS; \
GCJ="$(GCJ_FOR_TARGET)"; export GCJ; \
GFORTRAN="$(GFORTRAN_FOR_TARGET)"; export GFORTRAN; \
DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \
@@ -330,14 +330,19 @@ PICFLAG =
# MAKEINFO and MAKEINFOFLAGS are explicitly passed here to make them
# overrideable (for a bootstrap build stage1 also builds gcc.info).
-STAGE1_CFLAGS=@stage1_cflags@
STAGE1_CHECKING=@stage1_checking@
STAGE1_LANGUAGES=@stage1_languages@
+STAGE1_CFLAGS=@stage1_cflags@
STAGE2_CFLAGS=$(BOOT_CFLAGS)
STAGE3_CFLAGS=$(BOOT_CFLAGS)
STAGE4_CFLAGS=$(BOOT_CFLAGS)
+STAGE1_LIBCFLAGS=$(CFLAGS_FOR_TARGET)
+STAGE2_LIBCFLAGS=$(CFLAGS_FOR_TARGET)
+STAGE3_LIBCFLAGS=$(CFLAGS_FOR_TARGET)
+STAGE4_LIBCFLAGS=$(CFLAGS_FOR_TARGET)
+
do-compare = @do_compare@
do-compare3 = $(do-compare)
do-compare-debug = $(SHELL) $(srcdir)/contrib/compare-debug $$f1 $$f2
@@ -376,18 +381,11 @@ COMPILER_AS_FOR_TARGET=@COMPILER_AS_FOR_TARGET@
COMPILER_LD_FOR_TARGET=@COMPILER_LD_FOR_TARGET@
COMPILER_NM_FOR_TARGET=@COMPILER_NM_FOR_TARGET@
-# During gcc bootstrap, if we use some random cc for stage1 then CFLAGS
-# might be empty or "-g". We don't require a C++ compiler, so CXXFLAGS
-# might also be empty (or "-g", if a non-GCC C++ compiler is in the path).
-# We want to ensure that TARGET libraries (which we know are built with
-# gcc) are built with "-O2 -g", so prepend those options when setting
-# CFLAGS_FOR_TARGET and CXXFLAGS_FOR_TARGET.
-CFLAGS_FOR_TARGET = -O2 -g $(CFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET) \
- $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)
+CFLAGS_FOR_TARGET = @CFLAGS_FOR_TARGET@
+CXXFLAGS_FOR_TARGET = @CXXFLAGS_FOR_TARGET@
SYSROOT_CFLAGS_FOR_TARGET = @SYSROOT_CFLAGS_FOR_TARGET@
DEBUG_PREFIX_CFLAGS_FOR_TARGET = @DEBUG_PREFIX_CFLAGS_FOR_TARGET@
-CXXFLAGS_FOR_TARGET = -O2 -g $(CXXFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET) \
- $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)
+
LIBCFLAGS_FOR_TARGET = $(CFLAGS_FOR_TARGET)
LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates
LDFLAGS_FOR_TARGET =
@@ -491,19 +489,20 @@ POSTSTAGE1_FLAGS_TO_PASS = \
# Flags to pass down to makes which are built with the target environment.
# The double $ decreases the length of the command line; those variables
# are set in BASE_FLAGS_TO_PASS, and the sub-make will expand them. The
-# COMPILER_ prefixed variables are not passed down so we expand them here.
+# *_CFLAGS_FOR_TARGET variables are not passed down and most often empty,
+# so we expand them here.
EXTRA_TARGET_FLAGS = \
'AR=$$(AR_FOR_TARGET)' \
'AS=$(COMPILER_AS_FOR_TARGET)' \
'CC=$$(CC_FOR_TARGET)' \
- 'CFLAGS=$$(CFLAGS_FOR_TARGET)' \
+ 'CFLAGS=$$(CFLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)' \
'CXX=$$(CXX_FOR_TARGET)' \
- 'CXXFLAGS=$$(CXXFLAGS_FOR_TARGET)' \
+ 'CXXFLAGS=$$(CXXFLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)' \
'DLLTOOL=$$(DLLTOOL_FOR_TARGET)' \
'LD=$(COMPILER_LD_FOR_TARGET)' \
'LDFLAGS=$$(LDFLAGS_FOR_TARGET)' \
- 'LIBCFLAGS=$$(LIBCFLAGS_FOR_TARGET)' \
- 'LIBCXXFLAGS=$$(LIBCXXFLAGS_FOR_TARGET)' \
+ 'LIBCFLAGS=$$(LIBCFLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)' \
+ 'LIBCXXFLAGS=$$(LIBCXXFLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)' \
'NM=$(COMPILER_NM_FOR_TARGET)' \
'OBJDUMP=$$(OBJDUMP_FOR_TARGET)' \
'RANLIB=$$(RANLIB_FOR_TARGET)' \
@@ -851,9 +850,11 @@ configure-stage[+id+]-[+prefix+][+module+]:
fi; \
[+ ENDIF check_multilibs +]test ! -f [+subdir+]/[+module+]/Makefile || exit 0; \
[+exports+][+ IF prev +] \
- [+poststage1_exports+][+ ENDIF prev +] \
+ [+poststage1_exports+][+ ENDIF prev +] [+ IF prefix +] \
+ CFLAGS="[+stage_libcflags+] $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CFLAGS; \
+ CXXFLAGS="[+stage_libcflags+] $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CXXFLAGS; [+ ELSE +] \
CFLAGS="[+stage_cflags+]"; export CFLAGS; \
- LIBCFLAGS="[+stage_cflags+]"; export LIBCFLAGS; \
+ CXXFLAGS="[+stage_cflags+]"; export CXXFLAGS; [+ ENDIF +] \
echo Configuring stage [+id+] in [+subdir+]/[+module+] ; \
$(SHELL) $(srcdir)/mkinstalldirs [+subdir+]/[+module+] ; \
cd [+subdir+]/[+module+] || exit 1; \
@@ -890,7 +891,8 @@ all-[+prefix+][+module+]: configure-[+prefix+][+module+][+ IF bootstrap +][+ ELS
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
[+exports+] \
(cd [+subdir+]/[+module+] && \
- $(MAKE) [+args+] [+extra_make_flags+] $(TARGET-[+prefix+][+module+]))
+ $(MAKE) $(BASE_FLAGS_TO_PASS) [+args+] [+extra_make_flags+] \
+ $(TARGET-[+prefix+][+module+]))
@endif [+prefix+][+module+]
[+ IF bootstrap +]
@@ -910,8 +912,11 @@ all-stage[+id+]-[+prefix+][+module+]: configure-stage[+id+]-[+prefix+][+module+]
[+exports+][+ IF prev +] \
[+poststage1_exports+][+ ENDIF prev +] \
cd [+subdir+]/[+module+] && \
- $(MAKE) [+args+] \
- CFLAGS="[+stage_cflags+]" LIBCFLAGS="[+stage_cflags+]" [+
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="[+stage_cflags+]" CXXFLAGS="[+stage_cflags+]" \
+ LIBCFLAGS="[+stage_libcflags+]" \
+ CFLAGS_FOR_TARGET="[+stage_libcflags+]" \
+ CXXFLAGS_FOR_TARGET="[+stage_libcflags+]" [+args+] [+
IF prev +][+poststage1_args+][+ ENDIF prev
+] [+extra_make_flags+] \
$(TARGET-stage[+id+]-[+prefix+][+module+])
@@ -961,7 +966,7 @@ clean-stage[+id+]-[+prefix+][+module+]:
[+ all prefix="" subdir="$(HOST_SUBDIR)"
exports="$(HOST_EXPORTS)"
poststage1_exports="$(POSTSTAGE1_HOST_EXPORTS)"
- args="$(FLAGS_TO_PASS)"
+ args="$(EXTRA_HOST_FLAGS)"
poststage1_args="$(POSTSTAGE1_FLAGS_TO_PASS)" +]
.PHONY: check-[+module+] maybe-check-[+module+]
@@ -1059,7 +1064,7 @@ maybe-[+make_target+]-[+module+]: [+make_target+]-[+module+]
[+ all prefix="target-" subdir="$(TARGET_SUBDIR)"
exports="$(RAW_CXX_TARGET_EXPORTS)"
- args="$(TARGET_FLAGS_TO_PASS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)'" +]
+ args="$(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)'" +]
[+ ELSE +]
[+ configure prefix="target-" subdir="$(TARGET_SUBDIR)"
check_multilibs=true
@@ -1070,7 +1075,7 @@ maybe-[+make_target+]-[+module+]: [+make_target+]-[+module+]
[+ all prefix="target-" subdir="$(TARGET_SUBDIR)"
exports="$(NORMAL_TARGET_EXPORTS)"
- args="$(TARGET_FLAGS_TO_PASS)" +]
+ args="$(EXTRA_TARGET_FLAGS)" +]
[+ ENDIF +]
.PHONY: check-target-[+module+] maybe-check-target-[+module+]
diff --git a/boehm-gc/ChangeLog b/boehm-gc/ChangeLog
index 79eb91abb1e..da28024df17 100644
--- a/boehm-gc/ChangeLog
+++ b/boehm-gc/ChangeLog
@@ -1,3 +1,10 @@
+2007-02-19 Andreas Tobler <a.tobler@schweiz.org>
+
+ * dyn_load.c (GC_dyld_image_add): Remove ifdef clause and use the macro
+ GC_GETSECTBYNAME instead.
+ * include/private/gc_priv.h: Define GC_GETSECTBYNAME according to the
+ architecture (Darwin).
+
2008-01-26 Richard Sandiford <rsandifo@nildram.co.uk>
* include/private/gcconfig.h (HBLKSIZE): Define for MIPS.
diff --git a/boehm-gc/dyn_load.c b/boehm-gc/dyn_load.c
index 27c1b07387a..f205be2823d 100644
--- a/boehm-gc/dyn_load.c
+++ b/boehm-gc/dyn_load.c
@@ -1168,12 +1168,9 @@ static void GC_dyld_image_add(const struct GC_MACH_HEADER *hdr, intptr_t slide)
const struct GC_MACH_SECTION *sec;
if (GC_no_dls) return;
for(i=0;i<sizeof(GC_dyld_sections)/sizeof(GC_dyld_sections[0]);i++) {
-# if defined (__LP64__)
- sec = getsectbynamefromheader_64(
-# else
- sec = getsectbynamefromheader(
-# endif
- hdr,GC_dyld_sections[i].seg,GC_dyld_sections[i].sect);
+
+ sec = GC_GETSECTBYNAME (hdr, GC_dyld_sections[i].seg,
+ GC_dyld_sections[i].sect);
if(sec == NULL || sec->size == 0) continue;
start = slide + sec->addr;
end = start + sec->size;
@@ -1194,12 +1191,8 @@ static void GC_dyld_image_remove(const struct GC_MACH_HEADER *hdr,
unsigned long start,end,i;
const struct GC_MACH_SECTION *sec;
for(i=0;i<sizeof(GC_dyld_sections)/sizeof(GC_dyld_sections[0]);i++) {
-# if defined (__LP64__)
- sec = getsectbynamefromheader_64(
-# else
- sec = getsectbynamefromheader(
-# endif
- hdr,GC_dyld_sections[i].seg,GC_dyld_sections[i].sect);
+ sec = GC_GETSECTBYNAME (hdr, GC_dyld_sections[i].seg,
+ GC_dyld_sections[i].sect);
if(sec == NULL || sec->size == 0) continue;
start = slide + sec->addr;
end = start + sec->size;
diff --git a/boehm-gc/include/private/gc_priv.h b/boehm-gc/include/private/gc_priv.h
index 41c75d3bb62..fdebe3688a5 100644
--- a/boehm-gc/include/private/gc_priv.h
+++ b/boehm-gc/include/private/gc_priv.h
@@ -472,16 +472,18 @@ extern GC_warn_proc GC_current_warn_proc;
# if defined(POWERPC)
# if CPP_WORDSZ == 32
# define GC_THREAD_STATE_T ppc_thread_state_t
-# define GC_MACH_THREAD_STATE PPC_THREAD_STATE
-# define GC_MACH_THREAD_STATE_COUNT PPC_THREAD_STATE_COUNT
+# define GC_MACH_THREAD_STATE PPC_THREAD_STATE
+# define GC_MACH_THREAD_STATE_COUNT PPC_THREAD_STATE_COUNT
# define GC_MACH_HEADER mach_header
# define GC_MACH_SECTION section
+# define GC_GETSECTBYNAME getsectbynamefromheader
# else
# define GC_THREAD_STATE_T ppc_thread_state64_t
-# define GC_MACH_THREAD_STATE PPC_THREAD_STATE64
-# define GC_MACH_THREAD_STATE_COUNT PPC_THREAD_STATE64_COUNT
+# define GC_MACH_THREAD_STATE PPC_THREAD_STATE64
+# define GC_MACH_THREAD_STATE_COUNT PPC_THREAD_STATE64_COUNT
# define GC_MACH_HEADER mach_header_64
# define GC_MACH_SECTION section_64
+# define GC_GETSECTBYNAME getsectbynamefromheader_64
# endif
# elif defined(I386) || defined(X86_64)
# if CPP_WORDSZ == 32
@@ -490,12 +492,14 @@ extern GC_warn_proc GC_current_warn_proc;
# define GC_MACH_THREAD_STATE_COUNT x86_THREAD_STATE32_COUNT
# define GC_MACH_HEADER mach_header
# define GC_MACH_SECTION section
+# define GC_GETSECTBYNAME getsectbynamefromheader
# else
# define GC_THREAD_STATE_T x86_thread_state64_t
# define GC_MACH_THREAD_STATE x86_THREAD_STATE64
# define GC_MACH_THREAD_STATE_COUNT x86_THREAD_STATE64_COUNT
# define GC_MACH_HEADER mach_header_64
# define GC_MACH_SECTION section_64
+# define GC_GETSECTBYNAME getsectbynamefromheader_64
# endif
# else
# error define GC_THREAD_STATE_T
diff --git a/config/ChangeLog b/config/ChangeLog
index 8343f066a86..4ef6a036229 100644
--- a/config/ChangeLog
+++ b/config/ChangeLog
@@ -1,3 +1,12 @@
+2008-02-20 Uros Bizjak <ubizjak@gmail.com>
+
+ * mh-ppc-darwin (BOOT_CFLAGS): Use +=, not =.
+
+2008-02-20 Paolo Bonzini <bonzini@gnu.org>
+
+ PR bootstrap/32009
+ * mh-ppc-darwin (BOOT_CFLAGS): Reenable.
+
2008-01-08 Jakub Jelinek <jakub@redhat.com>
* futex.m4: New file.
diff --git a/config/mh-ppc-darwin b/config/mh-ppc-darwin
index 8e64791f6ee..66f68b664a9 100644
--- a/config/mh-ppc-darwin
+++ b/config/mh-ppc-darwin
@@ -2,5 +2,4 @@
# position-independent-code -- the usual default on Darwin. This fix speeds
# compiles by 3-5%.
-# Broken because of PR32009.
-# BOOT_CFLAGS=-g -O2 -mdynamic-no-pic
+BOOT_CFLAGS += -mdynamic-no-pic
diff --git a/configure b/configure
index ef340a44e2e..a925911a872 100755
--- a/configure
+++ b/configure
@@ -657,6 +657,8 @@ gmpinc
stage1_languages
SYSROOT_CFLAGS_FOR_TARGET
DEBUG_PREFIX_CFLAGS_FOR_TARGET
+CFLAGS_FOR_TARGET
+CXXFLAGS_FOR_TARGET
RPATH_ENVVAR
tooldir
build_tooldir
@@ -5629,6 +5631,38 @@ fi
+# During gcc bootstrap, if we use some random cc for stage1 then CFLAGS
+# might be empty or "-g". We don't require a C++ compiler, so CXXFLAGS
+# might also be empty (or "-g", if a non-GCC C++ compiler is in the path).
+# We want to ensure that TARGET libraries (which we know are built with
+# gcc) are built with "-O2 -g", so include those options when setting
+# CFLAGS_FOR_TARGET and CXXFLAGS_FOR_TARGET.
+if test "x$CFLAGS_FOR_TARGET" = x; then
+ CFLAGS_FOR_TARGET=$CFLAGS
+ case " $CFLAGS " in
+ *" -O2 "*) ;;
+ *) CFLAGS_FOR_TARGET="-O2 $CFLAGS" ;;
+ esac
+ case " $CFLAGS " in
+ *" -g "* | *" -g3 "*) ;;
+ *) CFLAGS_FOR_TARGET="-g $CFLAGS" ;;
+ esac
+fi
+
+
+if test "x$CXXFLAGS_FOR_TARGET" = x; then
+ CXXFLAGS_FOR_TARGET=$CXXFLAGS
+ case " $CXXFLAGS " in
+ *" -O2 "*) ;;
+ *) CXXFLAGS_FOR_TARGET="-O2 $CXXFLAGS" ;;
+ esac
+ case " $CXXFLAGS " in
+ *" -g "* | *" -g3 "*) ;;
+ *) CXXFLAGS_FOR_TARGET="-g $CXXFLAGS" ;;
+ esac
+fi
+
+
# Handle --with-headers=XXX. If the value is not "yes", the contents of
# the named directory are copied to $(tooldir)/sys-include.
if test x"${with_headers}" != x && test x"${with_headers}" != xno ; then
@@ -13533,8 +13567,8 @@ gmpinc!$gmpinc$ac_delim
stage1_languages!$stage1_languages$ac_delim
SYSROOT_CFLAGS_FOR_TARGET!$SYSROOT_CFLAGS_FOR_TARGET$ac_delim
DEBUG_PREFIX_CFLAGS_FOR_TARGET!$DEBUG_PREFIX_CFLAGS_FOR_TARGET$ac_delim
-RPATH_ENVVAR!$RPATH_ENVVAR$ac_delim
-tooldir!$tooldir$ac_delim
+CFLAGS_FOR_TARGET!$CFLAGS_FOR_TARGET$ac_delim
+CXXFLAGS_FOR_TARGET!$CXXFLAGS_FOR_TARGET$ac_delim
_ACEOF
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 82; then
@@ -13596,6 +13630,8 @@ _ACEOF
ac_delim='%!_!# '
for ac_last_try in false false false false false :; do
cat >conf$$subs.sed <<_ACEOF
+RPATH_ENVVAR!$RPATH_ENVVAR$ac_delim
+tooldir!$tooldir$ac_delim
build_tooldir!$build_tooldir$ac_delim
CONFIGURE_GDB_TK!$CONFIGURE_GDB_TK$ac_delim
GDB_TK!$GDB_TK$ac_delim
@@ -13672,7 +13708,7 @@ LIBOBJS!$LIBOBJS$ac_delim
LTLIBOBJS!$LTLIBOBJS$ac_delim
_ACEOF
- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 74; then
+ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 76; then
break
elif $ac_last_try; then
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
diff --git a/configure.ac b/configure.ac
index 315fa3bd801..e81fcdbfe9a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1667,6 +1667,38 @@ AC_ARG_WITH([debug-prefix-map],
[DEBUG_PREFIX_CFLAGS_FOR_TARGET=])
AC_SUBST(DEBUG_PREFIX_CFLAGS_FOR_TARGET)
+# During gcc bootstrap, if we use some random cc for stage1 then CFLAGS
+# might be empty or "-g". We don't require a C++ compiler, so CXXFLAGS
+# might also be empty (or "-g", if a non-GCC C++ compiler is in the path).
+# We want to ensure that TARGET libraries (which we know are built with
+# gcc) are built with "-O2 -g", so include those options when setting
+# CFLAGS_FOR_TARGET and CXXFLAGS_FOR_TARGET.
+if test "x$CFLAGS_FOR_TARGET" = x; then
+ CFLAGS_FOR_TARGET=$CFLAGS
+ case " $CFLAGS " in
+ *" -O2 "*) ;;
+ *) CFLAGS_FOR_TARGET="-O2 $CFLAGS" ;;
+ esac
+ case " $CFLAGS " in
+ *" -g "* | *" -g3 "*) ;;
+ *) CFLAGS_FOR_TARGET="-g $CFLAGS" ;;
+ esac
+fi
+AC_SUBST(CFLAGS_FOR_TARGET)
+
+if test "x$CXXFLAGS_FOR_TARGET" = x; then
+ CXXFLAGS_FOR_TARGET=$CXXFLAGS
+ case " $CXXFLAGS " in
+ *" -O2 "*) ;;
+ *) CXXFLAGS_FOR_TARGET="-O2 $CXXFLAGS" ;;
+ esac
+ case " $CXXFLAGS " in
+ *" -g "* | *" -g3 "*) ;;
+ *) CXXFLAGS_FOR_TARGET="-g $CXXFLAGS" ;;
+ esac
+fi
+AC_SUBST(CXXFLAGS_FOR_TARGET)
+
# Handle --with-headers=XXX. If the value is not "yes", the contents of
# the named directory are copied to $(tooldir)/sys-include.
if test x"${with_headers}" != x && test x"${with_headers}" != xno ; then
diff --git a/fixincludes/ChangeLog b/fixincludes/ChangeLog
index 7a8c78a99cd..c45d8a83d64 100644
--- a/fixincludes/ChangeLog
+++ b/fixincludes/ChangeLog
@@ -1,3 +1,15 @@
+2008-02-25 Ben Elliston <bje@au.ibm.com>
+
+ PR other/32948
+ * fixincl.c (fix_applies): Remove unused variable `name_len'.
+
+2008-02-19 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * inclhack.def (solaris_math_10): New.
+ * tests/base/iso/math_c99.h: Update.
+
+ * fixincl.x: Regenerate.
+
2008-02-04 Ismail Dönmez <ismail@pardus.org.tr>
* inclhack.def: (bsd_stdio_attrs_conflict, freebsd_gcc3_breakage,
diff --git a/fixincludes/fixincl.c b/fixincludes/fixincl.c
index ccb2badc54f..a6a8abef027 100644
--- a/fixincludes/fixincl.c
+++ b/fixincludes/fixincl.c
@@ -1046,11 +1046,8 @@ fix_applies (tFixDesc* p_fixd)
if (pz_scan != (char *) NULL)
{
- size_t name_len;
-
while ((pz_fname[0] == '.') && (pz_fname[1] == '/'))
pz_fname += 2;
- name_len = strlen (pz_fname);
for (;;)
{
diff --git a/fixincludes/fixincl.x b/fixincludes/fixincl.x
index f6602004e62..12260e8c4b8 100644
--- a/fixincludes/fixincl.x
+++ b/fixincludes/fixincl.x
@@ -2,11 +2,11 @@
*
* DO NOT EDIT THIS FILE (fixincl.x)
*
- * It has been AutoGen-ed Monday February 4, 2008 at 09:22:58 PM GMTST
+ * It has been AutoGen-ed Tuesday February 26, 2008 at 01:54:59 PM MET
* From the definitions inclhack.def
* and the template file fixincl
*/
-/* DO NOT SVN-MERGE THIS FILE, EITHER Mon Feb 4 21:22:58 GMTST 2008
+/* DO NOT SVN-MERGE THIS FILE, EITHER Tue Feb 26 13:54:59 MET 2008
*
* You must regenerate it. Use the ./genfixes script.
*
@@ -15,7 +15,7 @@
* certain ANSI-incompatible system header files which are fixed to work
* correctly with ANSI C and placed in a directory that GNU C will search.
*
- * This file contains 211 fixup descriptions.
+ * This file contains 212 fixup descriptions.
*
* See README for more information.
*
@@ -5886,6 +5886,45 @@ static const char* apzSolaris_Math_9Patch[] = {
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
+ * Description of Solaris_Math_10 fix
+ */
+tSCC zSolaris_Math_10Name[] =
+ "solaris_math_10";
+
+/*
+ * File name selection pattern
+ */
+tSCC zSolaris_Math_10List[] =
+ "iso/math_c99.h\0";
+/*
+ * Machine/OS name selection pattern
+ */
+#define apzSolaris_Math_10Machs (const char**)NULL
+
+/*
+ * content selection pattern - do fix if pattern found
+ */
+tSCC zSolaris_Math_10Select0[] =
+ "@\\(#\\)math_c99.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+
+#define SOLARIS_MATH_10_TEST_CT 1
+static tTestDesc aSolaris_Math_10Tests[] = {
+ { TT_EGREP, zSolaris_Math_10Select0, (regex_t*)NULL }, };
+
+/*
+ * Fix Command Arguments for Solaris_Math_10
+ */
+static const char* apzSolaris_Math_10Patch[] = {
+ "format",
+ "#define\tisinf(x) __builtin_isinf(x)",
+ "^#define[ \t]+isinf\\(x\\)[ \t]+__extension__\\([ \t]*\\\\\n\
+[ \t]*\\{[ \t]*__typeof\\(x\\)[ \t]*__x_i[ \t]*=[ \t]*\\(x\\);[ \t]*\\\\\n\
+[ \t]*__x_i[ \t]*==[ \t]*\\(__typeof\\(__x_i\\)\\)[ \t]*INFINITY[ \t]*\\|\\|[ \t]*\\\\\n\
+[ \t]*__x_i[ \t]*==[ \t]*\\(__typeof\\(__x_i\\)\\)[ \t]*\\(-INFINITY\\);[ \t]*\\}\\)",
+ (char*)NULL };
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
* Description of Solaris_Mutex_Init_1 fix
*/
tSCC zSolaris_Mutex_Init_1Name[] =
@@ -8567,9 +8606,9 @@ static const char* apzX11_SprintfPatch[] = {
*
* List of all fixes
*/
-#define REGEX_COUNT 254
+#define REGEX_COUNT 255
#define MACH_LIST_SIZE_LIMIT 261
-#define FIX_COUNT 211
+#define FIX_COUNT 212
/*
* Enumerate the fixes
@@ -8718,6 +8757,7 @@ typedef enum {
SOLARIS_MATH_4_FIXIDX,
SOLARIS_MATH_8_FIXIDX,
SOLARIS_MATH_9_FIXIDX,
+ SOLARIS_MATH_10_FIXIDX,
SOLARIS_MUTEX_INIT_1_FIXIDX,
SOLARIS_MUTEX_INIT_2_FIXIDX,
SOLARIS_RWLOCK_INIT_1_FIXIDX,
@@ -9504,6 +9544,11 @@ tFixDesc fixDescList[ FIX_COUNT ] = {
SOLARIS_MATH_9_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
aSolaris_Math_9Tests, apzSolaris_Math_9Patch, 0 },
+ { zSolaris_Math_10Name, zSolaris_Math_10List,
+ apzSolaris_Math_10Machs,
+ SOLARIS_MATH_10_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+ aSolaris_Math_10Tests, apzSolaris_Math_10Patch, 0 },
+
{ zSolaris_Mutex_Init_1Name, zSolaris_Mutex_Init_1List,
apzSolaris_Mutex_Init_1Machs,
SOLARIS_MUTEX_INIT_1_TEST_CT, FD_MACH_ONLY,
diff --git a/fixincludes/inclhack.def b/fixincludes/inclhack.def
index fd8a694a9f7..e7447d497ae 100644
--- a/fixincludes/inclhack.def
+++ b/fixincludes/inclhack.def
@@ -3223,6 +3223,30 @@ fix = {
};
/*
+ * On Solaris 11, if you do isinf(NaN) you'll get a floating point
+ * exception. Provide an alternative using GCC's builtin.
+ */
+
+fix = {
+ hackname = solaris_math_10;
+ select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+ files = iso/math_c99.h;
+ c_fix = format;
+ c_fix_arg = "#define\tisinf(x) __builtin_isinf(x)";
+ c_fix_arg = "^#define[ \t]+isinf\\(x\\)[ \t]+__extension__\\([ \t]*\\\\\n"
+ "[ \t]*\\{[ \t]*__typeof\\(x\\)[ \t]*__x_i[ \t]*=[ \t]*\\(x\\);[ \t]*\\\\\n"
+ "[ \t]*__x_i[ \t]*==[ \t]*\\(__typeof\\(__x_i\\)\\)[ \t]*INFINITY[ \t]*\\|\\|[ \t]*\\\\\n"
+ "[ \t]*__x_i[ \t]*==[ \t]*\\(__typeof\\(__x_i\\)\\)[ \t]*\\(-INFINITY\\);[ \t]*\\}\\)";
+ test_text =
+ '#pragma ident "@(#)math_c99.h 1.12 07/01/21 SMI"'"\n"
+ "#undef isinf\n"
+ "#define isinf(x) __extension__( \\\\\n"
+ " { __typeof(x) __x_i = (x); \\\\\n"
+ " __x_i == (__typeof(__x_i)) INFINITY || \\\\\n"
+ " __x_i == (__typeof(__x_i)) (-INFINITY); })";
+};
+
+/*
* Sun Solaris 2.5.1, 2.6 defines PTHREAD_{MUTEX|COND}_INITIALIZER
* incorrectly, so we replace them with versions that correspond to
* the definition. We also explicitly name this fix "1" and the next
diff --git a/fixincludes/tests/base/iso/math_c99.h b/fixincludes/tests/base/iso/math_c99.h
index e87ca874276..e3b27994422 100644
--- a/fixincludes/tests/base/iso/math_c99.h
+++ b/fixincludes/tests/base/iso/math_c99.h
@@ -77,3 +77,10 @@
#undef isunordered
#define isunordered(x, y) __builtin_isunordered(x, y)
#endif /* SOLARIS_MATH_9_CHECK */
+
+
+#if defined( SOLARIS_MATH_10_CHECK )
+#pragma ident "@(#)math_c99.h 1.12 07/01/21 SMI"
+#undef isinf
+#define isinf(x) __builtin_isinf(x)
+#endif /* SOLARIS_MATH_10_CHECK */
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 35cdc2d8786..e08b5efe909 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,556 @@
+2008-02-26 Basile Starynkevitch <basile@starynkevitch.net>
+ MELT branch merged with trunk r132671
+ Merged revisions 132452-132671 via svnmerge from
+ svn+ssh://bstarynk@gcc.gnu.org/svn/gcc/trunk
+ * toplev.c (toplev_main): comprobe_finish() called before the print_ignored_options()
+
+2008-02-26 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
+
+ * c-common.c (match_case_to_enum_1): Add appropriate
+ OPT_W* parameter to warning.
+ (c_do_switch_warnings): Likewise.
+ * c-typeck.c (warning_init): Add one more parameter following
+ 'warning' function.
+ (push_init_level): Update call to warning_init.
+ (pop_init_level): Likewise.
+ (add_pending_init): Likewise.
+ (output_init_element: Likewise.
+
+2008-02-26 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
+
+ PR 28322
+ * toplev.c (toplev_main): If there are warnings or error, print
+ errors for ignored options.
+ * opts.c (ignored_options): New static variable.
+ (postpone_unknown_option_error): New.
+ (print_ignored_options): New.
+ (handle_option): Postpone errors for unknown -Wno-* options.
+ * opts.h (print_ignored_options): Declare.
+
+2008-02-25 Richard Sandiford <rsandifo@nildram.co.uk>
+
+ * config/mips/mips.md (loadgp_blockage, blockage): Change type
+ to "ghost".
+
+2008-02-25 Richard Guenther <rguenther@suse.de>
+
+ Revert:
+ 2008-02-25 Richard Guenther <rguenther@suse.de>
+
+ * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
+ * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
+ (lookup_decl_from_uid): Declare.
+ * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
+ * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
+ (decl_for_uid_map): New global hashtable mapping DECL_UID
+ to the decl tree.
+ (init_ttree): Allocate it.
+ (insert_decl_to_uid_decl_map): New helper function.
+ (make_node_stat): Insert new decls into the map.
+ (copy_node_stat): Likewise.
+ (lookup_decl_from_uid): New function.
+ (print_decl_for_uid_map_statistics): New helper.
+ (dump_tree_statistics): Call it.
+
+ * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
+ (referenced_var_iterator): Adjust.
+ (FOR_EACH_REFERENCED_VAR): Adjust.
+ (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
+ (num_referenced_vars): Adjust.
+ * tree-flow-inline.h (gimple_referenced_vars): Adjust.
+ (first_referenced_var): Remove.
+ (end_referenced_vars_p): Likewise.
+ (next_referenced_var): Likewise.
+ (referenced_var_iterator_set): New helper function.
+ * tree-dfa.c (referenced_var_lookup): Adjust.
+ (referenced_var_check_and_insert): Likewise.
+ (remove_referenced_var): Likewise.
+ * tree-ssa.c (verify_flow_insensitive_alias_info): Use
+ FOR_EACH_REFERENCED_VAR_IN_BITMAP.
+ (verify_call_clobbering): Likewise.
+ (verify_memory_partitions): Likewise.
+ (init_tree_ssa): Allocate bitmap instead of hashtable for
+ referenced_vars.
+ (delete_tree_ssa): Adjust.
+ * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
+ FOR_EACH_REFERENCED_VAR_IN_BITMAP.
+ (compute_tag_properties): Likewise.
+ (set_initial_properties): Likewise.
+ (find_partition_for): Likewise.
+ (update_reference_counts): Likewise.
+ (dump_may_aliases_for): Likewise.
+ * tree-ssa-operands.c (add_virtual_operand): Likewise.
+ (add_call_clobber_ops): Likewise.
+ (add_call_read_ops): Likewise.
+ (get_asm_expr_operands): Likewise.
+ * tree-into-ssa.c (dump_decl_set): Likewise.
+ (update_ssa): Likewise.
+ * tree-sra.c (scan_function): Likewise.
+ (decide_instantiations): Likewise.
+ (scalarize_parms): Likewise.
+ * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
+ (dsa_named_for): Likewise.
+ * tree-ssa-structalias.c (update_alias_info): Likewise.
+ (merge_smts_into): Likewise.
+
+2008-02-25 Janne Blomqvist <jb@gcc.gnu.org>
+
+ PR fortran/29549
+ * doc/invoke.texi (-fcx-limited-range): Document new option.
+ * toplev.c (process_options): Handle -fcx-fortran-rules.
+ * common.opt: Add documentation for -fcx-fortran-rules.
+
+2008-02-25 Janne Blomqvist <jb@gcc.gnu.org>
+
+ PR c/35162
+ * doc/invoke.texi (-fcx-limited-range): Correct to be in line with
+ actual behaviour and C99.
+
+2008-02-26 Ben Elliston <bje@au.ibm.com>
+
+ * config/rs6000/rs6000.h (ASM_CPU_POWER5_SPEC): Define.
+ (ASM_CPU_POWER6_SPEC): Likewise.
+ (ASM_CPU_SPEC): Pass %(asm_cpu_power5) for -mcpu=power5.
+ Likewise, pass %(asm_cpu_power6) for -mcpu=power6.
+ (EXTRA_SPECS): Add asm_cpu_power5, asm_cpu_power6 spec strings.
+
+2008-02-25 Richard Guenther <rguenther@suse.de>
+
+ * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
+ * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
+ (lookup_decl_from_uid): Declare.
+ * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
+ * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
+ (decl_for_uid_map): New global hashtable mapping DECL_UID
+ to the decl tree.
+ (init_ttree): Allocate it.
+ (insert_decl_to_uid_decl_map): New helper function.
+ (make_node_stat): Insert new decls into the map.
+ (copy_node_stat): Likewise.
+ (lookup_decl_from_uid): New function.
+ (print_decl_for_uid_map_statistics): New helper.
+ (dump_tree_statistics): Call it.
+
+ * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
+ (referenced_var_iterator): Adjust.
+ (FOR_EACH_REFERENCED_VAR): Adjust.
+ (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
+ (num_referenced_vars): Adjust.
+ * tree-flow-inline.h (gimple_referenced_vars): Adjust.
+ (first_referenced_var): Remove.
+ (end_referenced_vars_p): Likewise.
+ (next_referenced_var): Likewise.
+ (referenced_var_iterator_set): New helper function.
+ * tree-dfa.c (referenced_var_lookup): Adjust.
+ (referenced_var_check_and_insert): Likewise.
+ (remove_referenced_var): Likewise.
+ * tree-ssa.c (verify_flow_insensitive_alias_info): Use
+ FOR_EACH_REFERENCED_VAR_IN_BITMAP.
+ (verify_call_clobbering): Likewise.
+ (verify_memory_partitions): Likewise.
+ (init_tree_ssa): Allocate bitmap instead of hashtable for
+ referenced_vars.
+ (delete_tree_ssa): Adjust.
+ * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
+ FOR_EACH_REFERENCED_VAR_IN_BITMAP.
+ (compute_tag_properties): Likewise.
+ (set_initial_properties): Likewise.
+ (find_partition_for): Likewise.
+ (update_reference_counts): Likewise.
+ (dump_may_aliases_for): Likewise.
+ * tree-ssa-operands.c (add_virtual_operand): Likewise.
+ (add_call_clobber_ops): Likewise.
+ (add_call_read_ops): Likewise.
+ (get_asm_expr_operands): Likewise.
+ * tree-into-ssa.c (dump_decl_set): Likewise.
+ (update_ssa): Likewise.
+ * tree-sra.c (scan_function): Likewise.
+ (decide_instantiations): Likewise.
+ (scalarize_parms): Likewise.
+ * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
+ (dsa_named_for): Likewise.
+ * tree-ssa-structalias.c (update_alias_info): Likewise.
+ (merge_smts_into): Likewise.
+
+2008-02-25 Andreas Krebbel <krebbel1@de.ibm.com>
+
+ PR target/35258
+ * cse.c (cse_insn): Avoid creation of overlapping MEMs.
+ * alias.c (nonoverlapping_memrefs_p): Export for use in other modules.
+ * alias.h (nonoverlapping_memrefs_p): Likewise.
+
+2008-02-25 Jan Beulich <jbeulich@novell.com>
+
+ * Makefile.in: Also prefix uses of crt0.o and mcrt0.o with
+ $(T).
+ * config/i386/netware-libgcc.exp: Add __bswap?i2,
+ __emultls_get_address, __emultls_register_common,
+ __floatundi?f, and _Unwind_GetIPInfo.
+ * config/i386/netware.c (gen_stdcall_or_fastcall_decoration):
+ Sync with config/i386/winnt.c:gen_stdcall_or_fastcall_suffix().
+ (gen_regparm_prefix): Likewise.
+ (i386_nlm_encode_section_info): Sync with
+ config/i386/winnt.c:i386_pe_encode_section_info().
+ (i386_nlm_maybe_mangle_decl_assembler_name): New.
+ i386_nlm_mangle_decl_assembler_name): New.
+ (netware_override_options): New.
+ * config/i386/netware.h (netware_override_options): Declare.
+ (OVERRIDE_OPTIONS): Re-define to netware_override_options.
+ (i386_nlm_mangle_decl_assembler_name): Declare.
+ (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Define.
+
+2008-02-25 Ben Elliston <bje@au.ibm.com>
+
+ PR other/32948
+ * c-decl.c (grokdeclarator): Remove unused local variables
+ `typedef_type' and `type_as_written'.
+ * bb-reorder.c
+ (find_rarely_executed_basic_blocks_and_crossing_edges): Remove
+ unused local variable `has_hot_blocks'.
+ (fix_crossing_conditional_branches): Remove unused local variable
+ `prev_bb'.
+
+2008-02-25 Uros Bizjak <ubizjak@gmail.com>
+
+ PR middle-end/19984
+ * builtins.def (BUILT_IN_NAN): Define as c99 builtin
+ using DEF_C99_BUILTIN.
+ (BUILT_IN_NANF): Ditto.
+ (BUILT_IN_NANL): Ditto.
+
+2008-02-25 Ayal Zaks <zaks@il.ibm.com>
+ Revital Eres <eres@il.ibm.com>
+
+ * modulo-sched.c (calculate_must_precede_follow): Address TODO
+ regarding the order of two dependent insns in the same row.
+
+2008-02-25 Eric Botcazou <ebotcazou@adacore.com>
+
+ * stor-layout.c (layout_decl): Do not bump the alignment of a
+ bit-field to more than byte alignment if it is packed.
+
+2008-02-24 David Edelsohn <edelsohn@gnu.org>
+
+ * config/rs6000/rs6000.c (processor_costs): Add cache costs for
+ e300c2 and e300c3.
+
+2008-02-24 Diego Novillo <dnovillo@google.com>
+
+ http://gcc.gnu.org/ml/gcc-patches/2008-02/msg01094.html
+
+ PR 33738
+ * tree-vrp.c (vrp_evaluate_conditional): With
+ -Wtype-limits, emit a warning when comparing against a
+ constant outside the natural range of OP0's type.
+ * c.opt (Wtype-limits): Move ...
+ * common.opt (Wtype-limits): ... here.
+
+2008-02-24 Edmar Wienskoski <edmar@freescale.com>
+
+ * config.gcc (powerpc*-*-*): Add new cores e300c2 and e300c3.
+ * config/rs6000/e300c2c3.md: New file.
+ * config/rs6000/rs6000.c (processor_costs): Add new costs for
+ e300c2 and e300c3.
+ (rs6000_override_options): Add e300c2 and e300c3 cases to
+ processor_target_table. Do not allow usage of Altivec or Spe
+ with e300 cores. Initialize rs6000_cost for e300c2 and e300c3.
+ (rs6000_issue_rate): Set issue rate for e300c2 and e300c3.
+ * config/rs6000/rs6000.h (processor_type): Add
+ PROCESSOR_PPCE300C2 and PROCESSOR_PPCE300C3.
+ (ASM_CPU_SPEC): Add e300c2 and e300c3.
+ * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce300c2
+ and ppce300c3. Include e300c2c3.md.
+
+2008-02-23 David Edelsohn <edelsohn@gnu.org>
+
+ * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Use STRICT_ALIGNMENT
+ instead of TARGET_STRICT_ALIGN.
+
+2008-02-23 Joseph Myers <joseph@codesourcery.com>
+
+ * explow.c (memory_address): Assert that the generated address is
+ valid.
+
+2008-02-23 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ PR target/25477
+ * config/darwin-protos.h: Add darwin_patch_builtins prototype.
+ * config/darwin-ppc-ldouble-patch.def: New file.
+ * config/rs6000/darwin.h (SUBTARGET_INIT_BUILTINS): New macro.
+ * config/rs6000/rs6000.c (rs6000_init_builtins): Call
+ SUBTARGET_INIT_BUILTINS if defined.
+ * config/darwin.c (darwin_patch_builtin, darwin_patch_builtins):
+ New functions.
+
+2008-02-23 Andrew Pinski <andrew_pinski@playstation.sony.com>
+
+ PR rtl-opt/33512
+ * simplify-rtx.c (simplify_binary_operation_1): Add simplification
+ of (and X (ior (not X) Y) and (and (ior (not X) Y) X).
+
+2008-02-23 Andrew Pinski <andrew_pinski@playstation.sony.com>
+
+ PR pch/35027
+ * c-pch.c (c_common_valid_pch): Make the "too short to be a PCH
+ file" warning condtional on -Winvalid-PCH.
+
+2008-02-23 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * expmed.c (extract_bit_field): Always use adjust_address for MEM.
+
+2008-02-23 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/22076
+ PR target/34256
+ * config/i386/mmx.md (*mov<mode>_internal_rex64): Use "!y" to
+ prevent reload from using MMX registers.
+ (*mov<mode>_internal): Ditto.
+ (*movv2sf_internal_rex64): Ditto.
+ (*movv2sf_internal): Ditto.
+
+2008-02-23 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ PR documentation/31569
+ * doc/install.texi2html: Use makeinfo --no-number-sections.
+
+2008-02-22 Nathan Froyd <froydnj@codesourcery.com>
+
+ * config/rs6000/rs6000.c (rs6000_legitimize_address): Check to
+ ensure that we can address an entire entity > 8 bytes. Don't
+ generate reg+reg addressing for such data.
+
+2008-02-22 Nathan Froyd <froydnj@codesourcery.com>
+
+ * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Don't overalign
+ strings when optimizing for size, unless the target cares about
+ alignment.
+
+2008-02-22 Tom Tromey <tromey@redhat.com>
+
+ * regclass.c (current_pass): Remove declaration.
+
+2008-02-22 Anatoly Sokolov <aesok@post.ru>
+
+ * config/avr/libgcc.S (__RAMPZ__): Define.
+ (__do_copy_data): Add for devices with 128KB code memory.
+
+2008-02-22 Nathan Froyd <froydnj@codesourcery.com>
+
+ * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
+ Use spe_abi.
+ * config/rs6000/eabispe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
+
+2008-02-22 Hans-Peter Nilsson <hp@axis.com>
+
+ * config/cris/cris.h (REG_CLASS_FROM_LETTER): Recognize 'b' for
+ GENNONACR_REGS.
+
+2008-02-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ PR c/19999
+ * c-typeck.c (build_binary_op): Warn about floating point
+ comparisons if FLOAT_TYPE_P, not only for REAL_TYPE.
+
+2008-02-21 Janis Johnson <janis187@us.ibm.com>
+
+ PR target/34526
+ * config/rs6000/rs6000.c (rs6000_altivec_abi): Clarify comment.
+ (rs6000_explicit_options): Split abi into spe_abi and altivec_abi,
+ add vrsave.
+ (rs6000_override_options): Set altivec_abi as default, not override,
+ for 64-bit GNU/Linux; for 32-bit GNU/Linux default to altivec_abi for
+ TARGET_ALTIVEC; default to TARGET_ALTIVEC_VRSAVE when AltiVec ABI
+ is used; use new member spe_abi.
+ (rs6000_handle_option): Set rs6000_explicit_options.vrsave; use
+ spe_abi and altivec_abi.
+
+2008-02-22 Tomas Bily <tbily@suse.cz>
+
+ * tree-vectorizer.c (vect_is_simple_reduction): Fix comment typo.
+
+2008-02-21 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ PR bootstrap/35273
+ * config.build (build_file_translate): Set to `CMD //c' only if
+ it works.
+ * Makefile.in (build_file_translate): Improve comment.
+
+2008-02-21 Jan Hubicka <jh@suse.cz>
+
+ * predict.def (PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL,
+ PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL, PRED_CALL,
+ PRED_TREE_EARLY_RETURN, PRED_NULL_RETURN): Update.
+
+2008-02-21 Michael Matz <matz@suse.de>
+
+ PR target/35264
+ * config/i386/i386.c (ix86_expand_branch): Add missing breaks.
+
+2008-02-21 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.md (mov<mode>cc): Macroize expander from movsfcc,
+ movdfcc and movxfcc using X87MODEF mode iterator and SSE_FLOAT_MODE_P
+ as insn constraint.
+ * config/i386/sse.md (<sse>_movup<ssemodesuffixf2c>): Macroize insn
+ from sse_movups adn sse2_movupd using SSEMODEF2P mode iterator and
+ SSE_VEC_FLOAT_MODE_P as insn constraint.
+ (<sse>_movmskp<ssemodesuffixf2c>): Ditto from similar patterns.
+ (sse4a_movnt<mode>): Macroize insn from sse4a_movntsf and
+ sse4a_movntdf using MODEF mode iterator.
+ (sse4a_vmmovnt<mode>): Macroize insn form sse4a_vmmovntv2df and
+ sse4a_vmmovntv4sf using SSEMODEF2P mode iterator.
+ (sse4_1_blendp<ssemodesuffixf2c>): Ditto from similar patterns.
+ (sse4_1_blendvp<ssemodesuffixf2c>): Ditto.
+ (sse4_1_dpp<ssemodesuffixf2c>): Ditto.
+ (sse4_1_roundp<ssemodesuffixf2c>): Ditto.
+ (sse4_1_rounds<ssemodesuffixf2c>): Ditto.
+
+2008-02-21 Richard Guenther <rguenther@suse.de>
+
+ * tree.def (PAREN_EXPR): New tree code.
+ * fold-const.c (fold_unary): Remove PAREN_EXPR around constants
+ and PAREN_EXPR.
+ * tree-pretty-print.c (dump_generic_node): Handle PAREN_EXPR.
+ * expr.c (expand_expr_real_1): Likewise.
+ * tree-inline.c (estimate_num_insns_1): Likewise.
+ * tree-complex.c (expand_complex_move): Likewise.
+ * tree-vectorizer.c (vect_is_simple_use): Treat PAREN_EXPR (x)
+ as plain x.
+
+2008-02-20 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ PR target/35225
+ * config/sh/sh.c (find_barrier): Don't go past 'from' argument.
+
+2008-02-20 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ PR target/35190
+ * config/sh/sh.md (jump_compact): Disable for crossing jumps.
+
+ * config/sh/sh.c (find_barrier): Don't go past
+ NOTE_INSN_SWITCH_TEXT_SECTIONS note.
+
+2008-02-20 DJ Delorie <dj@redhat.com>
+
+ * config/h8300/h8300.md (insv): Force source operand to be a register.
+
+ * config/h8300/h8300.c (h8300_expand_epilogue): Emit return insn
+ as a jump, not as a plain insn.
+
+2008-02-20 Seongbae Park <seongbae.park@gmail.com>
+
+ * doc/invoke.texi (Warning Options): Add new option
+ -Wframe-larger-than=.
+ (-Wframe-larger-than): Document.
+
+ * flags.h (warn_frame_larger_than, frame_larger_than_size):
+ Add declarations for new option variables.
+
+ * final.c (final_start_function): Check the frame size
+ before emission and issue a Wframe-larger-than warning.
+
+ * opts.c (warn_frame_larger_than, frame_larger_than_size):
+ Add definitions for new option variables.
+ (common_handle_option): Handle new option OPT_Wframe_larger_than_.
+
+ * common.opt (Wframe-larger-than=): New option.
+
+2008-02-20 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/sse.md (<sse>_vmmul<mode>3): Fix typo in asm template.
+ (<sse>_div<mode>3): Ditto.
+ (<sse>_vmdiv<mode>3): Ditto.
+ (<sse>_vmsqrt<mode>2): Ditto.
+ (*smax<mode>3): Ditto.
+ (sse5_frcz<mode>2): Ditto.
+ (sse5_vmfrcz<mode>2): Ditto. Use TARGET_SSE5 instead of TARGET_ROUND
+ as insn constraint.
+
+2008-02-20 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/35265
+ * builtins.c (validate_arg): If we want an INTEGER_TYPE,
+ be happy with INTEGRAL_TYPE_P.
+
+2008-02-20 Richard Guenther <rguenther@suse.de>
+
+ * fold-const.c (split_tree): Associate floatig-point expressions
+ if flag_associative_math is set.
+
+2008-02-20 Richard Guenther <rguenther@suse.de>
+
+ * tree.h (fold_real_zero_addition_p): Declare.
+ * fold-const.c (fold_real_zero_addition_p): Export.
+ * tree-ssa-reassoc.c (eliminate_using_constants): Also handle
+ floating-point operations with zero and one.
+
+2008-02-20 Paolo Bonzini <bonzini@gnu.org>
+
+ * doc/install.texi: Correct references to CFLAGS, replacing them
+ with BOOT_CFLAGS. Document flags used during bootstrap for
+ target libraries.
+
+2008-02-20 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.h (SSE_VEC_FLOAT_MODE_P): New define.
+ * config/i386/i386.md (*sse_setcc<mode>): Macroize from *sse_setccsf
+ and *sse_setccdf using MODEF mode iterator and SSE_FLOAT_MODE_P as
+ insn constraint.
+ (smin<mode>3): Ditto from similar patterns.
+ (smax<mode>3): Ditto.
+ (*ieee_smin<mode>3): Ditto.
+ (*ieee_smax<mode>3): Ditto.
+ * config/i386/sse.md (sse): New mode attribute.
+ (mov<mode>): Macroize expander from movv4sf and movv2df using
+ SSEMODEF2P mode iterator.
+ (<sse>_movnt<mode>): Ditto from similar patterns. Use
+ SSE_VEC_FLOAT_MODE_P as insn constraint.
+ (storent<mode>): Ditto.
+ (storent<mode>): Macroize expander from storentsf and storentdf using
+ MODEF mode iterator.
+ (neg<mode>2): Macroize from negv4sf2 and negv2df2 using SSEMODEF2P
+ mode iterator and SSE_VEC_FLOAT_MODE_P as insn constraint.
+ (abs<mode>2): Ditto from similar patterns.
+ (add<mode>3, *add<mode>3, <sse>_vmadd<mode>3): Ditto.
+ (sub<mode>3, *sub<mode>3, <sse>_vmsub<mode>3): Ditto.
+ (<sse>_div<mode>3, <sse>_vmdiv<mode>3): Ditto.
+ (<sse>_vmsqrt<mode>2): Ditto.
+ (smin<mode>3, *smin<mode>3_finite, *smin<mode>3)
+ (<sse>_vmsmin<mode>3, *ieee_smin<mode>3): Ditto.
+ (smax<mode>3, *smax<mode>3_finite, *smax<mode>3)
+ (<sse>_vmsmax<mode>3, *ieee_smax<mode>3): Ditto.
+ (<sse>_maskcmp<mode>3): Macroize from sse_maskcmpv4sf3,
+ sse_maskcmpsf3, sse2_maskcmpv2df3 and sse2_maskcmpdf3 using SSEMODEF4
+ mode iterator. Use SSE_FLOAT_MODE_P with SSE_VEC_FLOAT_MODE_P as
+ insn constraint.
+ (<sse>_comi): Macroize from sse_comi and sse2_comi using MODEF mode
+ iterator and SSE_FLOAT_MODE_P as insn constraint.
+ (<sse>_ucomi): Ditto from similar patterns.
+ (<sse>_vmmaskcmp<mode>3): Macroize from sse_vmmaskcmpv4sf3 and
+ sse2_vmmaskcmpv2df3 using SSEMODEF2P mode iterator and
+ SSE_VEC_FLOAT_MODE_P as insn constraint.
+ (vcond<mode>): Ditto from similar patterns.
+ (and<mode>3, *and<mode>3): Ditto.
+ (<sse>_nand<mode>3): Ditto.
+ (ior<mode>3, *ior<mode>3): Ditto.
+ (xor<mode>3, *xor<mode>3): Ditto.
+ (*and<mode>3): Macroize from *andsf3 and *anddf3 using MODEF mode
+ iterator and SSE_FLOAT_MODE_P as insn constraint.
+ (*nand<mode>3): Ditto from similar patterns.
+ (*ior<mode>3): Ditto.
+ (*xor<mode>3): Ditto.
+
+2008-02-20 Ira Rosen <irar@il.ibm.com>
+
+ * config/spu/spu.md (vec_unpacku_hi_v8hi, vec_unpacku_lo_v8hi,
+ vec_unpacks_hi_v8hi, vec_unpacks_lo_v8hi, vec_unpacku_hi_v16qi,
+ vec_unpacku_lo_v16qi, vec_unpacks_lo_v16qi): Implement.
+
+2008-02-19 Jan Hubicka <jh@suse.cz>
+
+ * predict.c (tree_bb_level_predictions): Remove variable next
+ mistakely introduced by previous commit.
+
2008-02-19 Jan Hubicka <jh@suse.cz>
* predict.c (predict_paths_leading_to): Rewrite.
@@ -55,8 +608,7 @@
2008-02-19 Nick Clifton <nickc@redhat.com>
PR other/31349
- * opts.c (undocumented_msg): Leave blank unless checking is
- enabled.
+ * opts.c (undocumented_msg): Leave blank unless checking is enabled.
(handle_options): Fix indentation.
(print_filtered_help): If no language-specific options were
displayed tell the user how to list all the options supported by
@@ -78,10 +630,10 @@
(print_partial_schedule): Rename CYCLE to ROW.
2008-02-19 Christian Bruel <christian.bruel@st.com>
- Zdenek Dvorak <ook@ucw.cz>
-
- * tree-ssa-loop-ivopts.c (may_be_unaligned_p): Check step alignment.
-
+ Zdenek Dvorak <ook@ucw.cz>
+
+ * tree-ssa-loop-ivopts.c (may_be_unaligned_p): Check step alignment.
+
2008-02-19 Uros Bizjak <ubizjak@gmail.com>
PR target/33555
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 23a5caf7f12..a7056adecde 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20080219
+20080226
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index e659300b45a..1cc90cbdf33 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -2,8 +2,8 @@
# Run 'configure' to generate Makefile from Makefile.in
# Copyright (C) 1987, 1988, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
-# 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
-# Free Software Foundation, Inc.
+# 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
+# 2008 Free Software Foundation, Inc.
#This file is part of GCC.
@@ -256,7 +256,9 @@ POD2MAN = pod2man --center="GNU" --release="gcc-$(version)"
# do not correctly set the timestamp due to buggy versions of `utime'
# in the kernel. So, we use `echo' instead.
STAMP = echo timestamp >
-# Translate absolute file names to w32 paths.
+# If necessary (e.g., when using the MSYS shell on Microsoft Windows)
+# translate the shell's notion of absolute pathnames to the native
+# spelling.
build_file_translate = @build_file_translate@
# Make sure the $(MAKE) variable is defined.
@@ -1714,14 +1716,14 @@ $(T)crtbeginT.o: crtstuff.c $(GCC_PASSES) $(TCONFIG_H) auto-host.h \
# Compile the start modules crt0.o and mcrt0.o that are linked with
# every program
-crt0.o: s-crt0 ; @true
-mcrt0.o: s-crt0; @true
+$(T)crt0.o: s-crt0 ; @true
+$(T)mcrt0.o: s-crt0; @true
s-crt0: $(CRT0_S) $(MCRT0_S) $(GCC_PASSES) $(CONFIG_H)
$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(CRT0STUFF_T_CFLAGS) \
- -o crt0.o -c $(CRT0_S)
+ -o $(T)crt0.o -c $(CRT0_S)
$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(CRT0STUFF_T_CFLAGS) \
- -o mcrt0.o -c $(MCRT0_S)
+ -o $(T)mcrt0.o -c $(MCRT0_S)
$(STAMP) s-crt0
#
# Compiling object files from source files.
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index fc40a9518fd..954f1a90c5a 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,35 @@
+2008-02-25 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * gnat_rm.texi, gnat_ugn.texi: Fix spacing after `e.g.' and
+ `i.e.' by adding comma or `@:' as appropriate.
+ * gnat_rm.texi (Pragma Wide_Character_Encoding): Instead of
+ plain characters `C', use `@samp{C}'.
+ * gnat_ugn.texi (File Naming Rules, About gnatkr)
+ (Krunching Method): Likewise.
+
+ * gnat_ugn.texi (Conventions): List environment variables and
+ metasyntactic variables.
+ (Compiling Programs): Fix notation of metasyntactic variables.
+ Add @file where appropriate. Use @file for file extensions,
+ @samp for strings.
+ * gnat_rm.texi, gnat_ugn.texi: Where appropriate, use @samp
+ instead of @file, @env instead of @code.
+
+2008-02-24 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ PR documentation/15479
+ * gnat_rm.texi, gnat_ugn.texi: Where appropriate, replace `..'
+ and `...' with `@dots{}' or `@enddots{}'.
+
+ PR documentation/15479
+ * gnat_rm.texi, gnat_ugn.texi: Where appropriate, add @command,
+ use @command instead of @code, @option instead of @samp or @code,
+ @code instead of @var, @samp instead of @file.
+
+ PR documentation/15479
+ * gnat_ugn.texi (Using gnatmake in a Makefile): Do not ignore errors
+ in Makefile rules, by using `&&' rather than `;'.
+
2008-02-17 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
PR documentation/15479
diff --git a/gcc/ada/gnat_rm.texi b/gcc/ada/gnat_rm.texi
index 8bc0a67be13..cbc5685ffb8 100644
--- a/gcc/ada/gnat_rm.texi
+++ b/gcc/ada/gnat_rm.texi
@@ -34,7 +34,7 @@
@end direntry
@copying
-Copyright @copyright{} 1995-2007, 2008 Free Software Foundation
+Copyright @copyright{} 1995-2007, 2008 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2
@@ -597,10 +597,11 @@ and @code{classes}.
@code{Option flags}
@item
-@file{File Names}, @samp{button names}, and @samp{field names}.
+@file{File names}, @samp{button names}, and @samp{field names}.
@item
-@code{Variables}.
+@code{Variables}, @env{environment variables}, and @var{metasyntactic
+variables}.
@item
@emph{Emphasis}.
@@ -962,7 +963,7 @@ Note that, as with the @code{if} statement to which it is equivalent, the
type of the expression is either @code{Standard.Boolean}, or any type derived
from this standard type.
-If assertions are disabled (switch @code{-gnata} not used), then there
+If assertions are disabled (switch @option{-gnata} not used), then there
is no run-time effect (and in particular, any side effects from the
expression will not occur at run time). (The expression is still
analyzed at compile time, and may cause types to be frozen if they are
@@ -1066,8 +1067,8 @@ and as the prefix of a @code{Check_Name'Enabled} attribute reference. For
any of these three cases, the check name must be visible. A check
name is visible if it is in the configuration pragmas applying to
the current unit, or if it appears at the start of any unit that
-is part of the dependency set of the current unit (e.g. units that
-are mentioned in @code{with} clauses.
+is part of the dependency set of the current unit (e.g., units that
+are mentioned in @code{with} clauses).
@node Pragma Comment
@unnumberedsec Pragma Comment
@@ -1140,7 +1141,7 @@ expression. The pragma is effective only if the value of this expression
is known at compile time, and has the value True. The set of expressions
whose values are known at compile time includes all static boolean
expressions, and also other values which the compiler can determine
-at compile time (e.g. the size of a record type set by an explicit
+at compile time (e.g., the size of a record type set by an explicit
size representation clause, or the value of a variable which was
initialized to a constant and is known not to have been modified).
If these conditions are met, an error message is generated using
@@ -1468,7 +1469,7 @@ semantics of the pragma is exactly equivalent to the procedure call statement
corresponding to the argument with a terminating semicolon. Pragmas are
permitted in sequences of declarations, so you can use pragma @code{Debug} to
intersperse calls to debug procedures in the middle of declarations. Debug
-pragmas can be enabled either by use of the command line switch @code{-gnata}
+pragmas can be enabled either by use of the command line switch @option{-gnata}
or by use of the configuration pragma @code{Debug_Policy}.
@node Pragma Debug_Policy
@@ -1484,7 +1485,7 @@ pragma Debug_Policy (CHECK | IGNORE);
@noindent
If the argument is @code{CHECK}, then pragma @code{DEBUG} is enabled.
If the argument is @code{IGNORE}, then pragma @code{DEBUG} is ignored.
-This pragma overrides the effect of the @code{-gnata} switch on the
+This pragma overrides the effect of the @option{-gnata} switch on the
command line.
@node Pragma Detect_Blocking
@@ -1519,7 +1520,7 @@ elaboration model used by the compilation affected by the
pragma. If the parameter is @code{Dynamic},
then the dynamic elaboration
model described in the Ada Reference Manual is used, as though
-the @code{-gnatE} switch had been specified on the command
+the @option{-gnatE} switch had been specified on the command
line. If the parameter is @code{Static}, then the default GNAT static
model is used. This configuration pragma overrides the setting
of the command line. For full details on the elaboration models
@@ -2575,7 +2576,7 @@ See the GNAT users guide for details.
Note that pragma @code{Initialize_Scalars} is particularly useful in
conjunction with the enhanced validity checking that is now provided
in GNAT, which checks for invalid values under more conditions.
-Using this feature (see description of the @code{-gnatV} flag in the
+Using this feature (see description of the @option{-gnatV} flag in the
users guide) in conjunction with pragma @code{Initialize_Scalars}
provides a powerful new tool to assist in the detection of problems
caused by uninitialized variables.
@@ -2599,7 +2600,7 @@ pragma Inline_Always (NAME [, NAME]);
@noindent
Similar to pragma @code{Inline} except that inlining is not subject to
-the use of option @code{-gnatn} and the inlining happens regardless of
+the use of option @option{-gnatn} and the inlining happens regardless of
whether this option is used.
@node Pragma Inline_Generic
@@ -2916,7 +2917,7 @@ and causes @var{LOCAL_NAME} to be emitted as an alias for the symbol
is reserved for @var{LOCAL_NAME} by the assembler and it will be resolved
to the same address as @var{static_string_EXPRESSION} by the linker.
-The actual linker name for the target must be used (e.g. the fully
+The actual linker name for the target must be used (e.g.@: the fully
encoded name with qualification in Ada, or the mangled name in C++),
or it must be declared using the C convention with @code{pragma Import}
or @code{pragma Export}.
@@ -3021,7 +3022,7 @@ at the symbolic level with the compiler.
Some file formats do not support arbitrary sections so not all target
machines support this pragma. The use of this pragma may cause a program
execution to be erroneous if it is used to place an entity into an
-inappropriate section (e.g. a modified variable into the @code{.text}
+inappropriate section (e.g.@: a modified variable into the @code{.text}
section). See also @code{pragma Persistent_BSS}.
@smallexample @c ada
@@ -3324,7 +3325,7 @@ indication of obsolescence applies only when compiling in Ada 2005
mode. This is primarily intended for dealing with the situations
in the predefined library where subprograms or packages
have become defined as obsolescent in Ada 2005
-(e.g. in Ada.Characters.Handling), but may be used anywhere.
+(e.g.@: in Ada.Characters.Handling), but may be used anywhere.
The following examples show typical uses of this pragma:
@@ -3458,7 +3459,7 @@ targets that do not normally support the capability. The version of
@code{Poll} in this file makes a call to the appropriate runtime routine
to test for an abort condition.
-Note that polling can also be enabled by use of the @code{-gnatP} switch. See
+Note that polling can also be enabled by use of the @option{-gnatP} switch. See
the @cite{GNAT User's Guide} for details.
@node Pragma Profile (Ravenscar)
@@ -3838,7 +3839,7 @@ the pragma line (for use in error messages and debugging
information). @var{string_literal} is a static string constant that
specifies the file name to be used in error messages and debugging
information. This is most notably used for the output of @code{gnatchop}
-with the @code{-r} switch, to make sure that the original unchopped
+with the @option{-r} switch, to make sure that the original unchopped
source file is the one referred to.
The second argument must be a string literal, it cannot be a static
@@ -3942,7 +3943,7 @@ the @file{gnat.adc} file).
The form with a string literal specifies which style options are to be
activated. These are additive, so they apply in addition to any previously
set style check options. The codes for the options are the same as those
-used in the @code{-gnaty} switch to @code{gcc} or @code{gnatmake}.
+used in the @option{-gnaty} switch to @command{gcc} or @command{gnatmake}.
For example the following two methods can be used to enable
layout checking:
@@ -4478,7 +4479,7 @@ The form with a string literal specifies which validity options are to be
activated. The validity checks are first set to include only the default
reference manual settings, and then a string of letters in the string
specifies the exact set of options required. The form of this string
-is exactly as described for the @code{-gnatVx} compiler switch (see the
+is exactly as described for the @option{-gnatVx} compiler switch (see the
GNAT users guide for details). For example the following two methods
can be used to enable validity checking for mode @code{in} and
@code{in out} subprogram parameters:
@@ -4650,7 +4651,7 @@ pragmas must appear in sequence:
@smallexample @c ada
pragma Warnings (Off, Pattern);
-.. code where given warning is to be suppressed
+@dots{} code where given warning is to be suppressed
pragma Warnings (On, Pattern);
@end smallexample
@@ -4729,7 +4730,8 @@ to appear within the same file.
The argument can be an identifier or a character literal. In the identifier
case, it is one of @code{HEX}, @code{UPPER}, @code{SHIFT_JIS},
@code{EUC}, @code{UTF8}, or @code{BRACKETS}. In the character literal
-case it is correspondingly one of the characters h,u,s,e,8,b.
+case it is correspondingly one of the characters @samp{h}, @samp{u},
+@samp{s}, @samp{e}, @samp{8}, or @samp{b}.
Note that when the pragma is used within a file, it affects only the
encoding within that file, and does not affect withed units, specs,
@@ -7364,7 +7366,7 @@ overlapping storage units.
@end cartouche
@noindent
A compilation is represented by a sequence of files presented to the
-compiler in a single invocation of the @code{gcc} command.
+compiler in a single invocation of the @command{gcc} command.
@sp 1
@cartouche
@@ -7405,7 +7407,7 @@ mentioned in the context clause of one of the needed Ada units.
If the partition contains no main program, or if the main program is in
a language other than Ada, then GNAT
-provides the binder options @code{-z} and @code{-n} respectively, and in
+provides the binder options @option{-z} and @option{-n} respectively, and in
this case a list of units can be explicitly supplied to the binder for
inclusion in the partition (all units needed by these units will also
be included automatically). For full details on the use of these
@@ -8468,7 +8470,7 @@ suffix
is the hexadecimal representation of the virtual address of the corresponding
task control block. If the variable is an array of tasks, the image of each
task will have the form of an indexed component indicating the position of a
-given task in the array, eg. Group(5)_XXXXXXX. If the task is a
+given task in the array, e.g.@: Group(5)_XXXXXXX. If the task is a
component of a record, the image of the task will have the form of a selected
component. These rules are fully recursive, so that the image of a task that
is a subcomponent of a composite object corresponds to the expression that
@@ -8522,7 +8524,7 @@ There are no implementation-defined aspects of @code{Task_Attributes}.
@noindent
The metrics information for GNAT depends on the performance of the
underlying operating system. The sources of the run-time for tasking
-implementation, together with the output from @code{-gnatG} can be
+implementation, together with the output from @option{-gnatG} can be
used to determine the exact sequence of operating systems calls made
to implement various tasking constructs. Together with appropriate
information on the performance of the underlying operating system,
@@ -9443,7 +9445,7 @@ Then @code{Default_Stack_Size} can be defined in a global package, and
modified as required. Any tasks requiring stack sizes different from the
default can have an appropriate alternative reference in the pragma.
-You can also use the @code{-d} binder switch to modify the default stack
+You can also use the @option{-d} binder switch to modify the default stack
size.
For access types, the @code{Storage_Size} clause specifies the maximum
@@ -10458,7 +10460,7 @@ including the important case of single bits or boolean values, then
there are no limitations on placement of such components, and they
may start and end at arbitrary bit boundaries.
-If the component size is not a power of 2 (e.g. 3 or 5), then
+If the component size is not a power of 2 (e.g.@: 3 or 5), then
an array of this type longer than 64 bits must always be placed on
on a storage unit (byte) boundary and occupy an integral number
of storage units (bytes). Any component clause that does not
@@ -10866,7 +10868,7 @@ code. size clause specifying 64-bits must be used to obtain a 64-bit pointer.
@node Determining the Representations chosen by GNAT
@section Determining the Representations chosen by GNAT
@cindex Representation, determination of
-@cindex @code{-gnatR} switch
+@cindex @option{-gnatR} switch
@noindent
Although the descriptions in this section are intended to be complete, it is
@@ -10884,7 +10886,7 @@ fields placed? The section on pragma @code{Pack} in this chapter can be
used to answer the second question, but it is often easier to just see
what the compiler does.
-For this purpose, GNAT provides the option @code{-gnatR}. If you compile
+For this purpose, GNAT provides the option @option{-gnatR}. If you compile
with this option, then the compiler will output information on the actual
representations chosen, in a format similar to source representation
clauses. For example, if we compile the package:
@@ -10934,7 +10936,7 @@ end q;
@end smallexample
@noindent
-using the switch @code{-gnatR} we obtain the following output:
+using the switch @option{-gnatR} we obtain the following output:
@smallexample
Representation information for unit q
@@ -11073,7 +11075,7 @@ system-independent manner.
@item Ada.Decimal (F.2)
This package provides constants describing the range of decimal numbers
implemented, and also a decimal divide routine (analogous to the COBOL
-verb DIVIDE .. GIVING .. REMAINDER ..)
+verb DIVIDE @dots{} GIVING @dots{} REMAINDER @dots{})
@item Ada.Direct_IO (A.8.4)
This package provides input-output using a model of a set of records of
@@ -11615,7 +11617,7 @@ library routines that support streams. This facilitates shared use of these
streams by mixed language programs. Note though that system level buffering is
explicitly enabled at elaboration of the standard I/O packages and that can
have an impact on mixed language programs, in particular those using I/O before
-calling the Ada elaboration routine (e.g. adainit). It is recommended to call
+calling the Ada elaboration routine (e.g.@: adainit). It is recommended to call
the Ada elaboration routine before performing any I/O or when impractical,
flush the common I/O streams and in particular Standard_Output before
elaborating the Ada code.
@@ -12586,7 +12588,7 @@ package Interfaces.C_Streams is
-- If text_translation_required is true, then the following
-- functions may be used to dynamically switch a file from
-- binary to text mode or vice versa. These functions have
- -- no effect if text_translation_required is false (i.e. in
+ -- no effect if text_translation_required is false (i.e.@: in
-- normal UNIX mode). Use fileno to get a stream handle.
procedure set_binary_mode (handle : int);
procedure set_text_mode (handle : int);
@@ -14675,7 +14677,7 @@ GNAT fully implements the pragma @code{Shared_Passive} for
@cindex pragma @code{Shared_Passive}
the purpose of designating shared passive packages.
This allows the use of passive partitions in the
-context described in the Ada Reference Manual; i.e. for communication
+context described in the Ada Reference Manual; i.e., for communication
between separate partitions of a distributed application using the
features in Annex E.
@cindex Annex E
@@ -14692,7 +14694,7 @@ partitions, using protected objects for synchronization where
needed. The only requirement is that the two programs have a
common shared file system. It is even possible for programs
running on different machines with different architectures
-(e.g. different endianness) to communicate via the data in
+(e.g.@: different endianness) to communicate via the data in
a passive partition.
@item Persistence between program runs
@@ -16004,7 +16006,7 @@ on which the program should execute.
@item Communication_Protocol
This is a simple string attribute. Its value is the name of the protocol
to use to communicate with the target in a cross-compilation environment,
-e.g. @code{"wtx"} or @code{"vxworks"}.
+e.g.@: @code{"wtx"} or @code{"vxworks"}.
@item Compiler_Command
This is an associative array attribute, whose domain is a language name. Its
@@ -16028,7 +16030,7 @@ predefined path; e.g., @code{"gnatls"}, @code{"powerpc-wrs-vxworks-gnatls"}.
@item VCS_Kind
This is a simple attribute. Its value is a string used to specify the
-Version Control System (VCS) to be used for this project, e.g CVS, RCS
+Version Control System (VCS) to be used for this project, e.g.@: CVS, RCS
ClearCase or Perforce.
@item VCS_File_Check
diff --git a/gcc/ada/gnat_ugn.texi b/gcc/ada/gnat_ugn.texi
index 504bc33163b..bd8eb83ddf9 100644
--- a/gcc/ada/gnat_ugn.texi
+++ b/gcc/ada/gnat_ugn.texi
@@ -117,7 +117,8 @@
@c %**end of header
@copying
-Copyright @copyright{} 1995-2005, 2006, 2007, 2008 Free Software Foundation
+Copyright @copyright{} 1995-2005, 2006, 2007, 2008 Free Software Foundation,
+Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2
@@ -972,17 +973,18 @@ in this guide:
@itemize @bullet
@item
-@code{Functions}, @code{utility program names}, @code{standard names},
+@code{Functions}, @command{utility program names}, @code{standard names},
and @code{classes}.
@item
-@samp{Option flags}
+@option{Option flags}
@item
-@file{File Names}, @file{button names}, and @file{field names}.
+@file{File names}, @samp{button names}, and @samp{field names}.
@item
-@var{Variables}.
+@code{Variables}, @env{environment variables}, and @var{metasyntactic
+variables}.
@item
@emph{Emphasis}.
@@ -1346,7 +1348,7 @@ written as @kbd{C-h}), and the tutorial by @kbd{C-h t}.
Documentation on Emacs and other tools is available in Emacs under the
pull-down menu button: @code{Help - Info}. After selecting @code{Info},
-use the middle mouse button to select a topic (e.g. Emacs).
+use the middle mouse button to select a topic (e.g.@: Emacs).
In a character cell terminal, do @kbd{C-h i} to invoke info, and then @kbd{m}
(stands for menu) followed by the menu item desired, as in @kbd{m Emacs}, to
@@ -1622,7 +1624,7 @@ statement @code{Put_Line@ (Line@ (1..N));}
Select @code{Debug}, then @code{Run}. When the
@code{Program Arguments} window appears, click @code{OK}.
A console window will appear; enter some line of text,
-e.g. @code{abcde}, at the prompt.
+e.g.@: @code{abcde}, at the prompt.
The program will pause execution when it gets to the
breakpoint, and the corresponding line is highlighted.
@@ -1785,7 +1787,7 @@ of the compiler (@pxref{Character Set Control}).
@noindent
The basic character set is Latin-1. This character set is defined by ISO
standard 8859, part 1. The lower half (character codes @code{16#00#}
-... @code{16#7F#)} is identical to standard ASCII coding, but the upper half
+@dots{} @code{16#7F#)} is identical to standard ASCII coding, but the upper half
is used to represent additional characters. These include extended letters
used by European languages, such as French accents, the vowels with umlauts
used in German, and the extra letter A-ring used in Swedish.
@@ -1854,7 +1856,7 @@ lowercase equivalence.
Any character in the range 80-FF allowed in identifiers, and all are
considered distinct. In other words, there are no uppercase and lowercase
equivalences in this range. This is useful in conjunction with
-certain encoding schemes used for some foreign character sets (e.g.
+certain encoding schemes used for some foreign character sets (e.g.,
the typical method of representing Chinese characters on the PC).
@item No Upper-Half
@@ -1983,10 +1985,10 @@ the unit and replacing the separating dots with hyphens and using
An exception arises if the file name generated by the above rules starts
with one of the characters
@ifset vms
-A,G,I, or S,
+@samp{A}, @samp{G}, @samp{I}, or @samp{S},
@end ifset
@ifclear vms
-a,g,i, or s,
+@samp{a}, @samp{g}, @samp{i}, or @samp{s},
@end ifclear
and the second character is a
minus. In this case, the character ^tilde^dollar sign^ is used in place
@@ -1994,10 +1996,10 @@ of the minus. The reason for this special rule is to avoid clashes with
the standard names for child units of the packages System, Ada,
Interfaces, and GNAT, which use the prefixes
@ifset vms
-S- A- I- and G-
+@samp{S-}, @samp{A-}, @samp{I-}, and @samp{G-},
@end ifset
@ifclear vms
-s- a- i- and g-
+@samp{s-}, @samp{a-}, @samp{i-}, and @samp{g-},
@end ifclear
respectively.
@@ -2097,7 +2099,7 @@ GNAT allows completely arbitrary file names to be specified using the
source file name pragma. However, if the file name specified has an
extension other than @file{.ads} or @file{.adb} it is necessary to use
a special syntax when compiling the file. The name in this case must be
-preceded by the special sequence @code{-x} followed by a space and the name
+preceded by the special sequence @option{-x} followed by a space and the name
of the language, here @code{ada}, as in:
@smallexample
@@ -2109,7 +2111,8 @@ $ gcc -c -x ada peculiar_file_name.sim
@command{gnatmake} handles non-standard file names in the usual manner (the
non-standard file name for the main program is simply used as the
argument to gnatmake). Note that if the extension is also non-standard,
-then it must be included in the gnatmake command, it may not be omitted.
+then it must be included in the @command{gnatmake} command, it may not
+be omitted.
@node Alternative File Naming Schemes
@section Alternative File Naming Schemes
@@ -2174,7 +2177,7 @@ a separate @code{Subunit_File_Name} rule, and in this case the
@code{Body_File_name} rule is used for subunits as well.
The separate rule for subunits can also be used to implement the rather
-unusual case of a compilation environment (e.g. a single directory) which
+unusual case of a compilation environment (e.g.@: a single directory) which
contains a subunit and a child unit with the same unit name. Although
both units cannot appear in the same partition, the Ada Reference Manual
allows (but does not require) the possibility of the two units coexisting
@@ -2431,7 +2434,7 @@ A list of relevant restrictions applying to the unit (used for consistency)
checking.
@item
-Categorization information (e.g. use of pragma @code{Pure}).
+Categorization information (e.g.@: use of pragma @code{Pure}).
@item
Information on all @code{with}'ed units, including presence of
@@ -2950,8 +2953,8 @@ Interface ---see http://www.codesourcery.com/archives/cxx-abi).
@noindent
Interfacing can be done at 3 levels: simple data, subprograms, and
-classes. In the first two cases, GNAT offers a specific @var{Convention
-C_Plus_Plus} (or @var{CPP}) that behaves exactly like @var{Convention C}.
+classes. In the first two cases, GNAT offers a specific @code{Convention
+C_Plus_Plus} (or @code{CPP}) that behaves exactly like @code{Convention C}.
Usually, C++ mangles the names of subprograms, and currently, GNAT does
not provide any help to solve the demangling problem. This problem can be
addressed in two ways:
@@ -2998,16 +3001,17 @@ $ gnatmake ada_unit -largs file1.o file2.o --LINK=c++
@item
Using GNAT and G++ from two different GCC installations: If both
-compilers are on the PATH, the previous method may be used. It is
-important to note that environment variables such as C_INCLUDE_PATH,
-GCC_EXEC_PREFIX, BINUTILS_ROOT, and GCC_ROOT will affect both compilers
+compilers are on the @env{PATH}, the previous method may be used. It is
+important to note that environment variables such as
+@env{C_INCLUDE_PATH}, @env{GCC_EXEC_PREFIX}, @env{BINUTILS_ROOT}, and
+@env{GCC_ROOT} will affect both compilers
at the same time and may make one of the two compilers operate
improperly if set during invocation of the wrong compiler. It is also
very important that the linker uses the proper @file{libgcc.a} GCC
library -- that is, the one from the C++ compiler installation. The
-implicit link command as suggested in the gnatmake command from the
-former example can be replaced by an explicit link command with the
-full-verbosity option in order to verify which library is used:
+implicit link command as suggested in the @command{gnatmake} command
+from the former example can be replaced by an explicit link command with
+the full-verbosity option in order to verify which library is used:
@smallexample
$ gnatbind ada_unit
$ gnatlink -v -v ada_unit file1.o file2.o --LINK=c++
@@ -3045,7 +3049,7 @@ $ gnatlink ada_unit file1.o file2.o --LINK=./my_script
Where CC is the name of the non-GNU C++ compiler.
If the @code{zero cost} exception mechanism is used, and the platform
-supports automatic registration of exception tables (e.g. Solaris or IRIX),
+supports automatic registration of exception tables (e.g.@: Solaris or IRIX),
paths to more objects are required:
@smallexample
@@ -3058,7 +3062,7 @@ $ gnatlink ada_unit file1.o file2.o --LINK=./my_script
@end smallexample
If the @code{zero cost} exception mechanism is used, and the platform
-doesn't support automatic registration of exception tables (e.g. HP-UX,
+doesn't support automatic registration of exception tables (e.g.@: HP-UX,
Tru64 or AIX), the simple approach described above will not work and
a pre-linking phase using GNAT will be necessary.
@@ -3396,10 +3400,10 @@ finalizing the Ada run-time system along the way:
@b{#include} <iostream>
@b{using namespace} std;
-void Check_Carnivore (Carnivore *obj) @{ ... @}
-void Check_Domestic (Domestic *obj) @{ ... @}
-void Check_Animal (Animal *obj) @{ ... @}
-void Check_Dog (Dog *obj) @{ ... @}
+void Check_Carnivore (Carnivore *obj) @{@dots{}@}
+void Check_Domestic (Domestic *obj) @{@dots{}@}
+void Check_Animal (Animal *obj) @{@dots{}@}
+void Check_Dog (Dog *obj) @{@dots{}@}
@b{extern} "C" @{
void adainit (void);
@@ -3608,7 +3612,7 @@ compiled.
@cindex cannot generate code
If you attempt to compile any of these files, you will get one of the
-following error messages (where fff is the name of the file you compiled):
+following error messages (where @var{fff} is the name of the file you compiled):
@smallexample
cannot generate code for file @var{fff} (package spec)
@@ -3808,7 +3812,7 @@ configuration pragmas @code{Assertion_Policy} and @code{Debug_Policy}.
@item -gnatA
@cindex @option{-gnatA} (@command{gcc})
-Avoid processing @file{gnat.adc}. If a gnat.adc file is present,
+Avoid processing @file{gnat.adc}. If a @file{gnat.adc} file is present,
it will be ignored.
@item -gnatb
@@ -4025,7 +4029,7 @@ Verbose mode. Full error output with source lines to @file{stdout}.
Control level of validity checking. See separate section describing
this feature.
-@item ^-gnatw@var{xxx}^/WARNINGS=(@var{option}[,...])^
+@item ^-gnatw@var{xxx}^/WARNINGS=(@var{option}[,@dots{}])^
@cindex @option{^-gnatw^/WARNINGS^} (@command{gcc})
Warning mode where
^@var{xxx} is a string of option letters that^the list of options^ denotes
@@ -4046,7 +4050,7 @@ Wide character encoding method
@cindex @option{-gnatx} (@command{gcc})
Suppress generation of cross-reference information.
-@item ^-gnaty^/STYLE_CHECKS=(option,option..)^
+@item ^-gnaty^/STYLE_CHECKS=(option,option@dots{})^
@cindex @option{^-gnaty^/STYLE_CHECKS^} (@command{gcc})
Enable built-in style checks (@pxref{Style Checking}).
@@ -4141,7 +4145,7 @@ Equivalent to @option{/OPTIMIZE=NONE}.
This is the default behavior in the absence of an @option{/OPTIMIZE}
qualifier.
-@item /OPTIMIZE[=(keyword[,...])]
+@item /OPTIMIZE[=(keyword[,@dots{}])]
@cindex @option{/OPTIMIZE} (@code{GNAT COMPILE})
Selects the level of optimization for your program. The supported
keywords are as follows:
@@ -4397,7 +4401,7 @@ warning messages generated.
@item -^gnatl^OUTPUT_FILE^=file
@cindex @option{^-gnatl^OUTPUT_FILE^=fname} (@command{gcc})
-This has the same effect as @code{-gnatl} except that the output is
+This has the same effect as @option{-gnatl} except that the output is
written to a file instead of to standard output. If the given name
@file{fname} does not start with a period, then it is the full name
of the file to be written. If @file{fname} is an extension, it is
@@ -4521,7 +4525,7 @@ illegalities are detected in the program. The use of @option{-gnatQ} forces
generation of the @file{ALI} file. This file is marked as being in
error, so it cannot be used for binding purposes, but it does contain
reasonably complete cross-reference information, and thus may be useful
-for use by tools (e.g. semantic browsing tools or integrated development
+for use by tools (e.g., semantic browsing tools or integrated development
environments) that are driven from the @file{ALI} file. This switch
implies @option{-gnatq}, since the semantic phase must be run to get a
meaningful ALI file.
@@ -5230,7 +5234,7 @@ an Assert pragma that checks the low bound, for example:
@smallexample @c ada
procedure K (S : String) is
pragma Assert (S'First = 1);
- ...
+ @dots{}
@end smallexample
@item -gnatwx
@@ -5551,7 +5555,7 @@ the shift operators defined as intrinsic in package @code{Interfaces}
and operands for attributes such as @code{Pos}. Checks are also made
on individual component values for composite comparisons, and on the
expressions in type conversions and qualified expressions. Checks are
-also made on explicit ranges using .. (e.g. slices, loops etc).
+also made on explicit ranges using @samp{..} (e.g.@: slices, loops etc).
@item -gnatVp
@emph{Validity checks for parameters.}
@@ -5637,7 +5641,7 @@ temporary disabling of validity checks.
@findex Style checking
@noindent
-The @option{-gnaty^x^(option,option,...)^} switch
+The @option{-gnaty^x^(option,option,@dots{})^} switch
@cindex @option{-gnaty} (@command{gcc})
causes the compiler to
enforce specified style rules. A limited set of style rules has been used
@@ -5646,7 +5650,7 @@ to activate all or some of these checks. If the source program fails a
specified style check, an appropriate warning message is given, preceded by
the character sequence ``(style)''.
@ifset vms
-@code{(option,option,...)} is a sequence of keywords
+@code{(option,option,@dots{})} is a sequence of keywords
@end ifset
@ifclear vms
The string @var{x} is a sequence of letters or digits
@@ -5722,9 +5726,9 @@ including @command{gnatprep} (where ``@code{--!}'' is used) and the SPARK
annotation
language (where ``@code{--#}'' is used). For the purposes of this rule, a
special character is defined as being in one of the ASCII ranges
-@code{16#21#..16#2F#} or @code{16#3A#..16#3F#}.
+@code{16#21#@dots{}16#2F#} or @code{16#3A#@dots{}16#3F#}.
Note that this usage is not permitted
-in GNAT implementation units (i.e. when @option{-gnatg} is used).
+in GNAT implementation units (i.e., when @option{-gnatg} is used).
@item
A line consisting entirely of minus signs, possibly preceded by blanks, is
@@ -5914,10 +5918,10 @@ to match the presentation in the Ada Reference Manual (for example,
@emph{Check order of subprogram bodies.}
If the ^letter o^word ORDERED_SUBPROGRAMS^ appears in the string
after @option{-gnaty} then all subprogram bodies in a given scope
-(e.g. a package body) must be in alphabetical order. The ordering
+(e.g.@: a package body) must be in alphabetical order. The ordering
rule uses normal Ada rules for comparing strings, ignoring casing
of letters, except that if there is a trailing numeric suffix, then
-the value of this suffix is used in the ordering (e.g. Junk2 comes
+the value of this suffix is used in the ordering (e.g.@: Junk2 comes
before Junk10).
@item ^p^PRAGMA^
@@ -6108,7 +6112,7 @@ X2 : Integer range 1 .. 5 := 5;
X3 : Integer := Integer'Last;
X4 : Integer range 1 .. 5 := 5;
F : Float := 2.0E+20;
-...
+@dots{}
X1 := X1 + 1;
X2 := X2 + 1;
X3 := Integer (F);
@@ -6599,7 +6603,7 @@ into calls to the tasking run-time routines. A unique capability of GNAT
is to list this expanded code in a form very close to normal Ada source.
This is very useful in understanding the implications of various Ada
usage on the efficiency of the generated code. There are many cases in
-Ada (e.g. the use of controlled types), where simple Ada statements can
+Ada (e.g.@: the use of controlled types), where simple Ada statements can
generate a lot of run-time code. By using @option{-gnatG} you can identify
these cases, and consider whether it may be desirable to modify the coding
approach to improve efficiency.
@@ -6668,7 +6672,7 @@ An implicit call to a run-time support routine
(to meet the requirement of H.3.1(9) in a
convenient manner).
-@item @var{expr} && @var{expr} && @var{expr} ... && @var{expr}
+@item @var{expr} && @var{expr} && @var{expr} @dots{} && @var{expr}
A multiple concatenation (same effect as @var{expr} & @var{expr} &
@var{expr}, but handled more efficiently).
@@ -6725,13 +6729,13 @@ the @option{-gnatR} switch). For @option{-gnatR1} (which is the default,
so @option{-gnatR} with no parameter has the same effect), size and alignment
information is listed for declared array and record types. For
@option{-gnatR2}, size and alignment information is listed for all
-declared types and objects. Finally @code{-gnatR3} includes symbolic
+declared types and objects. Finally @option{-gnatR3} includes symbolic
expressions for values that are computed at run time for
variant records. These symbolic expressions have a mostly obvious
format with #n being used to represent the value of the n'th
discriminant. See source files @file{repinfo.ads/adb} in the
@code{GNAT} sources for full details on the format of @option{-gnatR3}
-output. If the switch is followed by an s (e.g. @option{-gnatR2s}), then
+output. If the switch is followed by an s (e.g.@: @option{-gnatR2s}), then
the output is to a file with the name @file{^file.rep^file_REP^} where
file is the name of the corresponding source file.
@end ifclear
@@ -6754,7 +6758,7 @@ discriminant. See source files @file{REPINFO.ADS/ADB} in the
@code{GNAT} sources for full details on the format of
@option{/REPRESENTATION_INFO=SYMBOLIC} output.
If _FILE is added at the end of an option
-(e.g. @option{/REPRESENTATION_INFO=ARRAYS_FILE}),
+(e.g.@: @option{/REPRESENTATION_INFO=ARRAYS_FILE}),
then the output is to a file with the name @file{file_REP} where
file is the name of the corresponding source file.
@end ifset
@@ -7051,9 +7055,9 @@ This switch is similar to switch @option{^-D^/ASSOCIATE^} of @code{gnatprep}.
The GCC technology provides a wide range of target dependent
@option{-m} switches for controlling
details of code generation with respect to different versions of
-architectures. This includes variations in instruction sets (e.g.
+architectures. This includes variations in instruction sets (e.g.@:
different members of the power pc family), and different requirements
-for optimal arrangement of instructions (e.g. different members of
+for optimal arrangement of instructions (e.g.@: different members of
the x86 family). The list of available @option{-m} switches may be
found in the GCC documentation.
@@ -7080,7 +7084,7 @@ unless you actually see a performance improvement.
@noindent
On VMS, GNAT compiled programs return POSIX-style codes by default,
-e.g. @option{/RETURN_CODES=POSIX}.
+e.g.@: @option{/RETURN_CODES=POSIX}.
To enable VMS style return codes, use GNAT BIND and LINK with the option
@option{/RETURN_CODES=VMS}. For example:
@@ -7123,20 +7127,20 @@ Each directory named by an @option{^-I^/SOURCE_SEARCH^} switch given on the
@item
@findex ADA_PRJ_INCLUDE_FILE
Each of the directories listed in the text file whose name is given
-by the @code{ADA_PRJ_INCLUDE_FILE} ^environment variable^logical name^.
+by the @env{ADA_PRJ_INCLUDE_FILE} ^environment variable^logical name^.
@noindent
-@code{ADA_PRJ_INCLUDE_FILE} is normally set by gnatmake or by the ^gnat^GNAT^
+@env{ADA_PRJ_INCLUDE_FILE} is normally set by gnatmake or by the ^gnat^GNAT^
driver when project files are used. It should not normally be set
by other means.
@item
@findex ADA_INCLUDE_PATH
Each of the directories listed in the value of the
-@code{ADA_INCLUDE_PATH} ^environment variable^logical name^.
+@env{ADA_INCLUDE_PATH} ^environment variable^logical name^.
@ifclear vms
Construct this value
-exactly as the @code{PATH} environment variable: a list of directory
+exactly as the @env{PATH} environment variable: a list of directory
names separated by colons (semicolons when working with the NT version).
@end ifclear
@ifset vms
@@ -7637,13 +7641,13 @@ The @var{xxx} ^string specified with the switch^option^ may be either
@item ``@option{^lo^LOW^}'' for the lowest possible value
@item ``@option{^hi^HIGH^}'' for the highest possible value
@item ``@option{xx}'' for a value consisting of repeated bytes with the
-value 16#xx# (i.e. xx is a string of two hexadecimal digits).
+value 16#xx# (i.e., xx is a string of two hexadecimal digits).
@end itemize
In addition, you can specify @option{-Sev} to indicate that the value is
to be set at run time. In this case, the program will look for an environment
@cindex GNAT_INIT_SCALARS
-variable of the form @code{GNAT_INIT_SCALARS=xx}, where xx is one
+variable of the form @env{GNAT_INIT_SCALARS=xx}, where xx is one
of @option{in/lo/hi/xx} with the same meanings as above.
If no environment variable is found, or if it does not have a valid value,
then the default is @option{in} (invalid values).
@@ -7779,7 +7783,7 @@ specify this switch, the binder will not detect that the object
file is out of date with respect to the source file. Note that this is the
mode that is automatically used by @command{gnatmake} because in this
case the checking against sources has already been performed by
-@command{gnatmake} in the course of compilation (i.e. before binding).
+@command{gnatmake} in the course of compilation (i.e.@: before binding).
@ifset vms
@item /READ_SOURCES=AVAILABLE
@@ -8129,20 +8133,20 @@ command line, in the order given.
@item
@findex ADA_PRJ_OBJECTS_FILE
Each of the directories listed in the text file whose name is given
-by the @code{ADA_PRJ_OBJECTS_FILE} ^environment variable^logical name^.
+by the @env{ADA_PRJ_OBJECTS_FILE} ^environment variable^logical name^.
@noindent
-@code{ADA_PRJ_OBJECTS_FILE} is normally set by gnatmake or by the ^gnat^GNAT^
+@env{ADA_PRJ_OBJECTS_FILE} is normally set by gnatmake or by the ^gnat^GNAT^
driver when project files are used. It should not normally be set
by other means.
@item
@findex ADA_OBJECTS_PATH
Each of the directories listed in the value of the
-@code{ADA_OBJECTS_PATH} ^environment variable^logical name^.
+@env{ADA_OBJECTS_PATH} ^environment variable^logical name^.
@ifset unw
Construct this value
-exactly as the @code{PATH} environment variable: a list of directory
+exactly as the @env{PATH} environment variable: a list of directory
names separated by colons (semicolons when working with the NT version
of GNAT).
@end ifset
@@ -8333,13 +8337,13 @@ units, or in @code{Import} pragmas in any Ada units.
@var{linker options} is an optional list of linker specific
switches.
-The default linker called by gnatlink is @var{gcc} which in
+The default linker called by gnatlink is @command{gcc} which in
turn calls the appropriate system linker.
Standard options for the linker such as @option{-lmy_lib} or
@option{-Ldir} can be added as is.
For options that are not recognized by
-@var{gcc} as linker options, use the @var{gcc} switches @option{-Xlinker} or
-@option{-Wl,}.
+@command{gcc} as linker options, use the @command{gcc} switches
+@option{-Xlinker} or @option{-Wl,}.
Refer to the GCC documentation for
details. Here is an example showing how to generate a linker map:
@@ -8362,9 +8366,9 @@ presented to the linker.
@ifset vms
@command{gnatlink} accepts the following types of extra files on the command
-line: objects (.OBJ), libraries (.OLB), sharable images (.EXE), and
-options files (.OPT). These are recognized and handled according to their
-extension.
+line: objects (@file{.OBJ}), libraries (@file{.OLB}), sharable images
+(@file{.EXE}), and options files (@file{.OPT}). These are recognized and
+handled according to their extension.
@end ifset
@node Switches for gnatlink
@@ -8590,7 +8594,7 @@ If @code{switches} are present, they can be placed before the first
If @var{mode_switches} are present, they must always be placed after
the last @var{file_name} and all @code{switches}.
-If you are using standard file extensions (.adb and .ads), then the
+If you are using standard file extensions (@file{.adb} and @file{.ads}), then the
extension may be omitted from the @var{file_name} arguments. However, if
you are using non-standard extensions, then it is required that the
extension be given. A relative or absolute directory path can be
@@ -8838,7 +8842,7 @@ stamp differences when the only
modifications to a source file consist in adding/removing comments,
empty lines, spaces or tabs. This means that if you have changed the
comments in a source file or have simply reformatted it, using this
-switch will tell gnatmake not to recompile files that depend on it
+switch will tell @command{gnatmake} not to recompile files that depend on it
(provided other sources on which these files depend have undergone no
semantic modifications). Note that the debugging information may be
out of date with respect to the sources if the @option{-m} switch causes
@@ -8976,7 +8980,7 @@ then the finalization routines.
@item @command{gcc} @asis{switches}
@ifclear vms
Any uppercase or multi-character switch that is not a @command{gnatmake} switch
-is passed to @command{gcc} (e.g. @option{-O}, @option{-gnato,} etc.)
+is passed to @command{gcc} (e.g.@: @option{-O}, @option{-gnato,} etc.)
@end ifclear
@ifset vms
Any qualifier that cannot be recognized as a qualifier for @code{GNAT MAKE}
@@ -9411,7 +9415,7 @@ exception handlers are used. The reason is that certain sections of code
have to be marked as non-abortable.
If you use neither the @code{abort} statement, nor asynchronous transfer
-of control (@code{select .. then abort}), then this distributed overhead
+of control (@code{select @dots{} then abort}), then this distributed overhead
is removed, which may have a general positive effect in improving
overall performance. Especially code involving frequent use of tasking
constructs and controlled types will show much improved performance.
@@ -9709,13 +9713,13 @@ package R is
pragma Inline (Q);
end R;
package body R is
- ...
+ @dots{}
end R;
with R;
procedure Main is
begin
- ...
+ @dots{}
R.Q;
end Main;
@end cartouche
@@ -9765,15 +9769,15 @@ it actually improves performance.
@subsection Other Optimization Switches
@cindex Optimization Switches
-Since @code{GNAT} uses the @code{gcc} back end, all the specialized
-@code{gcc} optimization switches are potentially usable. These switches
+Since @code{GNAT} uses the @command{gcc} back end, all the specialized
+@command{gcc} optimization switches are potentially usable. These switches
have not been extensively tested with GNAT but can generally be expected
to work. Examples of switches in this category are
@option{-funroll-loops} and
the various target-specific @option{-m} options (in particular, it has been
observed that @option{-march=pentium4} can significantly improve performance
on appropriate machines). For full details of these switches, see the
-@code{gcc} manual.
+@command{gcc} manual.
@node Optimization and Strict Aliasing
@subsection Optimization and Strict Aliasing
@@ -9796,16 +9800,16 @@ procedure R is
type Int2A is access Int2;
Int1V : Int1A;
Int2V : Int2A;
- ...
+ @dots{}
begin
- ...
+ @dots{}
for J in Data'Range loop
if Data (J) = Int1V.all then
Int2V.all := Int2V.all + 1;
end if;
end loop;
- ...
+ @dots{}
end R;
@end cartouche
@end smallexample
@@ -9868,8 +9872,8 @@ end;
@end smallexample
@noindent
-This program prints out 0 in @code{-O0} or @code{-O1}
-mode, but it prints out 1 in @code{-O2} mode. That's
+This program prints out 0 in @option{-O0} or @option{-O1}
+mode, but it prints out 1 in @option{-O2} mode. That's
because in strict aliasing mode, the compiler can and
does assume that the assignment to @code{v2.all} could not
affect the value of @code{v1.all}, since different types
@@ -9907,19 +9911,19 @@ the suspicious @code{Unchecked_Conversion}.
As implied by the warning message, there are approaches you can use to
avoid the unwanted strict aliasing optimization in a case like this.
-One possibility is to simply avoid the use of @code{-O2}, but
+One possibility is to simply avoid the use of @option{-O2}, but
that is a bit drastic, since it throws away a number of useful
optimizations that do not involve strict aliasing assumptions.
A less drastic approach is to compile the program using the
-option @code{-fno-strict-aliasing}. Actually it is only the
+option @option{-fno-strict-aliasing}. Actually it is only the
unit containing the dereferencing of the suspicious pointer
that needs to be compiled. So in this case, if we compile
unit @code{m} with this switch, then we get the expected
value of zero printed. Analyzing which units might need
the switch can be painful, so a more reasonable approach
-is to compile the entire program with options @code{-O2}
-and @code{-fno-strict-aliasing}. If the performance is
+is to compile the entire program with options @option{-O2}
+and @option{-fno-strict-aliasing}. If the performance is
satisfactory with this combination of options, then the
advantage is that the entire issue of possible "wrong"
optimization due to strict aliasing is avoided.
@@ -10268,8 +10272,8 @@ function or data in a separate section in the resulting object file.
Once the objects and static libraries are created with these options, the
linker can perform the dead code elimination. You can do this by setting
the @option{-Wl,--gc-sections} option to gcc command or in the
-@option{-largs} section of gnatmake. This will perform a garbage collection of
-code and data never referenced.
+@option{-largs} section of @command{gnatmake}. This will perform a
+garbage collection of code and data never referenced.
If the linker performs a partial link (@option{-r} ld linker option), then you
will need to provide one or several entry point using the
@@ -10455,7 +10459,7 @@ in which GNAT processes the ACVC tests.
The @code{gnatchop} command has the form:
@smallexample
-$ gnatchop switches @var{file name} [@var{file name} @var{file name} ...]
+$ gnatchop switches @var{file name} [@var{file name} @var{file name} @dots{}]
[@var{directory}]
@end smallexample
@@ -10975,7 +10979,7 @@ gnatname ^-Pprj -f"*.c"^/PROJECT_FILE=PRJ /FOREIGN_PATTERN=*.C^ "*.ada"
@noindent
will look for Ada units in all files with the @file{.ada} extension,
and will add to the list of file for project @file{prj.gpr} the C files
-with extension ".^c^C^".
+with extension @file{.^c^C^}.
@item ^-h^/HELP^
@cindex @option{^-h^/HELP^} (@code{gnatname})
@@ -11666,7 +11670,7 @@ files is located in its respective project file directory. Schematically:
@noindent
We want to develop an application in directory @file{^/app^[APP]^} that
@code{with} the packages @code{GUI} and @code{Comm}, using the properties of
-the corresponding project files (e.g. the ^switch^switch^ settings
+the corresponding project files (e.g.@: the ^switch^switch^ settings
and object directory).
Skeletal code for a main procedure might be something like the following:
@@ -11674,9 +11678,9 @@ Skeletal code for a main procedure might be something like the following:
@group
with GUI, Comm;
procedure App_Main is
- ...
+ @dots{}
begin
- ...
+ @dots{}
end App_Main;
@end group
@end smallexample
@@ -12020,7 +12024,7 @@ A @emph{string expression} is either a @emph{simple string expression} or a
A @emph{simple string expression} is one of the following:
@itemize @bullet
-@item A literal string; e.g.@code{"comm/my_proj.gpr"}
+@item A literal string; e.g.@: @code{"comm/my_proj.gpr"}
@item A string-valued variable reference (@pxref{Variables})
@item A string-valued attribute reference (@pxref{Attributes})
@item An external reference (@pxref{External References in Project Files})
@@ -12518,7 +12522,7 @@ in the project file.
@end smallexample
@noindent
-The attribute @var{Object_Dir} has a string value, the path name of the object
+The attribute @code{Object_Dir} has a string value, the path name of the object
directory. The path name may be absolute or relative to the directory of the
project file. This directory must already exist, and be readable and writable.
@@ -12541,7 +12545,7 @@ in the project file.
@end smallexample
@noindent
-The attribute @var{Exec_Dir} has a string value, the path name of the exec
+The attribute @code{Exec_Dir} has a string value, the path name of the exec
directory. The path name may be absolute or relative to the directory of the
project file. This directory must already exist, and be writable.
@@ -12688,7 +12692,7 @@ source files.
with "project1", "utilities.gpr";
with "/namings/apex.gpr";
project Main is
- ...
+ @dots{}
@end group
@end smallexample
@@ -12815,7 +12819,7 @@ modified versions of some of the source files, without changing the original
sources. This can be achieved through the @emph{project extension} facility.
@smallexample @c projectfile
- project Modified_Utilities extends "/baseline/utilities.gpr" is ...
+ project Modified_Utilities extends "/baseline/utilities.gpr" is @dots{}
@end smallexample
@noindent
@@ -12894,7 +12898,7 @@ This project hierarchy will need to be extended as follows:
Create project A1 that extends A, placing modified P1 there:
@smallexample @c 0projectfile
-project A1 extends "(...)/A" is
+project A1 extends "(@dots{})/A" is
end A1;
@end smallexample
@@ -12903,8 +12907,8 @@ Create project C1 that "extends all" C and imports A1, placing modified
P3 there:
@smallexample @c 0projectfile
-with "(...)/A1";
-project C1 extends all "(...)/C" is
+with "(@dots{})/A1";
+project C1 extends all "(@dots{})/C" is
end C1;
@end smallexample
@end enumerate
@@ -12969,7 +12973,7 @@ an attribute declaration.
Mode : Mode_Type := external ("MODE");
case Mode is
when "Debug" =>
- ...
+ @dots{}
@end group
@end smallexample
@@ -13029,7 +13033,7 @@ the project file for an imported project.
with "/global/apex.gpr";
project Example is
package Naming renames Apex.Naming;
- ...
+ @dots{}
end Example;
@end group
@end smallexample
@@ -13169,14 +13173,14 @@ You can define the following attributes in package @code{Naming}:
@table @code
-@item @var{Casing}
+@item @code{Casing}
This must be a string with one of the three values @code{"lowercase"},
@code{"uppercase"} or @code{"mixedcase"}; these strings are case insensitive.
@noindent
-If @var{Casing} is not specified, then the default is @code{"lowercase"}.
+If @code{Casing} is not specified, then the default is @code{"lowercase"}.
-@item @var{Dot_Replacement}
+@item @code{Dot_Replacement}
This must be a string whose value satisfies the following conditions:
@itemize @bullet
@@ -13191,7 +13195,7 @@ is @code{"."}
@noindent
If @code{Dot_Replacement} is not specified, then the default is @code{"-"}.
-@item @var{Spec_Suffix}
+@item @code{Spec_Suffix}
This is an associative array (indexed by the programming language name, case
insensitive) whose value is a string that must satisfy the following
conditions:
@@ -13204,7 +13208,7 @@ conditions:
If @code{Spec_Suffix ("Ada")} is not specified, then the default is
@code{"^.ads^.ADS^"}.
-@item @var{Body_Suffix}
+@item @code{Body_Suffix}
This is an associative array (indexed by the programming language name, case
insensitive) whose value is a string that must satisfy the following
conditions:
@@ -13223,7 +13227,7 @@ if the longest suffix is @code{Spec_Suffix ("Ada")}.
If @code{Body_Suffix ("Ada")} is not specified, then the default is
@code{"^.adb^.ADB^"}.
-@item @var{Separate_Suffix}
+@item @code{Separate_Suffix}
This must be a string whose value satisfies the same conditions as
@code{Body_Suffix}. The same "longest suffix" rules apply.
@@ -13231,7 +13235,7 @@ This must be a string whose value satisfies the same conditions as
If @code{Separate_Suffix ("Ada")} is not specified, then it defaults to same
value as @code{Body_Suffix ("Ada")}.
-@item @var{Spec}
+@item @code{Spec}
@noindent
You can use the associative array attribute @code{Spec} to define
the source file name for an individual Ada compilation unit's spec. The array
@@ -13244,7 +13248,7 @@ operating system).
for Spec ("MyPack.MyChild") use "mypack.mychild.spec";
@end smallexample
-@item @var{Body}
+@item @code{Body}
You can use the associative array attribute @code{Body} to
define the source file name for an individual Ada compilation unit's body
@@ -13799,7 +13803,7 @@ end Proj4;
-- Ada source file:
with Pack;
procedure Foo_Main is
- ...
+ @dots{}
end Foo_Main;
@end group
@end smallexample
@@ -14252,7 +14256,7 @@ It is also possible to invoke some of the tools,
@code{^gnatmetric^gnatmetric^}),
and @code{^gnatpp^gnatpp^})
on a set of project units thanks to the combination of the switches
-@code{-P}, @code{-U} and possibly the main unit when one is interested
+@option{-P}, @option{-U} and possibly the main unit when one is interested
in its closure. For instance,
@smallexample
gnat metric -Pproj
@@ -14596,7 +14600,7 @@ use the @code{gnat} driver (see @ref{The GNAT Driver and Project Files}).
@noindent
The command invocation for @code{gnatxref} is:
@smallexample
-$ gnatxref [switches] sourcefile1 [sourcefile2 ...]
+$ gnatxref [switches] sourcefile1 [sourcefile2 @dots{}]
@end smallexample
@noindent
@@ -14728,7 +14732,7 @@ The command line for @code{gnatfind} is:
@smallexample
$ gnatfind [switches] pattern[:sourcefile[:line[:column]]]
- [file1 file2 ...]
+ [file1 file2 @dots{}]
@end smallexample
@noindent
@@ -14762,21 +14766,23 @@ is a decimal integer identifying the exact location on the
line of the first character of the identifier for the
entity reference. Columns are numbered from 1.
-@item file1 file2 ...
+@item file1 file2 @dots{}
The search will be restricted to these source files. If none are given, then
the search will be done for every library file in the search path.
These file must appear only after the pattern or sourcefile.
These file names are considered to be regular expressions, so for instance
-specifying 'source*.adb' is the same as giving every file in the current
-directory whose name starts with 'source' and whose extension is 'adb'.
+specifying @file{source*.adb} is the same as giving every file in the current
+directory whose name starts with @file{source} and whose extension is
+@file{adb}.
The location of the spec of the entity will always be displayed, even if it
-isn't in one of file1, file2,... The occurrences of the entity in the
-separate units of the ones given on the command line will also be displayed.
+isn't in one of @file{file1}, @file{file2},@enddots{} The occurrences
+of the entity in the separate units of the ones given on the command
+line will also be displayed.
Note that if you specify at least one file in this part, @code{gnatfind} may
-sometimes not be able to find the body of the subprograms...
+sometimes not be able to find the body of the subprograms.
@end table
@@ -15040,7 +15046,7 @@ reference manual style BNF is as follows
@leftskip=.5cm
@end iftex
@group
-regexp ::= term @{| term@} -- alternation (term or term ...)
+regexp ::= term @{| term@} -- alternation (term or term @dots{})
term ::= item @{item@} -- concatenation (item then item)
@@ -15067,10 +15073,11 @@ Following are a few examples:
@table @samp
@item abcde|fghi
-will match any of the two strings 'abcde' and 'fghi'.
+will match any of the two strings @samp{abcde} and @samp{fghi},
@item abc*d
-will match any string like 'abd', 'abcd', 'abccd', 'abcccd', and so on
+will match any string like @samp{abd}, @samp{abcd}, @samp{abccd},
+@samp{abcccd}, and so on,
@item [a-z]+
will match any string which has only lowercase characters in it (and at
@@ -15630,16 +15637,16 @@ These switches allow control over line length and indentation.
@table @option
@item ^-M@i{nnn}^/LINE_LENGTH_MAX=@i{nnn}^
@cindex @option{^-M^/LINE_LENGTH^} (@command{gnatpp})
-Maximum line length, @i{nnn} from 32 ..256, the default value is 79
+Maximum line length, @i{nnn} from 32@dots{}256, the default value is 79
@item ^-i@i{nnn}^/INDENTATION_LEVEL=@i{nnn}^
@cindex @option{^-i^/INDENTATION_LEVEL^} (@command{gnatpp})
-Indentation level, @i{nnn} from 1 .. 9, the default value is 3
+Indentation level, @i{nnn} from 1@dots{}9, the default value is 3
@item ^-cl@i{nnn}^/CONTINUATION_INDENT=@i{nnn}^
@cindex @option{^-cl^/CONTINUATION_INDENT^} (@command{gnatpp})
Indentation level for continuation lines (relative to the line being
-continued), @i{nnn} from 1 .. 9.
+continued), @i{nnn} from 1@dots{}9.
The default
value is one less then the (normal) indentation level, unless the
indentation is set to 1 (in which case the default value for continuation
@@ -16030,7 +16037,7 @@ that has a special format (that is, a character that is neither a letter nor dig
not white space nor line break immediately following the leading @code{--} of
the comment) should be without any change moved from the argument source
into reformatted source. This switch allows to preserve comments that are used
-as a special marks in the code (e.g. SPARK annotation).
+as a special marks in the code (e.g.@: SPARK annotation).
@node Construct Layout
@subsection Construct Layout
@@ -17032,13 +17039,15 @@ Take the unit name and replace all dots by hyphens.
@item
If such a replacement occurs in the
second character position of a name, and the first character is
-^a, g, s, or i^A, G, S, or I^ then replace the dot by the character
-^~ (tilde)^$ (dollar sign)^
+^@samp{a}, @samp{g}, @samp{s}, or @samp{i}, ^@samp{A}, @samp{G}, @samp{S}, or @samp{I},^
+then replace the dot by the character
+^@samp{~} (tilde)^@samp{$} (dollar sign)^
instead of a minus.
@end itemize
The reason for this exception is to avoid clashes
with the standard names for children of System, Ada, Interfaces,
-and GNAT, which use the prefixes ^s- a- i- and g-^S- A- I- and G-^
+and GNAT, which use the prefixes
+^@samp{s-}, @samp{a-}, @samp{i-}, and @samp{g-},^@samp{S-}, @samp{A-}, @samp{I-}, and @samp{G-},^
respectively.
The @option{^-gnatk^/FILE_NAME_MAX_LENGTH=^@var{nn}}
@@ -17074,7 +17083,7 @@ $ gnatkr @var{name} /COUNT=nn
@noindent
@var{name} is the uncrunched file name, derived from the name of the unit
-in the standard manner described in the previous section (i.e. in particular
+in the standard manner described in the previous section (i.e., in particular
all dots are replaced by hyphens). The file name may or may not have an
extension (defined as a suffix of the form period followed by arbitrary
characters other than period). If an extension is present then it will
@@ -17110,7 +17119,7 @@ unit and replacing the separating dots with hyphens and
using ^lowercase^uppercase^
for all letters, except that a hyphen in the second character position is
replaced by a ^tilde^dollar sign^ if the first character is
-^a, i, g, or s^A, I, G, or S^.
+^@samp{a}, @samp{i}, @samp{g}, or @samp{s}^@samp{A}, @samp{I}, @samp{G}, or @samp{S}^.
The extension is @code{.ads} for a
specification and @code{.adb} for a body.
Krunching does not affect the extension, but the file name is shortened to
@@ -17290,7 +17299,7 @@ being preserved in the output file.
Causes comments to be scanned. Normally comments are ignored by gnatprep.
If this option is specified, then comments are scanned and any $symbol
substitutions performed as in program text. This is particularly useful
-when structured comments are used (e.g. when writing programs in the
+when structured comments are used (e.g., when writing programs in the
SPARK dialect of Ada). Note that this switch is not available when
doing integrated preprocessing (it would be useless in this context
since comments are ignored by the compiler in any case).
@@ -17394,7 +17403,7 @@ The preprocessor conditional inclusion commands have the form
lines
#elsif @i{expression} [then]
lines
-...
+@dots{}
#else
lines
#end if;
@@ -17455,7 +17464,7 @@ preprocessor line. Any number of @code{elsif} clauses can be present,
including none at all. The @code{else} is optional, as in Ada.
The @code{#} marking the start of a preprocessor line must be the first
-non-blank character on the line, i.e. it must be preceded only by
+non-blank character on the line, i.e., it must be preceded only by
spaces or horizontal tabs.
Symbol substitution outside of preprocessor lines is obtained by using
@@ -18224,7 +18233,7 @@ responsibility of the library provider to install the necessary sources, ALI
files and libraries in the directories mentioned in the project file. For
convenience, the user's library project file should be installed in a location
that will be searched automatically by the GNAT
-builder. These are the directories referenced in the @code{ADA_PROJECT_PATH}
+builder. These are the directories referenced in the @env{ADA_PROJECT_PATH}
environment variable (@pxref{Importing Projects}), and also the default GNAT
library location that can be queried with @command{gnatls -v} and is usually of
the form $gnat_install_root/lib/gnat.
@@ -18285,7 +18294,7 @@ write:
@smallexample @c projectfile
with "my_lib";
project My_Proj is
- ...
+ @dots{}
end My_Proj;
@end smallexample
@@ -18336,11 +18345,11 @@ when the following conditions are met:
@itemize @bullet
@item
@file{/dir/my_lib_src} has been added by the user to the environment
-variable @code{ADA_INCLUDE_PATH}, or by the administrator to the file
+variable @env{ADA_INCLUDE_PATH}, or by the administrator to the file
@file{ada_source_path}
@item
@file{/dir/my_lib_obj} has been added by the user to the environment
-variable @code{ADA_OBJECTS_PATH}, or by the administrator to the file
+variable @env{ADA_OBJECTS_PATH}, or by the administrator to the file
@file{ada_object_path}
@item
a pragma @code{Linker_Options} has been added to one of the sources.
@@ -18486,7 +18495,7 @@ the object directory.
@item
Copy the @code{ALI} files of the interface to the library directory,
add in this copy an indication that it is an interface to a SAL
-(i.e. add a word @option{SL} on the line in the @file{ALI} file that starts
+(i.e., add a word @option{SL} on the line in the @file{ALI} file that starts
with letter ``P'') and make the modified copy of the @file{ALI} file
read-only.
@end itemize
@@ -18645,7 +18654,7 @@ documentation), nor does it try to replace the @command{gnatmake} utility
(@pxref{The GNAT Make Program gnatmake}).
All the examples in this section are specific to the GNU version of
-make. Although @code{make} is a standard utility, and the basic language
+make. Although @command{make} is a standard utility, and the basic language
is the same, these examples use some advanced features found only in
@code{GNU make}.
@@ -18695,7 +18704,7 @@ which might help you in case your project has a lot of subdirectories.
## csc is put in the top level directory (where the Makefile is).
## toplevel_dir __ first_csc (sources) __ lib (will contain the library)
## \_ second_csc (sources) __ lib (will contain the library)
-## \_ ...
+## \_ @dots{}
## Although this Makefile is build for shared library, it is easy to modify
## to build partial link objects instead (modify the lines with -shared and
## gnatlink below)
@@ -18717,7 +18726,7 @@ MAIN=main
# The following variable should give the directory containing libgnat.so
# You can get this directory through 'gnatls -v'. This is usually the last
# directory in the Object_Path.
-GLIB=...
+GLIB=@dots{}
# The directories for the libraries
# (This macro expands the list of CSC to the list of shared libraries, you
@@ -18737,8 +18746,8 @@ objects::
# by a new tool, gnatmlib
$@{LIB_DIR@}:
mkdir -p $@{dir $@@ @}
- cd $@{dir $@@ @}; gcc -shared -o $@{notdir $@@ @} ../*.o -L$@{GLIB@} -lgnat
- cd $@{dir $@@ @}; cp -f ../*.ali .
+ cd $@{dir $@@ @} && gcc -shared -o $@{notdir $@@ @} ../*.o -L$@{GLIB@} -lgnat
+ cd $@{dir $@@ @} && cp -f ../*.ali .
# The dependencies for the modules
# Note that we have to force the expansion of *.o, since in some cases
@@ -18767,7 +18776,7 @@ In most makefiles, you will have to specify a list of directories, and
store it in a variable. For small projects, it is often easier to
specify each of them by hand, since you then have full control over what
is the proper order for these directories, which ones should be
-included...
+included.
However, in larger projects, which might involve hundreds of
subdirectories, it might be more convenient to generate this list
@@ -18775,13 +18784,13 @@ automatically.
The example below presents two methods. The first one, although less
general, gives you more control over the list. It involves wildcard
-characters, that are automatically expanded by @code{make}. Its
+characters, that are automatically expanded by @command{make}. Its
shortcoming is that you need to explicitly specify some of the
organization of your project, such as for instance the directory tree
-depth, whether some directories are found in a separate tree,...
+depth, whether some directories are found in a separate tree, @enddots{}
The second method is the most general one. It requires an external
-program, called @code{find}, which is standard on all Unix systems. All
+program, called @command{find}, which is standard on all Unix systems. All
the directories found under a given root directory will be added to the
list.
@@ -19169,7 +19178,7 @@ It provides three type of information:
@item
General information concerning memory management, such as the total
number of allocations and deallocations, the amount of allocated
-memory and the high water mark, i.e. the largest amount of allocated
+memory and the high water mark, i.e.@: the largest amount of allocated
memory in the course of program execution.
@item
@@ -19235,7 +19244,7 @@ version of that library that has been compiled with the @option{-g} switch
Gnatmem must be supplied with the @file{gmem.out} file and the executable to
examine. If the location of @file{gmem.out} file was not explicitly supplied by
-@code{-i} switch, gnatmem will assume that this file can be found in the
+@option{-i} switch, gnatmem will assume that this file can be found in the
current directory. For example, after you have executed @file{my_program},
@file{gmem.out} can be analyzed by @code{gnatmem} using the command:
@@ -19564,7 +19573,7 @@ size stack is allocated, but this cannot be guaranteed.
@ifclear vms
To ensure that a clean exception is signalled for stack
overflow, set the environment variable
-@code{GNAT_STACK_LIMIT} to indicate the maximum
+@env{GNAT_STACK_LIMIT} to indicate the maximum
stack area that can be used, as in:
@cindex GNAT_STACK_LIMIT
@@ -19657,7 +19666,7 @@ With this option, at each task termination, its stack usage is output on
It is not always convenient to output the stack usage when the program
is still running. Hence, it is possible to delay this output until program
termination. for a given number of tasks specified as the argument of the
-@code{-u} option. For instance:
+@option{-u} option. For instance:
@smallexample
$ gnatbind -u100 file
@@ -19693,7 +19702,7 @@ and max values.
@end table
@noindent
-The environment task stack, e.g. the stack that contains the main unit, is
+The environment task stack, e.g., the stack that contains the main unit, is
only processed when the environment variable GNAT_STACK_LIMIT is set.
@@ -20141,7 +20150,7 @@ flagged (since @code{1..N} is formally a ``range''):
@smallexample @c ada
for I in 1 .. N loop
- ...
+ @dots{}
end loop;
@end smallexample
@@ -20150,9 +20159,9 @@ Declaring an explicit subtype solves the problem:
@smallexample @c ada
subtype S is Integer range 1..N;
-...
+@dots{}
for I in S loop
- ...
+ @dots{}
end loop;
@end smallexample
@@ -21781,7 +21790,7 @@ If you do not specify an extension, it will default to @file{htm}.
@item -f
@cindex @option{-f} (@code{gnathtml})
By default, gnathtml will generate html links only for global entities
-('with'ed units, global variables and types,...). If you specify
+('with'ed units, global variables and types,@dots{}). If you specify
@option{-f} on the command line, then links will be generated for local
entities too.
@@ -21954,9 +21963,9 @@ separate from the generated code. It makes the object files considerably
larger, but it does not add to the size of the actual executable that
will be loaded into memory, and has no impact on run-time performance. The
generation of debug information is triggered by the use of the
-^-g^/DEBUG^ switch in the gcc or gnatmake command used to carry out
-the compilations. It is important to emphasize that the use of these
-options does not change the generated code.
+^-g^/DEBUG^ switch in the @command{gcc} or @command{gnatmake} command
+used to carry out the compilations. It is important to emphasize that
+the use of these options does not change the generated code.
The debugging information is written in standard system formats that
are used by many tools, including debuggers and profilers. The format
@@ -22029,7 +22038,7 @@ describes some of the additional commands that can be given to @code{GDB}.
@end ifset
includes extensive documentation on the use
of these commands, together with examples of their use. Furthermore,
-the command @var{help} invoked from within @code{GDB} activates a simple help
+the command @command{help} invoked from within GDB activates a simple help
facility which summarizes the available commands and their options.
In this section we summarize a few of the most commonly
used commands to give an idea of what @code{GDB} is about. You should create
@@ -22639,8 +22648,8 @@ $ addr2line --exe=stb 0x401373 0x40138b 0x40139c 0x401335 0x4011c4
0040138B at d:/stb/stb.adb:10
0040139C at d:/stb/stb.adb:14
00401335 at d:/stb/b~stb.adb:104
-004011C4 at /build/.../crt1.c:200
-004011F1 at /build/.../crt1.c:222
+004011C4 at /build/@dots{}/crt1.c:200
+004011F1 at /build/@dots{}/crt1.c:222
77E892A4 in ?? at ??:0
@end smallexample
@@ -22664,8 +22673,8 @@ $ addr2line --exe=stb --functions --demangle=gnat 0x401373 0x40138b
0040138B in stb.p2 at d:/stb/stb.adb:10
0040139C in stb at d:/stb/stb.adb:14
00401335 in main at d:/stb/b~stb.adb:104
-004011C4 in <__mingw_CRTStartup> at /build/.../crt1.c:200
-004011F1 in <mainCRTStartup> at /build/.../crt1.c:222
+004011C4 in <__mingw_CRTStartup> at /build/@dots{}/crt1.c:200
+004011F1 in <mainCRTStartup> at /build/@dots{}/crt1.c:222
@end smallexample
@noindent
@@ -23077,7 +23086,7 @@ use System.Aux_DEC;
The effect is not quite semantically identical to incorporating
the declarations directly into package @code{System},
but most programs will not notice a difference
-unless they use prefix notation (e.g. @code{System.Integer_8})
+unless they use prefix notation (e.g.@: @code{System.Integer_8})
to reference the entities directly in package @code{System}.
For units containing such references,
the prefixes must either be removed, or the pragma @code{Extend_System}
@@ -23310,7 +23319,7 @@ of declarations:
@cartouche
X, Y : Integer := Init_Func;
Q : String (X .. Y) := "abc";
-...
+@dots{}
for Q'Address use Compute_Address;
@end cartouche
@end smallexample
@@ -23325,7 +23334,7 @@ that @code{Q} is declared. To achieve the intended effect, write instead:
X, Y : Integer := Init_Func;
Q_Address : constant Address := Compute_Address;
Q : String (X .. Y) := "abc";
-...
+@dots{}
for Q'Address use Q_Address;
@end cartouche
@end group
@@ -24948,8 +24957,8 @@ and can thus execute on multiple processors.
The user can alternatively specify a processor on which the program should run
to emulate a single-processor system. The multiprocessor / uniprocessor choice
is made by
-setting the environment variable @code{GNAT_PROCESSOR}
-@cindex @code{GNAT_PROCESSOR} environment variable (on Sparc Solaris)
+setting the environment variable @env{GNAT_PROCESSOR}
+@cindex @env{GNAT_PROCESSOR} environment variable (on Sparc Solaris)
to one of the following:
@table @code
@@ -24976,7 +24985,7 @@ Run the program on the specified processor.
On GNU/Linux without NPTL support (usually system with GNU C Library
older than 2.3), the signal model is not POSIX compliant, which means
that to send a signal to the process, you need to send the signal to all
-threads, e.g. by using @code{killpg()}.
+threads, e.g.@: by using @code{killpg()}.
@node AIX-Specific Considerations
@section AIX-Specific Considerations
@@ -25633,7 +25642,7 @@ package body ada_main is
-- pragma Import because if we try to with the unit and
-- call it Ada style, then not only do we waste time
-- recompiling it, but also, we don't really know the right
- -- switches (e.g. identifier character set) to be used
+ -- switches (e.g.@: identifier character set) to be used
-- to compile it.
procedure Ada_Main_Program;
@@ -25803,7 +25812,7 @@ of that unit before elaborating the unit doing the @code{with}'ing:
@group
@cartouche
with Unit_1;
-package Unit_2 is ...
+package Unit_2 is @dots{}
@end cartouche
@end group
@end smallexample
@@ -25923,7 +25932,7 @@ is impossible to guarantee a safe order of elaboration at run time.
@noindent
In some languages that involve the same kind of elaboration problems,
-e.g. Java and C++, the programmer is expected to worry about these
+e.g.@: Java and C++, the programmer is expected to worry about these
ordering problems himself, and it is common to
write a program in which an incorrect elaboration order gives
surprising results, because it references variables before they
@@ -26235,7 +26244,7 @@ to use @code{Elaborate_All} on such units.
@section Controlling Elaboration in GNAT - Internal Calls
@noindent
-In the case of internal calls, i.e. calls within a single package, the
+In the case of internal calls, i.e., calls within a single package, the
programmer has full control over the order of elaboration, and it is up
to the programmer to elaborate declarations in an appropriate order. For
example writing:
@@ -26462,7 +26471,7 @@ end Math;
package body Math is
function Sqrt (Arg : Float) return Float is
begin
- ...
+ @dots{}
end Sqrt;
end Math;
@end group
@@ -26475,7 +26484,7 @@ end Stuff;
with Stuff;
procedure Main is
begin
- ...
+ @dots{}
end Main;
@end group
@end cartouche
@@ -26522,15 +26531,15 @@ that is not a general rule that can be followed in all cases. Consider
@smallexample @c ada
@group
@cartouche
-package X is ...
+package X is @dots{}
-package Y is ...
+package Y is @dots{}
with X;
-package body Y is ...
+package body Y is @dots{}
with Y;
-package body X is ...
+package body X is @dots{}
@end cartouche
@end group
@end smallexample
@@ -26544,7 +26553,7 @@ the body of @code{X} @code{with}'s @code{Y},
which means you would have to
elaborate the body of @code{Y} first, but that @code{with}'s @code{X},
which means
-you have to elaborate the body of @code{X} first, but ... and we have a
+you have to elaborate the body of @code{X} first, but @dots{} and we have a
loop that cannot be broken.
It is true that the binder can in many cases guess an order of elaboration
@@ -26828,7 +26837,7 @@ Here is the exact chain of events we are worrying about:
In the body of @code{Decls} a call is made from within the body of a library
task to a subprogram in the package @code{Utils}. Since this call may
occur at elaboration time (given that the task is activated at elaboration
-time), we have to assume the worst, i.e. that the
+time), we have to assume the worst, i.e., that the
call does happen at elaboration time.
@item
@@ -26960,7 +26969,7 @@ Declare separate task types.
A significant part of the problem arises because of the use of the
single task declaration form. This means that the elaboration of
-the task type, and the elaboration of the task itself (i.e. the
+the task type, and the elaboration of the task itself (i.e.@: the
creation of the task) happen at the same time. A good rule
of style in Ada is to always create explicit task types. By
following the additional step of placing task objects in separate
@@ -27656,9 +27665,9 @@ constants to control which code is executed.
@smallexample @c ada
@group
FP_Initialize_Required : constant Boolean := True;
-...
+@dots{}
if FP_Initialize_Required then
-...
+@dots{}
end if;
@end group
@end smallexample
@@ -27682,7 +27691,7 @@ something like:
package Config is
FP_Initialize_Required : constant Boolean := True;
Reset_Available : constant Boolean := False;
- ...
+ @dots{}
end Config;
@end group
@end smallexample
@@ -27801,8 +27810,8 @@ to add a @code{null} statement.
@smallexample @c ada
@group
-if ... then
- ... -- some statements
+if @dots{} then
+ @dots{} -- some statements
else
pragma Assert (Num_Cases < 10);
null;
@@ -27828,13 +27837,13 @@ if Small_Machine then
declare
X : Bit_String (1 .. 10);
begin
- ...
+ @dots{}
end;
else
declare
X : Large_Bit_String (1 .. 1000);
begin
- ...
+ @dots{}
end;
end if;
@end group
@@ -27845,8 +27854,8 @@ Note that in this approach, both declarations are analyzed by the
compiler so this can only be used where both declarations are legal,
even though one of them will not be used.
-Another approach is to define integer constants, e.g. @code{Bits_Per_Word}, or
-Boolean constants, e.g. @code{Little_Endian}, and then write declarations
+Another approach is to define integer constants, e.g.@: @code{Bits_Per_Word}, or
+Boolean constants, e.g.@: @code{Little_Endian}, and then write declarations
that are parameterized by these constants. For example
@smallexample @c ada
@@ -27914,9 +27923,9 @@ to compile with an Ada 95 compiler. Conceptually you want to say:
@smallexample @c ada
@group
if Ada_2005 then
- ... neat Ada 2005 code
+ @dots{} neat Ada 2005 code
else
- ... not quite as neat Ada 95 code
+ @dots{} not quite as neat Ada 95 code
end if;
@end group
@end smallexample
@@ -28395,7 +28404,7 @@ most useful (for the Intel x86 processor) are the following:
@item =
output constraint
@item g
-global (i.e. can be stored anywhere)
+global (i.e.@: can be stored anywhere)
@item m
in memory
@item I
@@ -28832,7 +28841,7 @@ following subsections treat the most likely issues to be encountered.
@node Legal Ada 83 programs that are illegal in Ada 95
@subsection Legal Ada 83 programs that are illegal in Ada 95
-Some legal Ada 83 programs are illegal (i.e. they will fail to compile) in
+Some legal Ada 83 programs are illegal (i.e., they will fail to compile) in
Ada 95 and thus also in Ada 2005:
@table @emph
@@ -28842,7 +28851,7 @@ Some uses of character literals are ambiguous. Since Ada 95 has introduced
character literals that were legal in Ada 83 are illegal in Ada 95.
For example:
@smallexample @c ada
- for Char in 'A' .. 'Z' loop ... end loop;
+ for Char in 'A' .. 'Z' loop @dots{} end loop;
@end smallexample
@noindent
@@ -28850,7 +28859,7 @@ The problem is that @code{'A'} and @code{'Z'} could be from either
@code{Character} or @code{Wide_Character}. The simplest correction
is to make the type explicit; e.g.:
@smallexample @c ada
- for Char in Character range 'A' .. 'Z' loop ... end loop;
+ for Char in Character range 'A' .. 'Z' loop @dots{} end loop;
@end smallexample
@item New reserved words
@@ -29145,7 +29154,7 @@ ways to deal with this situation:
@itemize @bullet
@item
-Modify the program to eliminate the circularities, e.g. by moving
+Modify the program to eliminate the circularities, e.g.@: by moving
elaboration-time code into explicitly-invoked procedures
@item
Constrain the elaboration order by including explicit @code{Elaborate_Body} or
@@ -29891,7 +29900,7 @@ uninstall or integrate different GNAT products.
@noindent
Make sure the system on which GNAT is installed is accessible from the
-current machine, i.e. the install location is shared over the network.
+current machine, i.e., the install location is shared over the network.
Shared resources are accessed on Windows by means of UNC paths, which
have the format @code{\\server\sharename\path}
@@ -29931,14 +29940,14 @@ $ gnatmake winprog -largs -mwindows
@noindent
It is possible to control where temporary files gets created by setting
-the TMP environment variable. The file will be created:
+the @env{TMP} environment variable. The file will be created:
@itemize
-@item Under the directory pointed to by the TMP environment variable if
+@item Under the directory pointed to by the @env{TMP} environment variable if
this directory exists.
-@item Under c:\temp, if the TMP environment variable is not set (or not
-pointing to a directory) and if this directory exists.
+@item Under @file{c:\temp}, if the @env{TMP} environment variable is not
+set (or not pointing to a directory) and if this directory exists.
@item Under the current working directory otherwise.
@end itemize
@@ -29962,7 +29971,7 @@ interoperability strategy.
If you use @command{gcc} to compile the non-Ada part of your application,
there are no Windows-specific restrictions that affect the overall
interoperability with your Ada code. If you plan to use
-Microsoft tools (e.g. Microsoft Visual C/C++), you should be aware of
+Microsoft tools (e.g.@: Microsoft Visual C/C++), you should be aware of
the following limitations:
@itemize @bullet
@@ -30411,7 +30420,7 @@ suffix) has the following structure:
EXPORTS
@i{symbol1}
@i{symbol2}
- ...
+ @dots{}
@end cartouche
@end group
@end smallexample
@@ -30471,7 +30480,7 @@ to standard output the list of entry points in the DLL. Note that if
some routines in the DLL have the @code{Stdcall} convention
(@pxref{Windows Calling Conventions}) with stripped @code{@@}@i{nn}
suffix then you'll have to edit @file{api.def} to add it, and specify
-@code{-k} to @code{gnatdll} when creating the import library.
+@option{-k} to @command{gnatdll} when creating the import library.
@noindent
Here are some hints to find the right @code{@@}@i{nn} suffix.
@@ -30568,11 +30577,11 @@ into the DLL. This is done by using the standard @command{gnatmake} tool.
@item building the DLL
-To build the DLL you must use @command{gcc}'s @code{-shared}
+To build the DLL you must use @command{gcc}'s @option{-shared}
option. It is quite simple to use this method:
@smallexample
-$ gcc -shared -o api.dll obj1.o obj2.o ...
+$ gcc -shared -o api.dll obj1.o obj2.o @dots{}
@end smallexample
It is important to note that in this case all symbols found in the
@@ -30581,7 +30590,7 @@ the set of symbols to export by passing to @command{gcc} a definition
file, @pxref{The Definition File}. For example:
@smallexample
-$ gcc -shared -o api.dll api.def obj1.o obj2.o ...
+$ gcc -shared -o api.dll api.def obj1.o obj2.o @dots{}
@end smallexample
If you use a definition file you must export the elaboration procedures
@@ -30605,7 +30614,7 @@ $ attrib +R apilib\*.ali
At this point it is possible to use the DLL by directly linking
against it. Note that you must use the GNAT shared runtime when using
-GNAT shared libraries. This is achieved by using @code{-shared} binder's
+GNAT shared libraries. This is achieved by using @option{-shared} binder's
option.
@smallexample
@@ -30706,7 +30715,7 @@ one in the main program.
It is therefore not possible to exchange GNAT run-time objects between the
Ada DLL and the main Ada program. Example of GNAT run-time objects are file
-handles (e.g. @code{Text_IO.File_Type}), tasks types, protected objects
+handles (e.g.@: @code{Text_IO.File_Type}), tasks types, protected objects
types, etc.
It is completely safe to exchange plain elementary, array or record types,
@@ -30812,7 +30821,7 @@ package body API is
return Fact;
end Factorial;
- ...
+ @dots{}
-- The remainder of this package body is unchanged.
end API;
@end cartouche
@@ -30875,7 +30884,7 @@ during the DLL build process by the @code{gnatdll} tool
@noindent
To use the services exported by the Ada DLL from another programming
-language (e.g. C), you have to translate the specs of the exported Ada
+language (e.g.@: C), you have to translate the specs of the exported Ada
entities in that language. For instance in the case of @code{API.dll},
the corresponding C header file could look like:
@@ -30903,7 +30912,7 @@ example consider a DLL comprising the following package @code{API}:
@cartouche
package API is
Count : Integer := 0;
- ...
+ @dots{}
-- Remainder of the package omitted.
end API;
@end cartouche
@@ -31009,7 +31018,7 @@ advise the reader to build relocatable DLL.
@item -b @var{address}
@cindex @option{-b} (@code{gnatdll})
Set the relocatable DLL base address. By default the address is
-@var{0x11000000}.
+@code{0x11000000}.
@item -bargs @var{opts}
@cindex @option{-bargs} (@code{gnatdll})
diff --git a/gcc/alias.c b/gcc/alias.c
index bd5c277f05a..56afa86321e 100644
--- a/gcc/alias.c
+++ b/gcc/alias.c
@@ -164,7 +164,6 @@ static int aliases_everything_p (const_rtx);
static bool nonoverlapping_component_refs_p (const_tree, const_tree);
static tree decl_for_component_ref (tree);
static rtx adjust_offset_for_component_ref (tree, rtx);
-static int nonoverlapping_memrefs_p (const_rtx, const_rtx);
static int write_dependence_p (const_rtx, const_rtx, int);
static void memory_modified_1 (rtx, const_rtx, void *);
@@ -1976,7 +1975,7 @@ adjust_offset_for_component_ref (tree x, rtx offset)
/* Return nonzero if we can determine the exprs corresponding to memrefs
X and Y and they do not overlap. */
-static int
+int
nonoverlapping_memrefs_p (const_rtx x, const_rtx y)
{
tree exprx = MEM_EXPR (x), expry = MEM_EXPR (y);
diff --git a/gcc/alias.h b/gcc/alias.h
index a24549391fe..772aea09010 100644
--- a/gcc/alias.h
+++ b/gcc/alias.h
@@ -28,6 +28,7 @@ extern alias_set_type get_varargs_alias_set (void);
extern alias_set_type get_frame_alias_set (void);
extern bool component_uses_parent_alias_set (const_tree);
extern bool alias_set_subset_of (alias_set_type, alias_set_type);
+extern int nonoverlapping_memrefs_p (const_rtx, const_rtx);
/* This alias set can be used to force a memory to conflict with all
other memories, creating a barrier across which no memory reference
diff --git a/gcc/bb-reorder.c b/gcc/bb-reorder.c
index e997dc62b33..352c9889172 100644
--- a/gcc/bb-reorder.c
+++ b/gcc/bb-reorder.c
@@ -1223,7 +1223,6 @@ find_rarely_executed_basic_blocks_and_crossing_edges (edge **crossing_edges,
int *max_idx)
{
basic_block bb;
- bool has_hot_blocks = false;
edge e;
int i;
edge_iterator ei;
@@ -1235,10 +1234,7 @@ find_rarely_executed_basic_blocks_and_crossing_edges (edge **crossing_edges,
if (probably_never_executed_bb_p (bb))
BB_SET_PARTITION (bb, BB_COLD_PARTITION);
else
- {
- BB_SET_PARTITION (bb, BB_HOT_PARTITION);
- has_hot_blocks = true;
- }
+ BB_SET_PARTITION (bb, BB_HOT_PARTITION);
}
/* Mark every edge that crosses between sections. */
@@ -1524,7 +1520,6 @@ fix_crossing_conditional_branches (void)
basic_block new_bb;
basic_block last_bb;
basic_block dest;
- basic_block prev_bb;
edge succ1;
edge succ2;
edge crossing_edge;
@@ -1605,7 +1600,6 @@ fix_crossing_conditional_branches (void)
new_bb = create_basic_block (NULL, NULL, last_bb);
new_bb->aux = last_bb->aux;
last_bb->aux = new_bb;
- prev_bb = last_bb;
last_bb = new_bb;
/* Put appropriate instructions in new bb. */
diff --git a/gcc/builtins.c b/gcc/builtins.c
index 1c140508a53..5e6ebf5d116 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -5192,6 +5192,7 @@ expand_builtin_fabs (tree exp, rtx target, rtx subtarget)
return NULL_RTX;
arg = CALL_EXPR_ARG (exp, 0);
+ CALL_EXPR_ARG (exp, 0) = arg = builtin_save_expr (arg);
mode = TYPE_MODE (TREE_TYPE (arg));
op0 = expand_expr (arg, subtarget, VOIDmode, EXPAND_NORMAL);
return expand_abs (mode, op0, target, 0, safe_from_p (target, arg, 1));
@@ -10749,6 +10750,8 @@ validate_arg (const_tree arg, enum tree_code code)
return false;
else if (code == POINTER_TYPE)
return POINTER_TYPE_P (TREE_TYPE (arg));
+ else if (code == INTEGER_TYPE)
+ return INTEGRAL_TYPE_P (TREE_TYPE (arg));
return code == TREE_CODE (TREE_TYPE (arg));
}
diff --git a/gcc/builtins.def b/gcc/builtins.def
index c3c8b2fa351..836e241a931 100644
--- a/gcc/builtins.def
+++ b/gcc/builtins.def
@@ -336,9 +336,9 @@ DEF_C99_BUILTIN (BUILT_IN_LROUNDL, "lroundl", BT_FN_LONG_LONGDOUBLE, ATTR
DEF_LIB_BUILTIN (BUILT_IN_MODF, "modf", BT_FN_DOUBLE_DOUBLE_DOUBLEPTR, ATTR_MATHFN_FPROUNDING_STORE)
DEF_C99_C90RES_BUILTIN (BUILT_IN_MODFF, "modff", BT_FN_FLOAT_FLOAT_FLOATPTR, ATTR_MATHFN_FPROUNDING_STORE)
DEF_C99_C90RES_BUILTIN (BUILT_IN_MODFL, "modfl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLEPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_GCC_BUILTIN (BUILT_IN_NAN, "nan", BT_FN_DOUBLE_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
-DEF_GCC_BUILTIN (BUILT_IN_NANF, "nanf", BT_FN_FLOAT_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
-DEF_GCC_BUILTIN (BUILT_IN_NANL, "nanl", BT_FN_LONGDOUBLE_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
+DEF_C99_BUILTIN (BUILT_IN_NAN, "nan", BT_FN_DOUBLE_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
+DEF_C99_BUILTIN (BUILT_IN_NANF, "nanf", BT_FN_FLOAT_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
+DEF_C99_BUILTIN (BUILT_IN_NANL, "nanl", BT_FN_LONGDOUBLE_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
DEF_GCC_BUILTIN (BUILT_IN_NAND32, "nand32", BT_FN_DFLOAT32_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
DEF_GCC_BUILTIN (BUILT_IN_NAND64, "nand64", BT_FN_DFLOAT64_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
DEF_GCC_BUILTIN (BUILT_IN_NAND128, "nand128", BT_FN_DFLOAT128_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
diff --git a/gcc/c-common.c b/gcc/c-common.c
index 59efb38e796..2b8790d0729 100644
--- a/gcc/c-common.c
+++ b/gcc/c-common.c
@@ -4329,10 +4329,12 @@ match_case_to_enum_1 (tree key, tree type, tree label)
TREE_INT_CST_HIGH (key), TREE_INT_CST_LOW (key));
if (TYPE_NAME (type) == 0)
- warning (0, "%Jcase value %qs not in enumerated type",
+ warning (warn_switch ? OPT_Wswitch : OPT_Wswitch_enum,
+ "%Jcase value %qs not in enumerated type",
CASE_LABEL (label), buf);
else
- warning (0, "%Jcase value %qs not in enumerated type %qT",
+ warning (warn_switch ? OPT_Wswitch : OPT_Wswitch_enum,
+ "%Jcase value %qs not in enumerated type %qT",
CASE_LABEL (label), buf, type);
}
@@ -4384,6 +4386,7 @@ c_do_switch_warnings (splay_tree cases, location_t switch_location,
splay_tree_node default_node;
splay_tree_node node;
tree chain;
+ int saved_warn_switch;
if (!warn_switch && !warn_switch_enum && !warn_switch_default)
return;
@@ -4453,7 +4456,13 @@ c_do_switch_warnings (splay_tree cases, location_t switch_location,
if (cond && tree_int_cst_compare (cond, value))
continue;
- warning (0, "%Henumeration value %qE not handled in switch",
+ /* If there is a default_node, the only relevant option is
+ Wswitch-enum. Otherwise, if both are enabled then we prefer
+ to warn using -Wswitch because -Wswitch is enabled by -Wall
+ while -Wswitch-enum is explicit. */
+ warning ((default_node || !warn_switch)
+ ? OPT_Wswitch_enum : OPT_Wswitch,
+ "%Henumeration value %qE not handled in switch",
&switch_location, TREE_PURPOSE (chain));
}
@@ -4465,7 +4474,17 @@ c_do_switch_warnings (splay_tree cases, location_t switch_location,
we should have marked both the lower bound and upper bound of
every disjoint case label, with CASE_LOW_SEEN and CASE_HIGH_SEEN
above. This scan also resets those fields. */
+
+ /* If there is a default_node, the only relevant option is
+ Wswitch-enum. Otherwise, if both are enabled then we prefer
+ to warn using -Wswitch because -Wswitch is enabled by -Wall
+ while -Wswitch-enum is explicit. */
+ saved_warn_switch = warn_switch;
+ if (default_node)
+ warn_switch = 0;
splay_tree_foreach (cases, match_case_to_enum, type);
+ warn_switch = saved_warn_switch;
+
}
/* Finish an expression taking the address of LABEL (an
diff --git a/gcc/c-decl.c b/gcc/c-decl.c
index 1af84da3940..4e9564d25e1 100644
--- a/gcc/c-decl.c
+++ b/gcc/c-decl.c
@@ -3977,7 +3977,6 @@ grokdeclarator (const struct c_declarator *declarator,
int volatilep;
int type_quals = TYPE_UNQUALIFIED;
const char *name, *orig_name;
- tree typedef_type = 0;
bool funcdef_flag = false;
bool funcdef_syntax = false;
int size_varies = 0;
@@ -4051,7 +4050,6 @@ grokdeclarator (const struct c_declarator *declarator,
type = integer_type_node;
}
- typedef_type = type;
size_varies = C_TYPE_VARIABLE_SIZE (type);
/* Diagnose defaulting to "int". */
@@ -4701,7 +4699,6 @@ grokdeclarator (const struct c_declarator *declarator,
if (decl_context == PARM)
{
- tree type_as_written;
tree promoted_type;
/* A parameter declared as an array of T is really a pointer to T.
@@ -4737,8 +4734,6 @@ grokdeclarator (const struct c_declarator *declarator,
else if (type_quals)
type = c_build_qualified_type (type, type_quals);
- type_as_written = type;
-
decl = build_decl (PARM_DECL, declarator->u.id, type);
DECL_SOURCE_LOCATION (decl) = declarator->id_loc;
if (size_varies)
diff --git a/gcc/c-pch.c b/gcc/c-pch.c
index d8751e83070..ccf3c86590c 100644
--- a/gcc/c-pch.c
+++ b/gcc/c-pch.c
@@ -243,8 +243,9 @@ c_common_valid_pch (cpp_reader *pfile, const char *name, int fd)
fatal_error ("can%'t read %s: %m", name);
else if (sizeread != IDENT_LENGTH + 16)
{
- cpp_error (pfile, CPP_DL_WARNING, "%s: too short to be a PCH file",
- name);
+ if (cpp_get_options (pfile)->warn_invalid_pch)
+ cpp_error (pfile, CPP_DL_WARNING, "%s: too short to be a PCH file",
+ name);
return 2;
}
diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c
index 60b0b02fc04..94d4eea8dc3 100644
--- a/gcc/c-typeck.c
+++ b/gcc/c-typeck.c
@@ -91,7 +91,7 @@ static void push_string (const char *);
static void push_member_name (tree);
static int spelling_length (void);
static char *print_spelling (char *);
-static void warning_init (const char *);
+static void warning_init (int, const char *);
static tree digest_init (tree, tree, bool, int);
static void output_init_element (tree, bool, tree, tree, int);
static void output_pending_init_elements (int);
@@ -4636,19 +4636,21 @@ pedwarn_init (const char *msgid)
pedwarn ("(near initialization for %qs)", ofwhat);
}
-/* Issue a warning for a bad initializer component.
- MSGID identifies the message.
- The component name is taken from the spelling stack. */
+/* Issue a warning for a bad initializer component.
+
+ OPT is the OPT_W* value corresponding to the warning option that
+ controls this warning. MSGID identifies the message. The
+ component name is taken from the spelling stack. */
static void
-warning_init (const char *msgid)
+warning_init (int opt, const char *msgid)
{
char *ofwhat;
- warning (0, "%s", _(msgid));
+ warning (opt, "%s", _(msgid));
ofwhat = print_spelling ((char *) alloca (spelling_length () + 1));
if (*ofwhat)
- warning (0, "(near initialization for %qs)", ofwhat);
+ warning (opt, "(near initialization for %qs)", ofwhat);
}
/* If TYPE is an array type and EXPR is a parenthesized string
@@ -5415,7 +5417,7 @@ push_init_level (int implicit)
if (implicit == 1 && warn_missing_braces && !missing_braces_mentioned)
{
missing_braces_mentioned = 1;
- warning_init ("missing braces around initializer");
+ warning_init (OPT_Wmissing_braces, "missing braces around initializer");
}
if (TREE_CODE (constructor_type) == RECORD_TYPE
@@ -5476,7 +5478,7 @@ push_init_level (int implicit)
else
{
if (constructor_type != error_mark_node)
- warning_init ("braces around scalar initializer");
+ warning_init (0, "braces around scalar initializer");
constructor_fields = constructor_type;
constructor_unfilled_fields = constructor_type;
}
@@ -5562,7 +5564,8 @@ pop_init_level (int implicit)
if (constructor_unfilled_fields && !constructor_designated)
{
push_member_name (constructor_unfilled_fields);
- warning_init ("missing initializer");
+ warning_init (OPT_Wmissing_field_initializers,
+ "missing initializer");
RESTORE_SPELLING_DEPTH (constructor_depth);
}
}
@@ -5846,9 +5849,9 @@ add_pending_init (tree purpose, tree value)
else
{
if (TREE_SIDE_EFFECTS (p->value))
- warning_init ("initialized field with side-effects overwritten");
+ warning_init (0, "initialized field with side-effects overwritten");
else if (warn_override_init)
- warning_init ("initialized field overwritten");
+ warning_init (OPT_Woverride_init, "initialized field overwritten");
p->value = value;
return;
}
@@ -5869,9 +5872,9 @@ add_pending_init (tree purpose, tree value)
else
{
if (TREE_SIDE_EFFECTS (p->value))
- warning_init ("initialized field with side-effects overwritten");
+ warning_init (0, "initialized field with side-effects overwritten");
else if (warn_override_init)
- warning_init ("initialized field overwritten");
+ warning_init (OPT_Woverride_init, "initialized field overwritten");
p->value = value;
return;
}
@@ -6343,9 +6346,9 @@ output_init_element (tree value, bool strict_string, tree type, tree field,
{
if (TREE_SIDE_EFFECTS (VEC_last (constructor_elt,
constructor_elements)->value))
- warning_init ("initialized field with side-effects overwritten");
+ warning_init (0, "initialized field with side-effects overwritten");
else if (warn_override_init)
- warning_init ("initialized field overwritten");
+ warning_init (OPT_Woverride_init, "initialized field overwritten");
/* We can have just one union field set. */
constructor_elements = 0;
@@ -8138,7 +8141,7 @@ build_binary_op (enum tree_code code, tree orig_op0, tree orig_op1,
case EQ_EXPR:
case NE_EXPR:
- if (code0 == REAL_TYPE || code1 == REAL_TYPE)
+ if (FLOAT_TYPE_P (type0) || FLOAT_TYPE_P (type1))
warning (OPT_Wfloat_equal,
"comparing floating point with == or != is unsafe");
/* Result of comparison is always int,
diff --git a/gcc/c.opt b/gcc/c.opt
index 94f0398419d..72165b96660 100644
--- a/gcc/c.opt
+++ b/gcc/c.opt
@@ -123,10 +123,6 @@ Wall
C ObjC C++ ObjC++ Warning
Enable most warning messages
-Wtype-limits
-C ObjC C++ ObjC++ Var(warn_type_limits) Init(-1) Warning
-Warn if a comparison is always true or always false due to the limited range of the data type
-
Wassign-intercept
ObjC ObjC++ Var(warn_assign_intercept) Warning
Warn whenever an Objective-C assignment is being intercepted by the garbage collector
diff --git a/gcc/common.opt b/gcc/common.opt
index 15b0aa3c415..f1927138271 100644
--- a/gcc/common.opt
+++ b/gcc/common.opt
@@ -110,6 +110,17 @@ Wfatal-errors
Common Var(flag_fatal_errors)
Exit on the first error occurred
+Wframe-larger-than=
+Common RejectNegative Joined UInteger
+-Wframe-larger-than=@var{len} Warn whenever a function's stack frame requires
+more than @var{len} bytes. The computation done to determine
+the stack frame size is approximate and not conservative.
+The actual requirements may be somewhat greater than @var{len}
+even if you do not get a warning. In addition, any space allocated
+via @code{alloca}, variable-length arrays, or related constructs
+is not included by the compiler when determining
+whether or not to issue a warning.
+
Winline
Common Var(warn_inline) Warning
Warn when an inlined function cannot be inlined
@@ -182,6 +193,10 @@ Wsystem-headers
Common Var(warn_system_headers) Warning
Do not suppress warnings from system headers
+Wtype-limits
+Common Var(warn_type_limits) Init(-1) Warning
+Warn if a comparison is always true or always false due to the limited range of the data type
+
Wuninitialized
Common Var(warn_uninitialized) Warning
Warn about uninitialized automatic variables
@@ -429,6 +444,10 @@ fcx-limited-range
Common Report Var(flag_cx_limited_range) Optimization
Omit range reduction step when performing complex division
+fcx-fortran-rules
+Common Report Var(flag_cx_fortran_rules) Optimization
+Complex multiplication and division follow Fortran rules
+
fdata-sections
Common Report Var(flag_data_sections) Optimization
Place data items into their own section
diff --git a/gcc/config.build b/gcc/config.build
index 62486db58b4..d08143493d9 100644
--- a/gcc/config.build
+++ b/gcc/config.build
@@ -1,5 +1,5 @@
# GCC build-specific configuration file.
-# Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2007
+# Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2007, 2008
# Free Software Foundation, Inc.
#This file is part of GCC.
@@ -80,7 +80,11 @@ case $build in
i[34567]86-*-mingw32* | x86_64-*-mingw*)
build_xm_file=i386/xm-mingw32.h
build_exeext=.exe
- build_file_translate="CMD //C"
+ t=`(CMD //c echo /c) 2>/dev/null`
+ case $t in ?:*)
+ build_file_translate="CMD //c"
+ ;;
+ esac
;;
i[34567]86-pc-msdosdjgpp*)
build_xm_file=i386/xm-djgpp.h
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 240a8e57ca1..5db8237467c 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -3130,7 +3130,7 @@ case "${target}" in
| rios | rios1 | rios2 | rsc | rsc1 | rs64a \
| 401 | 403 | 405 | 405fp | 440 | 440fp | 505 \
| 601 | 602 | 603 | 603e | ec603e | 604 \
- | 604e | 620 | 630 | 740 | 750 | 7400 | 7450 \
+ | 604e | 620 | 630 | 740 | 750 | 7400 | 7450 | e300c[23] \
| 854[08] | 801 | 821 | 823 | 860 | 970 | G3 | G4 | G5 | cell)
# OK
;;
diff --git a/gcc/config/avr/libgcc.S b/gcc/config/avr/libgcc.S
index 397778b82d9..8fdba55f775 100644
--- a/gcc/config/avr/libgcc.S
+++ b/gcc/config/avr/libgcc.S
@@ -32,6 +32,7 @@ Boston, MA 02110-1301, USA. */
#define __SREG__ 0x3f
#define __SP_H__ 0x3e
#define __SP_L__ 0x3d
+#define __RAMPZ__ 0x3B
/* Most of the functions here are called directly from avr.md
patterns, instead of using the standard libcall mechanisms.
@@ -686,20 +687,54 @@ __tablejump__:
.endfunc
#endif /* defined (L_tablejump) */
-/* __do_copy_data is only necessary if there is anything in .data section.
- Does not use RAMPZ - crt*.o provides a replacement for >64K devices. */
-
#ifdef L_copy_data
.section .init4,"ax",@progbits
.global __do_copy_data
__do_copy_data:
+#if defined(__AVR_HAVE_ELPMX__)
+ ldi r17, hi8(__data_end)
+ ldi r26, lo8(__data_start)
+ ldi r27, hi8(__data_start)
+ ldi r30, lo8(__data_load_start)
+ ldi r31, hi8(__data_load_start)
+ ldi r16, hh8(__data_load_start)
+ out __RAMPZ__, r16
+ rjmp .L__do_copy_data_start
+.L__do_copy_data_loop:
+ elpm r0, Z+
+ st X+, r0
+.L__do_copy_data_start:
+ cpi r26, lo8(__data_end)
+ cpc r27, r17
+ brne .L__do_copy_data_loop
+#elif !defined(__AVR_HAVE_ELPMX__) && defined(__AVR_HAVE_ELPM__)
+ ldi r17, hi8(__data_end)
+ ldi r26, lo8(__data_start)
+ ldi r27, hi8(__data_start)
+ ldi r30, lo8(__data_load_start)
+ ldi r31, hi8(__data_load_start)
+ ldi r16, hh8(__data_load_start - 0x10000)
+.L__do_copy_data_carry:
+ inc r16
+ out __RAMPZ__, r16
+ rjmp .L__do_copy_data_start
+.L__do_copy_data_loop:
+ elpm
+ st X+, r0
+ adiw r30, 1
+ brcs .L__do_copy_data_carry
+.L__do_copy_data_start:
+ cpi r26, lo8(__data_end)
+ cpc r27, r17
+ brne .L__do_copy_data_loop
+#elif !defined(__AVR_HAVE_ELPMX__) && !defined(__AVR_HAVE_ELPM__)
ldi r17, hi8(__data_end)
ldi r26, lo8(__data_start)
ldi r27, hi8(__data_start)
ldi r30, lo8(__data_load_start)
ldi r31, hi8(__data_load_start)
- rjmp .do_copy_data_start
-.do_copy_data_loop:
+ rjmp .L__do_copy_data_start
+.L__do_copy_data_loop:
#if defined (__AVR_HAVE_LPMX__)
lpm r0, Z+
#else
@@ -707,10 +742,11 @@ __do_copy_data:
adiw r30, 1
#endif
st X+, r0
-.do_copy_data_start:
+.L__do_copy_data_start:
cpi r26, lo8(__data_end)
cpc r27, r17
- brne .do_copy_data_loop
+ brne .L__do_copy_data_loop
+#endif /* !defined(__AVR_HAVE_ELPMX__) && !defined(__AVR_HAVE_ELPM__) */
#endif /* L_copy_data */
/* __do_clear_bss is only necessary if there is anything in .bss section. */
diff --git a/gcc/config/cris/cris.h b/gcc/config/cris/cris.h
index 9e59b88216b..b8f4ae56713 100644
--- a/gcc/config/cris/cris.h
+++ b/gcc/config/cris/cris.h
@@ -600,6 +600,7 @@ enum reg_class
#define REG_CLASS_FROM_LETTER(C) \
( \
(C) == 'a' ? ACR_REGS : \
+ (C) == 'b' ? GENNONACR_REGS : \
(C) == 'h' ? MOF_REGS : \
(C) == 'x' ? SPECIAL_REGS : \
(C) == 'c' ? CC0_REGS : \
diff --git a/gcc/config/darwin-protos.h b/gcc/config/darwin-protos.h
index a8ce17c0111..c894bf05104 100644
--- a/gcc/config/darwin-protos.h
+++ b/gcc/config/darwin-protos.h
@@ -89,3 +89,4 @@ extern void darwin_cpp_builtins (struct cpp_reader *);
extern void darwin_asm_output_anchor (rtx symbol);
extern bool darwin_kextabi_p (void);
extern void darwin_override_options (void);
+extern void darwin_patch_builtins (void);
diff --git a/gcc/config/darwin.c b/gcc/config/darwin.c
index 307698d095f..13aa021f4c6 100644
--- a/gcc/config/darwin.c
+++ b/gcc/config/darwin.c
@@ -1735,4 +1735,52 @@ darwin_override_options (void)
flag_var_tracking_uninit = 1;
}
+/* Add $LDBL128 suffix to long double builtins. */
+
+static void
+darwin_patch_builtin (int fncode)
+{
+ tree fn = built_in_decls[fncode];
+ tree sym;
+ char *newname;
+
+ if (!fn)
+ return;
+
+ sym = DECL_ASSEMBLER_NAME (fn);
+ newname = alloca (IDENTIFIER_LENGTH (sym) + 10);
+ strcpy (newname, "_");
+ strcat (newname, IDENTIFIER_POINTER (sym));
+ strcat (newname, "$LDBL128");
+ set_user_assembler_name (fn, newname);
+ /*sym = get_identifier (newname);
+ SET_DECL_ASSEMBLER_NAME (fn, sym);*/
+
+ fn = implicit_built_in_decls[fncode];
+ if (fn)
+ set_user_assembler_name (fn, newname);
+ /*SET_DECL_ASSEMBLER_NAME (fn, sym);*/
+}
+
+void
+darwin_patch_builtins (void)
+{
+ if (LONG_DOUBLE_TYPE_SIZE != 128)
+ return;
+
+#define PATCH_BUILTIN(fncode) darwin_patch_builtin (fncode);
+#define PATCH_BUILTIN_NO64(fncode) \
+ if (!TARGET_64BIT) \
+ darwin_patch_builtin (fncode);
+#define PATCH_BUILTIN_VARIADIC(fncode) \
+ if (!TARGET_64BIT \
+ && (strverscmp (darwin_macosx_version_min, "10.3.9") >= 0)) \
+ darwin_patch_builtin (fncode);
+#include "darwin-ppc-ldouble-patch.def"
+#undef PATCH_BUILTIN
+#undef PATCH_BUILTIN_NO64
+#undef PATCH_BUILTIN_VARIADIC
+}
+
+
#include "gt-darwin.h"
diff --git a/gcc/config/h8300/h8300.c b/gcc/config/h8300/h8300.c
index 96b6311ce7c..f90bd414735 100644
--- a/gcc/config/h8300/h8300.c
+++ b/gcc/config/h8300/h8300.c
@@ -930,7 +930,7 @@ h8300_expand_epilogue (void)
}
if (!returned_p)
- emit_insn (gen_rtx_RETURN (VOIDmode));
+ emit_jump_insn (gen_rtx_RETURN (VOIDmode));
}
/* Return nonzero if the current function is an interrupt
diff --git a/gcc/config/h8300/h8300.md b/gcc/config/h8300/h8300.md
index 08a8d2e9313..9b6c0aa4e16 100644
--- a/gcc/config/h8300/h8300.md
+++ b/gcc/config/h8300/h8300.md
@@ -3282,6 +3282,9 @@
if (GET_CODE (operands[0]) == MEM
|| GET_CODE (operands[3]) == MEM)
FAIL;
+
+ if (GET_CODE (operands[3]) != REG)
+ operands[3] = force_reg (HImode, operands[3]);
}")
(define_insn ""
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 5dad2fcf515..5a4456d912b 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -12148,6 +12148,7 @@ ix86_expand_branch (enum rtx_code code, rtx label)
ix86_expand_branch (code, label);
return;
}
+ break;
case LE: case LEU: case GT: case GTU:
if (lo[1] == constm1_rtx)
{
@@ -12156,6 +12157,7 @@ ix86_expand_branch (enum rtx_code code, rtx label)
ix86_expand_branch (code, label);
return;
}
+ break;
default:
break;
}
diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
index fedac5643a4..f2429846691 100644
--- a/gcc/config/i386/i386.h
+++ b/gcc/config/i386/i386.h
@@ -1454,6 +1454,9 @@ enum reg_class
#define SSE_FLOAT_MODE_P(MODE) \
((TARGET_SSE && (MODE) == SFmode) || (TARGET_SSE2 && (MODE) == DFmode))
+#define SSE_VEC_FLOAT_MODE_P(MODE) \
+ ((TARGET_SSE && (MODE) == V4SFmode) || (TARGET_SSE2 && (MODE) == V2DFmode))
+
#define MMX_REG_P(XOP) (REG_P (XOP) && MMX_REGNO_P (REGNO (XOP)))
#define MMX_REGNO_P(N) IN_RANGE ((N), FIRST_MMX_REG, LAST_MMX_REG)
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 3c9c2cc8c86..92a37280f5f 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -13964,25 +13964,15 @@
;; 0xffffffff is NaN, but not in normalized form, so we can't represent
;; it directly.
-(define_insn "*sse_setccsf"
- [(set (match_operand:SF 0 "register_operand" "=x")
- (match_operator:SF 1 "sse_comparison_operator"
- [(match_operand:SF 2 "register_operand" "0")
- (match_operand:SF 3 "nonimmediate_operand" "xm")]))]
- "TARGET_SSE && !TARGET_SSE5"
- "cmp%D1ss\t{%3, %0|%0, %3}"
- [(set_attr "type" "ssecmp")
- (set_attr "mode" "SF")])
-
-(define_insn "*sse_setccdf"
- [(set (match_operand:DF 0 "register_operand" "=x")
- (match_operator:DF 1 "sse_comparison_operator"
- [(match_operand:DF 2 "register_operand" "0")
- (match_operand:DF 3 "nonimmediate_operand" "xm")]))]
- "TARGET_SSE2 && !TARGET_SSE5"
- "cmp%D1sd\t{%3, %0|%0, %3}"
+(define_insn "*sse_setcc<mode>"
+ [(set (match_operand:MODEF 0 "register_operand" "=x")
+ (match_operator:MODEF 1 "sse_comparison_operator"
+ [(match_operand:MODEF 2 "register_operand" "0")
+ (match_operand:MODEF 3 "nonimmediate_operand" "xm")]))]
+ "SSE_FLOAT_MODE_P (<MODE>mode) && !TARGET_SSE5"
+ "cmp%D1s<ssemodefsuffix>\t{%3, %0|%0, %3}"
[(set_attr "type" "ssecmp")
- (set_attr "mode" "DF")])
+ (set_attr "mode" "<MODE>")])
(define_insn "*sse5_setcc<mode>"
[(set (match_operand:MODEF 0 "register_operand" "=x")
@@ -19383,7 +19373,7 @@
(match_operand:DI 2 "general_operand" "")
(match_operand:DI 3 "general_operand" "")))]
"TARGET_64BIT"
- "if (!ix86_expand_int_movcc (operands)) FAIL; DONE;")
+ "if (ix86_expand_int_movcc (operands)) DONE; else FAIL;")
(define_insn "x86_movdicc_0_m1_rex64"
[(set (match_operand:DI 0 "register_operand" "=r")
@@ -19437,7 +19427,7 @@
(match_operand:SI 2 "general_operand" "")
(match_operand:SI 3 "general_operand" "")))]
""
- "if (!ix86_expand_int_movcc (operands)) FAIL; DONE;")
+ "if (ix86_expand_int_movcc (operands)) DONE; else FAIL;")
;; Data flow gets confused by our desire for `sbbl reg,reg', and clearing
;; the register first winds up with `sbbl $0,reg', which is also weird.
@@ -19495,7 +19485,7 @@
(match_operand:HI 2 "general_operand" "")
(match_operand:HI 3 "general_operand" "")))]
"TARGET_HIMODE_MATH"
- "if (!ix86_expand_int_movcc (operands)) FAIL; DONE;")
+ "if (ix86_expand_int_movcc (operands)) DONE; else FAIL;")
(define_insn "*movhicc_noc"
[(set (match_operand:HI 0 "register_operand" "=r,r")
@@ -19517,7 +19507,7 @@
(match_operand:QI 2 "general_operand" "")
(match_operand:QI 3 "general_operand" "")))]
"TARGET_QIMODE_MATH"
- "if (!ix86_expand_int_movcc (operands)) FAIL; DONE;")
+ "if (ix86_expand_int_movcc (operands)) DONE; else FAIL;")
(define_insn_and_split "*movqicc_noc"
[(set (match_operand:QI 0 "register_operand" "=r,r")
@@ -19539,13 +19529,15 @@
[(set_attr "type" "icmov")
(set_attr "mode" "SI")])
-(define_expand "movsfcc"
- [(set (match_operand:SF 0 "register_operand" "")
- (if_then_else:SF (match_operand 1 "comparison_operator" "")
- (match_operand:SF 2 "register_operand" "")
- (match_operand:SF 3 "register_operand" "")))]
- "(TARGET_80387 && TARGET_CMOVE) || TARGET_SSE_MATH"
- "if (! ix86_expand_fp_movcc (operands)) FAIL; DONE;")
+(define_expand "mov<mode>cc"
+ [(set (match_operand:X87MODEF 0 "register_operand" "")
+ (if_then_else:X87MODEF
+ (match_operand 1 "comparison_operator" "")
+ (match_operand:X87MODEF 2 "register_operand" "")
+ (match_operand:X87MODEF 3 "register_operand" "")))]
+ "(TARGET_80387 && TARGET_CMOVE)
+ || (SSE_FLOAT_MODE_P (<MODE>mode) && TARGET_SSE_MATH)"
+ "if (ix86_expand_fp_movcc (operands)) DONE; else FAIL;")
(define_insn "*movsfcc_1_387"
[(set (match_operand:SF 0 "register_operand" "=f,f,r,r")
@@ -19563,14 +19555,6 @@
[(set_attr "type" "fcmov,fcmov,icmov,icmov")
(set_attr "mode" "SF,SF,SI,SI")])
-(define_expand "movdfcc"
- [(set (match_operand:DF 0 "register_operand" "")
- (if_then_else:DF (match_operand 1 "comparison_operator" "")
- (match_operand:DF 2 "register_operand" "")
- (match_operand:DF 3 "register_operand" "")))]
- "(TARGET_80387 && TARGET_CMOVE) || (TARGET_SSE2 && TARGET_SSE_MATH)"
- "if (! ix86_expand_fp_movcc (operands)) FAIL; DONE;")
-
(define_insn "*movdfcc_1"
[(set (match_operand:DF 0 "register_operand" "=f,f,&r,&r")
(if_then_else:DF (match_operator 1 "fcmov_comparison_operator"
@@ -19623,14 +19607,6 @@
split_di (operands+3, 1, operands+7, operands+8);
split_di (operands, 1, operands+2, operands+3);")
-(define_expand "movxfcc"
- [(set (match_operand:XF 0 "register_operand" "")
- (if_then_else:XF (match_operand 1 "comparison_operator" "")
- (match_operand:XF 2 "register_operand" "")
- (match_operand:XF 3 "register_operand" "")))]
- "TARGET_80387 && TARGET_CMOVE"
- "if (! ix86_expand_fp_movcc (operands)) FAIL; DONE;")
-
(define_insn "*movxfcc_1"
[(set (match_operand:XF 0 "register_operand" "=f,f")
(if_then_else:XF (match_operator 1 "fcmov_comparison_operator"
@@ -19663,41 +19639,25 @@
;; Since both the tree-level MAX_EXPR and the rtl-level SMAX operator
;; are undefined in this condition, we're certain this is correct.
-(define_insn "sminsf3"
- [(set (match_operand:SF 0 "register_operand" "=x")
- (smin:SF (match_operand:SF 1 "nonimmediate_operand" "%0")
- (match_operand:SF 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE_MATH"
- "minss\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseadd")
- (set_attr "mode" "SF")])
-
-(define_insn "smaxsf3"
- [(set (match_operand:SF 0 "register_operand" "=x")
- (smax:SF (match_operand:SF 1 "nonimmediate_operand" "%0")
- (match_operand:SF 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE_MATH"
- "maxss\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseadd")
- (set_attr "mode" "SF")])
-
-(define_insn "smindf3"
- [(set (match_operand:DF 0 "register_operand" "=x")
- (smin:DF (match_operand:DF 1 "nonimmediate_operand" "%0")
- (match_operand:DF 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2 && TARGET_SSE_MATH"
- "minsd\t{%2, %0|%0, %2}"
+(define_insn "smin<mode>3"
+ [(set (match_operand:MODEF 0 "register_operand" "=x")
+ (smin:MODEF
+ (match_operand:MODEF 1 "nonimmediate_operand" "%0")
+ (match_operand:MODEF 2 "nonimmediate_operand" "xm")))]
+ "SSE_FLOAT_MODE_P (<MODE>mode) && TARGET_SSE_MATH"
+ "mins<ssemodefsuffix>\t{%2, %0|%0, %2}"
[(set_attr "type" "sseadd")
- (set_attr "mode" "DF")])
+ (set_attr "mode" "<MODE>")])
-(define_insn "smaxdf3"
- [(set (match_operand:DF 0 "register_operand" "=x")
- (smax:DF (match_operand:DF 1 "nonimmediate_operand" "%0")
- (match_operand:DF 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2 && TARGET_SSE_MATH"
- "maxsd\t{%2, %0|%0, %2}"
+(define_insn "smax<mode>3"
+ [(set (match_operand:MODEF 0 "register_operand" "=x")
+ (smax:MODEF
+ (match_operand:MODEF 1 "nonimmediate_operand" "%0")
+ (match_operand:MODEF 2 "nonimmediate_operand" "xm")))]
+ "SSE_FLOAT_MODE_P (<MODE>mode) && TARGET_SSE_MATH"
+ "maxs<ssemodefsuffix>\t{%2, %0|%0, %2}"
[(set_attr "type" "sseadd")
- (set_attr "mode" "DF")])
+ (set_attr "mode" "<MODE>")])
;; These versions of the min/max patterns implement exactly the operations
;; min = (op1 < op2 ? op1 : op2)
@@ -19705,45 +19665,27 @@
;; Their operands are not commutative, and thus they may be used in the
;; presence of -0.0 and NaN.
-(define_insn "*ieee_sminsf3"
- [(set (match_operand:SF 0 "register_operand" "=x")
- (unspec:SF [(match_operand:SF 1 "register_operand" "0")
- (match_operand:SF 2 "nonimmediate_operand" "xm")]
- UNSPEC_IEEE_MIN))]
- "TARGET_SSE_MATH"
- "minss\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseadd")
- (set_attr "mode" "SF")])
-
-(define_insn "*ieee_smaxsf3"
- [(set (match_operand:SF 0 "register_operand" "=x")
- (unspec:SF [(match_operand:SF 1 "register_operand" "0")
- (match_operand:SF 2 "nonimmediate_operand" "xm")]
- UNSPEC_IEEE_MAX))]
- "TARGET_SSE_MATH"
- "maxss\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseadd")
- (set_attr "mode" "SF")])
-
-(define_insn "*ieee_smindf3"
- [(set (match_operand:DF 0 "register_operand" "=x")
- (unspec:DF [(match_operand:DF 1 "register_operand" "0")
- (match_operand:DF 2 "nonimmediate_operand" "xm")]
- UNSPEC_IEEE_MIN))]
- "TARGET_SSE2 && TARGET_SSE_MATH"
- "minsd\t{%2, %0|%0, %2}"
+(define_insn "*ieee_smin<mode>3"
+ [(set (match_operand:MODEF 0 "register_operand" "=x")
+ (unspec:MODEF
+ [(match_operand:MODEF 1 "register_operand" "0")
+ (match_operand:MODEF 2 "nonimmediate_operand" "xm")]
+ UNSPEC_IEEE_MIN))]
+ "SSE_FLOAT_MODE_P (<MODE>mode) && TARGET_SSE_MATH"
+ "mins<ssemodefsuffix>\t{%2, %0|%0, %2}"
[(set_attr "type" "sseadd")
- (set_attr "mode" "DF")])
+ (set_attr "mode" "<MODE>")])
-(define_insn "*ieee_smaxdf3"
- [(set (match_operand:DF 0 "register_operand" "=x")
- (unspec:DF [(match_operand:DF 1 "register_operand" "0")
- (match_operand:DF 2 "nonimmediate_operand" "xm")]
- UNSPEC_IEEE_MAX))]
- "TARGET_SSE2 && TARGET_SSE_MATH"
- "maxsd\t{%2, %0|%0, %2}"
+(define_insn "*ieee_smax<mode>3"
+ [(set (match_operand:MODEF 0 "register_operand" "=x")
+ (unspec:MODEF
+ [(match_operand:MODEF 1 "register_operand" "0")
+ (match_operand:MODEF 2 "nonimmediate_operand" "xm")]
+ UNSPEC_IEEE_MAX))]
+ "SSE_FLOAT_MODE_P (<MODE>mode) && TARGET_SSE_MATH"
+ "maxs<ssemodefsuffix>\t{%2, %0|%0, %2}"
[(set_attr "type" "sseadd")
- (set_attr "mode" "DF")])
+ (set_attr "mode" "<MODE>")])
;; Make two stack loads independent:
;; fld aa fld aa
@@ -19778,7 +19720,7 @@
(match_operand:QI 2 "register_operand" "")
(match_operand:QI 3 "const_int_operand" "")]
""
- "if (!ix86_expand_int_addcc (operands)) FAIL; DONE;")
+ "if (ix86_expand_int_addcc (operands)) DONE; else FAIL;")
(define_expand "addhicc"
[(match_operand:HI 0 "register_operand" "")
@@ -19786,7 +19728,7 @@
(match_operand:HI 2 "register_operand" "")
(match_operand:HI 3 "const_int_operand" "")]
""
- "if (!ix86_expand_int_addcc (operands)) FAIL; DONE;")
+ "if (ix86_expand_int_addcc (operands)) DONE; else FAIL;")
(define_expand "addsicc"
[(match_operand:SI 0 "register_operand" "")
@@ -19794,7 +19736,7 @@
(match_operand:SI 2 "register_operand" "")
(match_operand:SI 3 "const_int_operand" "")]
""
- "if (!ix86_expand_int_addcc (operands)) FAIL; DONE;")
+ "if (ix86_expand_int_addcc (operands)) DONE; else FAIL;")
(define_expand "adddicc"
[(match_operand:DI 0 "register_operand" "")
@@ -19802,7 +19744,7 @@
(match_operand:DI 2 "register_operand" "")
(match_operand:DI 3 "const_int_operand" "")]
"TARGET_64BIT"
- "if (!ix86_expand_int_addcc (operands)) FAIL; DONE;")
+ "if (ix86_expand_int_addcc (operands)) DONE; else FAIL;")
;; Misc patterns (?)
diff --git a/gcc/config/i386/mmx.md b/gcc/config/i386/mmx.md
index ee819936f6e..3371161f82f 100644
--- a/gcc/config/i386/mmx.md
+++ b/gcc/config/i386/mmx.md
@@ -63,9 +63,9 @@
(define_insn "*mov<mode>_internal_rex64"
[(set (match_operand:MMXMODEI 0 "nonimmediate_operand"
- "=rm,r,*y,*y ,m ,*y,Y2,x,x ,m,r,x")
+ "=rm,r,!y,!y ,m ,!y,Y2,x,x ,m,r,x")
(match_operand:MMXMODEI 1 "vector_move_operand"
- "Cr ,m,C ,*ym,*y,Y2,*y,C,xm,x,x,r"))]
+ "Cr ,m,C ,!ym,!y,Y2,!y,C,xm,x,x,r"))]
"TARGET_64BIT && TARGET_MMX
&& !(MEM_P (operands[0]) && MEM_P (operands[1]))"
"@
@@ -87,9 +87,9 @@
(define_insn "*mov<mode>_internal"
[(set (match_operand:MMXMODEI 0 "nonimmediate_operand"
- "=*y,*y ,m ,*y ,*Y2,*Y2,*Y2 ,m ,*x,*x,*x,m ,?r ,?m")
+ "=!y,!y ,m ,!y ,*Y2,*Y2,*Y2 ,m ,*x,*x,*x,m ,?r ,?m")
(match_operand:MMXMODEI 1 "vector_move_operand"
- "C ,*ym,*y,*Y2,*y ,C ,*Y2m,*Y2,C ,*x,m ,*x,irm,r"))]
+ "C ,!ym,!y,*Y2,!y ,C ,*Y2m,*Y2,C ,*x,m ,*x,irm,r"))]
"TARGET_MMX
&& !(MEM_P (operands[0]) && MEM_P (operands[1]))"
"@
@@ -122,9 +122,9 @@
(define_insn "*movv2sf_internal_rex64"
[(set (match_operand:V2SF 0 "nonimmediate_operand"
- "=rm,r,*y ,*y ,m ,*y,Y2,x,x,x,m,r,x")
+ "=rm,r,!y ,!y ,m ,!y,Y2,x,x,x,m,r,x")
(match_operand:V2SF 1 "vector_move_operand"
- "Cr ,m ,C ,*ym,*y,Y2,*y,C,x,m,x,x,r"))]
+ "Cr ,m ,C ,!ym,!y,Y2,!y,C,x,m,x,x,r"))]
"TARGET_64BIT && TARGET_MMX
&& !(MEM_P (operands[0]) && MEM_P (operands[1]))"
"@
@@ -147,9 +147,9 @@
(define_insn "*movv2sf_internal"
[(set (match_operand:V2SF 0 "nonimmediate_operand"
- "=*y,*y ,m,*y ,*Y2,*x,*x,*x,m ,?r ,?m")
+ "=!y,!y ,m,!y ,*Y2,*x,*x,*x,m ,?r ,?m")
(match_operand:V2SF 1 "vector_move_operand"
- "C ,*ym,*y,*Y2,*y ,C ,*x,m ,*x,irm,r"))]
+ "C ,!ym,!y,*Y2,!y ,C ,*x,m ,*x,irm,r"))]
"TARGET_MMX
&& !(MEM_P (operands[0]) && MEM_P (operands[1]))"
"@
diff --git a/gcc/config/i386/netware-libgcc.exp b/gcc/config/i386/netware-libgcc.exp
index a3498c0e720..309cf754943 100644
--- a/gcc/config/i386/netware-libgcc.exp
+++ b/gcc/config/i386/netware-libgcc.exp
@@ -6,6 +6,8 @@
__addvsi3,
# __ashldi3,
# __ashrdi3,
+ __bswapdi2,
+ __bswapsi2,
__clzdi2,
__clzsi2,
__ctzdi2,
@@ -18,12 +20,18 @@
__divsc3,
# __divtc3,
__divxc3,
+ __emutls_get_address,
+ __emutls_register_common,
__ffsdi2,
__ffssi2,
__fixunsdfdi,
__fixunssfdi,
# __fixunstfdi,
__fixunsxfdi,
+ __floatundisf,
+ __floatundidf,
+# __floatunditf,
+ __floatundixf,
__gcc_bcmp,
__gcc_personality_v0,
# __lshrdi3,
@@ -64,6 +72,7 @@
_Unwind_GetDataRelBase,
_Unwind_GetGR,
_Unwind_GetIP,
+ _Unwind_GetIPInfo,
_Unwind_GetLanguageSpecificData,
_Unwind_GetRegionStart,
_Unwind_GetTextRelBase,
diff --git a/gcc/config/i386/netware.c b/gcc/config/i386/netware.c
index 0357baff169..63c26cc7551 100644
--- a/gcc/config/i386/netware.c
+++ b/gcc/config/i386/netware.c
@@ -1,6 +1,6 @@
/* Subroutines for insn-output.c for NetWare.
Contributed by Jan Beulich (jbeulich@novell.com)
- Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
This file is part of GCC.
@@ -32,28 +32,25 @@ along with GCC; see the file COPYING3. If not see
#include "toplev.h"
#include "ggc.h"
-
-/* Return string which is the former assembler name modified with an
- underscore prefix and a suffix consisting of an atsign (@) followed
- by the number of bytes of arguments */
+/* Return string which is the function name, identified by ID, modified
+ with PREFIX and a suffix consisting of an atsign (@) followed by the
+ number of bytes of arguments. If ID is NULL use the DECL_NAME as base.
+ Return NULL if no change required. */
static tree
-gen_stdcall_or_fastcall_decoration (tree decl, char prefix)
+gen_stdcall_or_fastcall_decoration (tree decl, tree id, char prefix)
{
- unsigned total = 0;
- /* ??? This probably should use XSTR (XEXP (DECL_RTL (decl), 0), 0) instead
- of DECL_ASSEMBLER_NAME. */
- const char *asmname = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl));
- char *newsym;
+ unsigned HOST_WIDE_INT total = 0;
+ const char *old_str = IDENTIFIER_POINTER (id != NULL_TREE ? id : DECL_NAME (decl));
+ char *new_str;
tree type = TREE_TYPE (decl);
- tree arg;
- function_args_iterator args_iter;
if (prototype_p (type))
{
- /* These attributes are ignored for variadic functions in
- i386.c:ix86_return_pops_args. For compatibility with MS
- compiler do not add @0 suffix here. */
+ tree arg;
+ function_args_iterator args_iter;
+
+ /* This attribute is ignored for variadic functions. */
if (stdarg_p (type))
return NULL_TREE;
@@ -61,50 +58,50 @@ gen_stdcall_or_fastcall_decoration (tree decl, char prefix)
by convert_arguments in c-typeck.c or cp/typeck.c. */
FOREACH_FUNCTION_ARGS(type, arg, args_iter)
{
- unsigned parm_size;
+ HOST_WIDE_INT parm_size;
+ unsigned HOST_WIDE_INT parm_boundary_bytes;
if (! COMPLETE_TYPE_P (arg))
break;
- parm_size = int_size_in_bytes (TYPE_SIZE (arg));
+ parm_size = int_size_in_bytes (arg);
if (parm_size < 0)
break;
+ parm_boundary_bytes = PARM_BOUNDARY / BITS_PER_UNIT;
+
/* Must round up to include padding. This is done the same
way as in store_one_arg. */
- parm_size = ((parm_size + PARM_BOUNDARY - 1)
- / PARM_BOUNDARY * PARM_BOUNDARY);
- total += parm_size;
+ total += (parm_size + parm_boundary_bytes - 1)
+ / parm_boundary_bytes * parm_boundary_bytes;
}
}
- newsym = alloca (1 + strlen (asmname) + 1 + 10 + 1);
- return get_identifier_with_length (newsym,
- sprintf (newsym,
- "%c%s@%u",
- prefix,
- asmname,
- total / BITS_PER_UNIT));
+ new_str = alloca (1 + strlen (old_str) + 1 + 10 + 1);
+ sprintf (new_str, "%c%s@" HOST_WIDE_INT_PRINT_UNSIGNED,
+ prefix, old_str, total);
+
+ return get_identifier (new_str);
}
-/* Return string which is the former assembler name modified with an
- _n@ prefix where n represents the number of arguments passed in
- registers */
+/* Return string which is the function name, identified by ID, modified
+ with an _n@ prefix (where n represents the number of arguments passed in
+ registers). If ID is NULL use the DECL_NAME as base.
+ Return NULL if no change required. */
static tree
-gen_regparm_prefix (tree decl, unsigned nregs)
+gen_regparm_prefix (tree decl, tree id, unsigned int nregs)
{
- unsigned total = 0;
- /* ??? This probably should use XSTR (XEXP (DECL_RTL (decl), 0), 0) instead
- of DECL_ASSEMBLER_NAME. */
- const char *asmname = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl));
- char *newsym;
+ unsigned HOST_WIDE_INT total = 0;
+ const char *old_str = IDENTIFIER_POINTER (id != NULL_TREE ? id : DECL_NAME (decl));
+ char *new_str;
tree type = TREE_TYPE (decl);
- tree arg;
- function_args_iterator args_iter;
if (prototype_p (type))
{
+ tree arg;
+ function_args_iterator args_iter;
+
/* This attribute is ignored for variadic functions. */
if (stdarg_p (type))
return NULL_TREE;
@@ -113,7 +110,8 @@ gen_regparm_prefix (tree decl, unsigned nregs)
by convert_arguments in c-typeck.c or cp/typeck.c. */
FOREACH_FUNCTION_ARGS(type, arg, args_iter)
{
- unsigned parm_size;
+ HOST_WIDE_INT parm_size;
+ unsigned HOST_WIDE_INT parm_boundary_bytes;
if (! COMPLETE_TYPE_P (arg))
break;
@@ -122,21 +120,58 @@ gen_regparm_prefix (tree decl, unsigned nregs)
if (parm_size < 0)
break;
- parm_size = ((parm_size + PARM_BOUNDARY - 1)
- / PARM_BOUNDARY * PARM_BOUNDARY);
- total += parm_size;
+ parm_boundary_bytes = PARM_BOUNDARY / BITS_PER_UNIT;
+
+ /* Must round up to include padding. This is done the same
+ way as in store_one_arg. */
+ total += (parm_size + parm_boundary_bytes - 1)
+ / parm_boundary_bytes * parm_boundary_bytes;
}
}
- if (nregs > total / BITS_PER_WORD)
- nregs = total / BITS_PER_WORD;
+ if (nregs > total / UNITS_PER_WORD)
+ nregs = total / UNITS_PER_WORD;
gcc_assert (nregs <= 9);
- newsym = alloca (3 + strlen (asmname) + 1);
- return get_identifier_with_length (newsym,
- sprintf (newsym,
- "_%u@%s",
- nregs,
- asmname));
+ new_str = alloca (3 + strlen (old_str) + 1);
+ sprintf (new_str, "_%u@%s", nregs, old_str);
+
+ return get_identifier (new_str);
+}
+
+/* Maybe decorate and get a new identifier for the DECL of a stdcall or
+ fastcall function. The original identifier is supplied in ID. */
+
+static tree
+i386_nlm_maybe_mangle_decl_assembler_name (tree decl, tree id)
+{
+ tree type_attributes = TYPE_ATTRIBUTES (TREE_TYPE (decl));
+ tree new_id;
+
+ if (lookup_attribute ("stdcall", type_attributes))
+ new_id = gen_stdcall_or_fastcall_decoration (decl, id, '_');
+ else if (lookup_attribute ("fastcall", type_attributes))
+ new_id = gen_stdcall_or_fastcall_decoration (decl, id, FASTCALL_PREFIX);
+ else if ((new_id = lookup_attribute ("regparm", type_attributes)))
+ new_id = gen_regparm_prefix (decl, id,
+ TREE_INT_CST_LOW (TREE_VALUE (TREE_VALUE (new_id))));
+ else
+ new_id = NULL_TREE;
+
+ return new_id;
+}
+
+/* This is used as a target hook to modify the DECL_ASSEMBLER_NAME
+ in the language-independent default hook
+ langhooks.c:lhd_set_decl_assembler_name ()
+ and in cp/mangle.c:mangle_decl (). */
+tree
+i386_nlm_mangle_decl_assembler_name (tree decl, tree id)
+{
+ tree new_id = TREE_CODE (decl) == FUNCTION_DECL
+ ? i386_nlm_maybe_mangle_decl_assembler_name (decl, id)
+ : NULL_TREE;
+
+ return (new_id ? new_id : id);
}
void
@@ -146,31 +181,28 @@ i386_nlm_encode_section_info (tree decl, rtx rtl, int first)
if (first
&& TREE_CODE (decl) == FUNCTION_DECL
+ /* Do not change the identifier if a verbatim asmspec
+ or if stdcall suffix already added. */
&& *IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)) != '*'
&& !strchr (IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)), '@'))
{
- tree type_attributes = TYPE_ATTRIBUTES (TREE_TYPE (decl));
- tree newid;
-
- if (lookup_attribute ("stdcall", type_attributes))
- newid = gen_stdcall_or_fastcall_decoration (decl, '_');
- else if (lookup_attribute ("fastcall", type_attributes))
- newid = gen_stdcall_or_fastcall_decoration (decl, FASTCALL_PREFIX);
- else if ((newid = lookup_attribute ("regparm", type_attributes)) != NULL_TREE)
- newid = gen_regparm_prefix (decl,
- TREE_INT_CST_LOW (TREE_VALUE (TREE_VALUE (newid))));
- if (newid != NULL_TREE)
- {
- rtx rtlname = XEXP (rtl, 0);
+ /* FIXME: In Ada, and perhaps other language frontends,
+ imported stdcall names may not yet have been modified.
+ Check and do it know. */
+ rtx symbol = XEXP (rtl, 0);
+ tree new_id;
+ tree old_id = DECL_ASSEMBLER_NAME (decl);
+
+ gcc_assert (GET_CODE (symbol) == SYMBOL_REF);
- if (GET_CODE (rtlname) == MEM)
- rtlname = XEXP (rtlname, 0);
- XSTR (rtlname, 0) = IDENTIFIER_POINTER (newid);
+ if ((new_id = i386_nlm_maybe_mangle_decl_assembler_name (decl, old_id)))
+ {
/* These attributes must be present on first declaration,
change_decl_assembler_name will warn if they are added
later and the decl has been referenced, but duplicate_decls
- should catch the mismatch before this is called. */
- change_decl_assembler_name (decl, newid);
+ should catch the mismatch first. */
+ change_decl_assembler_name (decl, new_id);
+ XSTR (symbol, 0) = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl));
}
}
}
@@ -201,3 +233,24 @@ i386_nlm_strip_name_encoding (const char *str)
}
return name;
}
+
+/* Sometimes certain combinations of command options do not make
+ sense on a particular target machine. You can define a macro
+ `OVERRIDE_OPTIONS' to take account of this. This macro, if
+ defined, is executed once just after all the command options have
+ been parsed.
+
+ Don't use this macro to turn on various extra optimizations for
+ `-O'. That is what `OPTIMIZATION_OPTIONS' is for. */
+
+void
+netware_override_options (void)
+{
+ override_options ();
+
+ if (flag_pic)
+ {
+ error ("-fPIC and -fpic are not supported for this target");
+ flag_pic = 0;
+ }
+}
diff --git a/gcc/config/i386/netware.h b/gcc/config/i386/netware.h
index e7459a2fe79..d4f31e0bbb2 100644
--- a/gcc/config/i386/netware.h
+++ b/gcc/config/i386/netware.h
@@ -72,6 +72,18 @@ along with GCC; see the file COPYING3. If not see
#define TARGET_SUBTARGET_DEFAULT (MASK_80387 | MASK_IEEE_FP | \
MASK_FLOAT_RETURNS | MASK_ALIGN_DOUBLE | MASK_MS_BITFIELD_LAYOUT)
+/* Sometimes certain combinations of command options do not make
+ sense on a particular target machine. You can define a macro
+ `OVERRIDE_OPTIONS' to take account of this. This macro, if
+ defined, is executed once just after all the command options have
+ been parsed.
+
+ Don't use this macro to turn on various extra optimizations for
+ `-O'. That is what `OPTIMIZATION_OPTIONS' is for. */
+#undef OVERRIDE_OPTIONS
+extern void netware_override_options (void);
+#define OVERRIDE_OPTIONS netware_override_options ()
+
#undef MATH_LIBRARY
#define MATH_LIBRARY ""
@@ -142,13 +154,15 @@ along with GCC; see the file COPYING3. If not see
function named by the symbol (such as what section it is in).
On i386 running NetWare, modify the assembler name with an underscore (_)
- prefix and a suffix consisting of an atsign (@) followed by a string of
- digits that represents the number of bytes of arguments passed to the
- function, if it has the attribute STDCALL. Alternatively, if it has the
- REGPARM attribute, prefix it with an underscore (_), a digit representing
- the number of registers used, and an atsign (@). */
+ or atsign (@) prefix and a suffix consisting of an atsign (@) followed by
+ a string of digits that represents the number of bytes of arguments passed
+ to the function, if it has the attribute STDCALL. Alternatively, if it has
+ the REGPARM attribute, prefix it with an underscore (_), a digit
+ representing the number of registers used, and an atsign (@). */
void i386_nlm_encode_section_info (tree, rtx, int);
+extern tree i386_nlm_mangle_decl_assembler_name (tree, tree);
const char *i386_nlm_strip_name_encoding (const char *);
#define SUBTARGET_ENCODE_SECTION_INFO i386_nlm_encode_section_info
+#define TARGET_MANGLE_DECL_ASSEMBLER_NAME i386_nlm_mangle_decl_assembler_name
#undef TARGET_STRIP_NAME_ENCODING
#define TARGET_STRIP_NAME_ENCODING i386_nlm_strip_name_encoding
diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
index 43f7ced8c03..97250dbd2ed 100644
--- a/gcc/config/i386/sse.md
+++ b/gcc/config/i386/sse.md
@@ -36,6 +36,9 @@
(define_mode_iterator SSEMODEF4 [SF DF V4SF V2DF])
(define_mode_iterator SSEMODEF2P [V4SF V2DF])
+;; Mapping from float mode to required SSE level
+(define_mode_attr sse [(SF "sse") (DF "sse2") (V4SF "sse") (V2DF "sse2")])
+
;; Mapping from integer vector mode to mnemonic suffix
(define_mode_attr ssevecsize [(V16QI "b") (V8HI "w") (V4SI "d") (V2DI "q")])
@@ -137,12 +140,12 @@
gcc_unreachable ();
})
-(define_expand "movv4sf"
- [(set (match_operand:V4SF 0 "nonimmediate_operand" "")
- (match_operand:V4SF 1 "nonimmediate_operand" ""))]
+(define_expand "mov<mode>"
+ [(set (match_operand:SSEMODEF2P 0 "nonimmediate_operand" "")
+ (match_operand:SSEMODEF2P 1 "nonimmediate_operand" ""))]
"TARGET_SSE"
{
- ix86_expand_vector_move (V4SFmode, operands);
+ ix86_expand_vector_move (<MODE>mode, operands);
DONE;
})
@@ -181,15 +184,6 @@
operands[2] = CONST0_RTX (V4SFmode);
})
-(define_expand "movv2df"
- [(set (match_operand:V2DF 0 "nonimmediate_operand" "")
- (match_operand:V2DF 1 "nonimmediate_operand" ""))]
- "TARGET_SSE"
-{
- ix86_expand_vector_move (V2DFmode, operands);
- DONE;
-})
-
(define_insn "*movv2df_internal"
[(set (match_operand:V2DF 0 "nonimmediate_operand" "=x,x,m")
(match_operand:V2DF 1 "nonimmediate_or_sse_const_operand" "C,xm,x"))]
@@ -249,23 +243,16 @@
DONE;
})
-(define_insn "sse_movups"
- [(set (match_operand:V4SF 0 "nonimmediate_operand" "=x,m")
- (unspec:V4SF [(match_operand:V4SF 1 "nonimmediate_operand" "xm,x")]
- UNSPEC_MOVU))]
- "TARGET_SSE && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
- "movups\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssemov")
- (set_attr "mode" "V2DF")])
-
-(define_insn "sse2_movupd"
- [(set (match_operand:V2DF 0 "nonimmediate_operand" "=x,m")
- (unspec:V2DF [(match_operand:V2DF 1 "nonimmediate_operand" "xm,x")]
- UNSPEC_MOVU))]
- "TARGET_SSE2 && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
- "movupd\t{%1, %0|%0, %1}"
+(define_insn "<sse>_movup<ssemodesuffixf2c>"
+ [(set (match_operand:SSEMODEF2P 0 "nonimmediate_operand" "=x,m")
+ (unspec:SSEMODEF2P
+ [(match_operand:SSEMODEF2P 1 "nonimmediate_operand" "xm,x")]
+ UNSPEC_MOVU))]
+ "SSE_VEC_FLOAT_MODE_P (<MODE>mode)
+ && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
+ "movup<ssemodesuffixf2c>\t{%1, %0|%0, %1}"
[(set_attr "type" "ssemov")
- (set_attr "mode" "V2DF")])
+ (set_attr "mode" "<MODE>")])
(define_insn "sse2_movdqu"
[(set (match_operand:V16QI 0 "nonimmediate_operand" "=x,m")
@@ -277,23 +264,15 @@
(set_attr "prefix_data16" "1")
(set_attr "mode" "TI")])
-(define_insn "sse_movntv4sf"
- [(set (match_operand:V4SF 0 "memory_operand" "=m")
- (unspec:V4SF [(match_operand:V4SF 1 "register_operand" "x")]
- UNSPEC_MOVNT))]
- "TARGET_SSE"
- "movntps\t{%1, %0|%0, %1}"
+(define_insn "<sse>_movnt<mode>"
+ [(set (match_operand:SSEMODEF2P 0 "memory_operand" "=m")
+ (unspec:SSEMODEF2P
+ [(match_operand:SSEMODEF2P 1 "register_operand" "x")]
+ UNSPEC_MOVNT))]
+ "SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
+ "movntp<ssemodesuffixf2c>\t{%1, %0|%0, %1}"
[(set_attr "type" "ssemov")
- (set_attr "mode" "V4SF")])
-
-(define_insn "sse2_movntv2df"
- [(set (match_operand:V2DF 0 "memory_operand" "=m")
- (unspec:V2DF [(match_operand:V2DF 1 "register_operand" "x")]
- UNSPEC_MOVNT))]
- "TARGET_SSE2"
- "movntpd\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "V2DF")])
+ (set_attr "mode" "<MODE>")])
(define_insn "sse2_movntv2di"
[(set (match_operand:V2DI 0 "memory_operand" "=m")
@@ -328,18 +307,20 @@
; that directly map to insns are defined; it would be possible to
; define patterns for other modes that would expand to several insns.
-(define_expand "storentv4sf"
- [(set (match_operand:V4SF 0 "memory_operand" "")
- (unspec:V4SF [(match_operand:V4SF 1 "register_operand" "")]
- UNSPEC_MOVNT))]
- "TARGET_SSE"
+(define_expand "storent<mode>"
+ [(set (match_operand:SSEMODEF2P 0 "memory_operand" "")
+ (unspec:SSEMODEF2P
+ [(match_operand:SSEMODEF2P 1 "register_operand" "")]
+ UNSPEC_MOVNT))]
+ "SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
"")
-(define_expand "storentv2df"
- [(set (match_operand:V2DF 0 "memory_operand" "")
- (unspec:V2DF [(match_operand:V2DF 1 "register_operand" "")]
- UNSPEC_MOVNT))]
- "TARGET_SSE2"
+(define_expand "storent<mode>"
+ [(set (match_operand:MODEF 0 "memory_operand" "")
+ (unspec:MODEF
+ [(match_operand:MODEF 1 "register_operand" "")]
+ UNSPEC_MOVNT))]
+ "TARGET_SSE4A"
"")
(define_expand "storentv2di"
@@ -356,121 +337,120 @@
"TARGET_SSE2"
"")
-(define_expand "storentdf"
- [(set (match_operand:DF 0 "memory_operand" "")
- (unspec:DF [(match_operand:DF 1 "register_operand" "")]
- UNSPEC_MOVNT))]
- "TARGET_SSE4A"
- "")
-
-(define_expand "storentsf"
- [(set (match_operand:SF 0 "memory_operand" "")
- (unspec:SF [(match_operand:SF 1 "register_operand" "")]
- UNSPEC_MOVNT))]
- "TARGET_SSE4A"
- "")
-
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
-;; Parallel single-precision floating point arithmetic
+;; Parallel floating point arithmetic
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(define_expand "negv4sf2"
- [(set (match_operand:V4SF 0 "register_operand" "")
- (neg:V4SF (match_operand:V4SF 1 "register_operand" "")))]
- "TARGET_SSE"
- "ix86_expand_fp_absneg_operator (NEG, V4SFmode, operands); DONE;")
+(define_expand "neg<mode>2"
+ [(set (match_operand:SSEMODEF2P 0 "register_operand" "")
+ (neg:SSEMODEF2P (match_operand:SSEMODEF2P 1 "register_operand" "")))]
+ "SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
+ "ix86_expand_fp_absneg_operator (NEG, <MODE>mode, operands); DONE;")
-(define_expand "absv4sf2"
- [(set (match_operand:V4SF 0 "register_operand" "")
- (abs:V4SF (match_operand:V4SF 1 "register_operand" "")))]
- "TARGET_SSE"
- "ix86_expand_fp_absneg_operator (ABS, V4SFmode, operands); DONE;")
+(define_expand "abs<mode>2"
+ [(set (match_operand:SSEMODEF2P 0 "register_operand" "")
+ (abs:SSEMODEF2P (match_operand:SSEMODEF2P 1 "register_operand" "")))]
+ "SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
+ "ix86_expand_fp_absneg_operator (ABS, <MODE>mode, operands); DONE;")
-(define_expand "addv4sf3"
- [(set (match_operand:V4SF 0 "register_operand" "")
- (plus:V4SF (match_operand:V4SF 1 "nonimmediate_operand" "")
- (match_operand:V4SF 2 "nonimmediate_operand" "")))]
- "TARGET_SSE"
- "ix86_fixup_binary_operands_no_copy (PLUS, V4SFmode, operands);")
+(define_expand "add<mode>3"
+ [(set (match_operand:SSEMODEF2P 0 "register_operand" "")
+ (plus:SSEMODEF2P
+ (match_operand:SSEMODEF2P 1 "nonimmediate_operand" "")
+ (match_operand:SSEMODEF2P 2 "nonimmediate_operand" "")))]
+ "SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
+ "ix86_fixup_binary_operands_no_copy (PLUS, <MODE>mode, operands);")
-(define_insn "*addv4sf3"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (plus:V4SF (match_operand:V4SF 1 "nonimmediate_operand" "%0")
- (match_operand:V4SF 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE && ix86_binary_operator_ok (PLUS, V4SFmode, operands)"
- "addps\t{%2, %0|%0, %2}"
+(define_insn "*add<mode>3"
+ [(set (match_operand:SSEMODEF2P 0 "register_operand" "=x")
+ (plus:SSEMODEF2P
+ (match_operand:SSEMODEF2P 1 "nonimmediate_operand" "%0")
+ (match_operand:SSEMODEF2P 2 "nonimmediate_operand" "xm")))]
+ "SSE_VEC_FLOAT_MODE_P (<MODE>mode)
+ && ix86_binary_operator_ok (PLUS, <MODE>mode, operands)"
+ "addp<ssemodesuffixf2c>\t{%2, %0|%0, %2}"
[(set_attr "type" "sseadd")
- (set_attr "mode" "V4SF")])
+ (set_attr "mode" "<MODE>")])
-(define_insn "sse_vmaddv4sf3"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (vec_merge:V4SF
- (plus:V4SF (match_operand:V4SF 1 "register_operand" "0")
- (match_operand:V4SF 2 "nonimmediate_operand" "xm"))
+(define_insn "<sse>_vmadd<mode>3"
+ [(set (match_operand:SSEMODEF2P 0 "register_operand" "=x")
+ (vec_merge:SSEMODEF2P
+ (plus:SSEMODEF2P
+ (match_operand:SSEMODEF2P 1 "register_operand" "0")
+ (match_operand:SSEMODEF2P 2 "nonimmediate_operand" "xm"))
(match_dup 1)
(const_int 1)))]
- "TARGET_SSE && ix86_binary_operator_ok (PLUS, V4SFmode, operands)"
- "addss\t{%2, %0|%0, %2}"
+ "SSE_VEC_FLOAT_MODE_P (<MODE>mode)
+ && ix86_binary_operator_ok (PLUS, V4SFmode, operands)"
+ "adds<ssemodesuffixf2c>\t{%2, %0|%0, %2}"
[(set_attr "type" "sseadd")
- (set_attr "mode" "SF")])
+ (set_attr "mode" "<ssescalarmode>")])
-(define_expand "subv4sf3"
- [(set (match_operand:V4SF 0 "register_operand" "")
- (minus:V4SF (match_operand:V4SF 1 "register_operand" "")
- (match_operand:V4SF 2 "nonimmediate_operand" "")))]
- "TARGET_SSE"
- "ix86_fixup_binary_operands_no_copy (MINUS, V4SFmode, operands);")
+(define_expand "sub<mode>3"
+ [(set (match_operand:SSEMODEF2P 0 "register_operand" "")
+ (minus:SSEMODEF2P
+ (match_operand:SSEMODEF2P 1 "register_operand" "")
+ (match_operand:SSEMODEF2P 2 "nonimmediate_operand" "")))]
+ "SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
+ "ix86_fixup_binary_operands_no_copy (MINUS, <MODE>mode, operands);")
-(define_insn "*subv4sf3"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (minus:V4SF (match_operand:V4SF 1 "register_operand" "0")
- (match_operand:V4SF 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE"
- "subps\t{%2, %0|%0, %2}"
+(define_insn "*sub<mode>3"
+ [(set (match_operand:SSEMODEF2P 0 "register_operand" "=x")
+ (minus:SSEMODEF2P
+ (match_operand:SSEMODEF2P 1 "register_operand" "0")
+ (match_operand:SSEMODEF2P 2 "nonimmediate_operand" "xm")))]
+ "SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
+ "subp<ssemodesuffixf2c>\t{%2, %0|%0, %2}"
[(set_attr "type" "sseadd")
- (set_attr "mode" "V4SF")])
+ (set_attr "mode" "<MODE>")])
-(define_insn "sse_vmsubv4sf3"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (vec_merge:V4SF
- (minus:V4SF (match_operand:V4SF 1 "register_operand" "0")
- (match_operand:V4SF 2 "nonimmediate_operand" "xm"))
+(define_insn "<sse>_vmsub<mode>3"
+ [(set (match_operand:SSEMODEF2P 0 "register_operand" "=x")
+ (vec_merge:SSEMODEF2P
+ (minus:SSEMODEF2P
+ (match_operand:SSEMODEF2P 1 "register_operand" "0")
+ (match_operand:SSEMODEF2P 2 "nonimmediate_operand" "xm"))
(match_dup 1)
(const_int 1)))]
- "TARGET_SSE"
- "subss\t{%2, %0|%0, %2}"
+ "SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
+ "subs<ssemodesuffixf2c>\t{%2, %0|%0, %2}"
[(set_attr "type" "sseadd")
- (set_attr "mode" "SF")])
+ (set_attr "mode" "<ssescalarmode>")])
-(define_expand "mulv4sf3"
- [(set (match_operand:V4SF 0 "register_operand" "")
- (mult:V4SF (match_operand:V4SF 1 "nonimmediate_operand" "")
- (match_operand:V4SF 2 "nonimmediate_operand" "")))]
- "TARGET_SSE"
- "ix86_fixup_binary_operands_no_copy (MULT, V4SFmode, operands);")
+(define_expand "mul<mode>3"
+ [(set (match_operand:SSEMODEF2P 0 "register_operand" "")
+ (mult:SSEMODEF2P
+ (match_operand:SSEMODEF2P 1 "nonimmediate_operand" "")
+ (match_operand:SSEMODEF2P 2 "nonimmediate_operand" "")))]
+ "SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
+ "ix86_fixup_binary_operands_no_copy (MULT, <MODE>mode, operands);")
-(define_insn "*mulv4sf3"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (mult:V4SF (match_operand:V4SF 1 "nonimmediate_operand" "%0")
- (match_operand:V4SF 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE && ix86_binary_operator_ok (MULT, V4SFmode, operands)"
- "mulps\t{%2, %0|%0, %2}"
+(define_insn "*mul<mode>3"
+ [(set (match_operand:SSEMODEF2P 0 "register_operand" "=x")
+ (mult:SSEMODEF2P
+ (match_operand:SSEMODEF2P 1 "nonimmediate_operand" "%0")
+ (match_operand:SSEMODEF2P 2 "nonimmediate_operand" "xm")))]
+ "SSE_VEC_FLOAT_MODE_P (<MODE>mode)
+ && ix86_binary_operator_ok (MULT, <MODE>mode, operands)"
+ "mulp<ssemodesuffixf2c>\t{%2, %0|%0, %2}"
[(set_attr "type" "ssemul")
- (set_attr "mode" "V4SF")])
+ (set_attr "mode" "<MODE>")])
-(define_insn "sse_vmmulv4sf3"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (vec_merge:V4SF
- (mult:V4SF (match_operand:V4SF 1 "register_operand" "0")
- (match_operand:V4SF 2 "nonimmediate_operand" "xm"))
+(define_insn "<sse>_vmmul<mode>3"
+ [(set (match_operand:SSEMODEF2P 0 "register_operand" "=x")
+ (vec_merge:SSEMODEF2P
+ (mult:SSEMODEF2P
+ (match_operand:SSEMODEF2P 1 "register_operand" "0")
+ (match_operand:SSEMODEF2P 2 "nonimmediate_operand" "xm"))
(match_dup 1)
(const_int 1)))]
- "TARGET_SSE && ix86_binary_operator_ok (MULT, V4SFmode, operands)"
- "mulss\t{%2, %0|%0, %2}"
+ "SSE_VEC_FLOAT_MODE_P (<MODE>mode)
+ && ix86_binary_operator_ok (MULT, <MODE>mode, operands)"
+ "muls<ssemodesuffixf2c>\t{%2, %0|%0, %2}"
[(set_attr "type" "ssemul")
- (set_attr "mode" "SF")])
+ (set_attr "mode" "<ssescalarmode>")])
(define_expand "divv4sf3"
[(set (match_operand:V4SF 0 "register_operand" "")
@@ -490,31 +470,40 @@
}
})
-(define_insn "sse_divv4sf3"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (div:V4SF (match_operand:V4SF 1 "register_operand" "0")
- (match_operand:V4SF 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE"
- "divps\t{%2, %0|%0, %2}"
+(define_expand "divv2df3"
+ [(set (match_operand:V2DF 0 "register_operand" "")
+ (div:V2DF (match_operand:V2DF 1 "register_operand" "")
+ (match_operand:V2DF 2 "nonimmediate_operand" "")))]
+ "TARGET_SSE2"
+ "ix86_fixup_binary_operands_no_copy (DIV, V2DFmode, operands);")
+
+(define_insn "<sse>_div<mode>3"
+ [(set (match_operand:SSEMODEF2P 0 "register_operand" "=x")
+ (div:SSEMODEF2P
+ (match_operand:SSEMODEF2P 1 "register_operand" "0")
+ (match_operand:SSEMODEF2P 2 "nonimmediate_operand" "xm")))]
+ "SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
+ "divp<ssemodesuffixf2c>\t{%2, %0|%0, %2}"
[(set_attr "type" "ssediv")
- (set_attr "mode" "V4SF")])
+ (set_attr "mode" "<MODE>")])
-(define_insn "sse_vmdivv4sf3"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (vec_merge:V4SF
- (div:V4SF (match_operand:V4SF 1 "register_operand" "0")
- (match_operand:V4SF 2 "nonimmediate_operand" "xm"))
+(define_insn "<sse>_vmdiv<mode>3"
+ [(set (match_operand:SSEMODEF2P 0 "register_operand" "=x")
+ (vec_merge:SSEMODEF2P
+ (div:SSEMODEF2P
+ (match_operand:SSEMODEF2P 1 "register_operand" "0")
+ (match_operand:SSEMODEF2P 2 "nonimmediate_operand" "xm"))
(match_dup 1)
(const_int 1)))]
- "TARGET_SSE"
- "divss\t{%2, %0|%0, %2}"
+ "SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
+ "divs<ssemodesuffixf2c>\t{%2, %0|%0, %2}"
[(set_attr "type" "ssediv")
- (set_attr "mode" "SF")])
+ (set_attr "mode" "<ssescalarmode>")])
(define_insn "sse_rcpv4sf2"
[(set (match_operand:V4SF 0 "register_operand" "=x")
(unspec:V4SF
- [(match_operand:V4SF 1 "nonimmediate_operand" "xm")] UNSPEC_RCP))]
+ [(match_operand:V4SF 1 "nonimmediate_operand" "xm")] UNSPEC_RCP))]
"TARGET_SSE"
"rcpps\t{%1, %0|%0, %1}"
[(set_attr "type" "sse")
@@ -532,6 +521,48 @@
[(set_attr "type" "sse")
(set_attr "mode" "SF")])
+(define_expand "sqrtv4sf2"
+ [(set (match_operand:V4SF 0 "register_operand" "")
+ (sqrt:V4SF (match_operand:V4SF 1 "nonimmediate_operand" "")))]
+ "TARGET_SSE"
+{
+ if (TARGET_SSE_MATH && TARGET_RECIP && !optimize_size
+ && flag_finite_math_only && !flag_trapping_math
+ && flag_unsafe_math_optimizations)
+ {
+ ix86_emit_swsqrtsf (operands[0], operands[1], V4SFmode, 0);
+ DONE;
+ }
+})
+
+(define_insn "sse_sqrtv4sf2"
+ [(set (match_operand:V4SF 0 "register_operand" "=x")
+ (sqrt:V4SF (match_operand:V4SF 1 "nonimmediate_operand" "xm")))]
+ "TARGET_SSE"
+ "sqrtps\t{%1, %0|%0, %1}"
+ [(set_attr "type" "sse")
+ (set_attr "mode" "V4SF")])
+
+(define_insn "sqrtv2df2"
+ [(set (match_operand:V2DF 0 "register_operand" "=x")
+ (sqrt:V2DF (match_operand:V2DF 1 "nonimmediate_operand" "xm")))]
+ "TARGET_SSE2"
+ "sqrtpd\t{%1, %0|%0, %1}"
+ [(set_attr "type" "sse")
+ (set_attr "mode" "V2DF")])
+
+(define_insn "<sse>_vmsqrt<mode>2"
+ [(set (match_operand:SSEMODEF2P 0 "register_operand" "=x")
+ (vec_merge:SSEMODEF2P
+ (sqrt:SSEMODEF2P
+ (match_operand:SSEMODEF2P 1 "nonimmediate_operand" "xm"))
+ (match_operand:SSEMODEF2P 2 "register_operand" "0")
+ (const_int 1)))]
+ "SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
+ "sqrts<ssemodesuffixf2c>\t{%1, %0|%0, %1}"
+ [(set_attr "type" "sse")
+ (set_attr "mode" "<ssescalarmode>")])
+
(define_expand "rsqrtv4sf2"
[(set (match_operand:V4SF 0 "register_operand" "")
(unspec:V4SF
@@ -563,126 +594,101 @@
[(set_attr "type" "sse")
(set_attr "mode" "SF")])
-(define_expand "sqrtv4sf2"
- [(set (match_operand:V4SF 0 "register_operand" "")
- (sqrt:V4SF (match_operand:V4SF 1 "nonimmediate_operand" "")))]
- "TARGET_SSE"
-{
- if (TARGET_SSE_MATH && TARGET_RECIP && !optimize_size
- && flag_finite_math_only && !flag_trapping_math
- && flag_unsafe_math_optimizations)
- {
- ix86_emit_swsqrtsf (operands[0], operands[1], V4SFmode, 0);
- DONE;
- }
-})
-
-(define_insn "sse_sqrtv4sf2"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (sqrt:V4SF (match_operand:V4SF 1 "nonimmediate_operand" "xm")))]
- "TARGET_SSE"
- "sqrtps\t{%1, %0|%0, %1}"
- [(set_attr "type" "sse")
- (set_attr "mode" "V4SF")])
-
-(define_insn "sse_vmsqrtv4sf2"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (vec_merge:V4SF
- (sqrt:V4SF (match_operand:V4SF 1 "nonimmediate_operand" "xm"))
- (match_operand:V4SF 2 "register_operand" "0")
- (const_int 1)))]
- "TARGET_SSE"
- "sqrtss\t{%1, %0|%0, %1}"
- [(set_attr "type" "sse")
- (set_attr "mode" "SF")])
-
;; ??? For !flag_finite_math_only, the representation with SMIN/SMAX
;; isn't really correct, as those rtl operators aren't defined when
;; applied to NaNs. Hopefully the optimizers won't get too smart on us.
-(define_expand "smaxv4sf3"
- [(set (match_operand:V4SF 0 "register_operand" "")
- (smax:V4SF (match_operand:V4SF 1 "nonimmediate_operand" "")
- (match_operand:V4SF 2 "nonimmediate_operand" "")))]
- "TARGET_SSE"
+(define_expand "smin<mode>3"
+ [(set (match_operand:SSEMODEF2P 0 "register_operand" "")
+ (smin:SSEMODEF2P
+ (match_operand:SSEMODEF2P 1 "nonimmediate_operand" "")
+ (match_operand:SSEMODEF2P 2 "nonimmediate_operand" "")))]
+ "SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
{
if (!flag_finite_math_only)
- operands[1] = force_reg (V4SFmode, operands[1]);
- ix86_fixup_binary_operands_no_copy (SMAX, V4SFmode, operands);
+ operands[1] = force_reg (<MODE>mode, operands[1]);
+ ix86_fixup_binary_operands_no_copy (SMIN, <MODE>mode, operands);
})
-(define_insn "*smaxv4sf3_finite"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (smax:V4SF (match_operand:V4SF 1 "nonimmediate_operand" "%0")
- (match_operand:V4SF 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE && flag_finite_math_only
- && ix86_binary_operator_ok (SMAX, V4SFmode, operands)"
- "maxps\t{%2, %0|%0, %2}"
- [(set_attr "type" "sse")
- (set_attr "mode" "V4SF")])
+(define_insn "*smin<mode>3_finite"
+ [(set (match_operand:SSEMODEF2P 0 "register_operand" "=x")
+ (smin:SSEMODEF2P
+ (match_operand:SSEMODEF2P 1 "nonimmediate_operand" "%0")
+ (match_operand:SSEMODEF2P 2 "nonimmediate_operand" "xm")))]
+ "SSE_VEC_FLOAT_MODE_P (<MODE>mode) && flag_finite_math_only
+ && ix86_binary_operator_ok (SMIN, <MODE>mode, operands)"
+ "minp<ssemodesuffixf2c>\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sseadd")
+ (set_attr "mode" "<MODE>")])
-(define_insn "*smaxv4sf3"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (smax:V4SF (match_operand:V4SF 1 "register_operand" "0")
- (match_operand:V4SF 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE"
- "maxps\t{%2, %0|%0, %2}"
- [(set_attr "type" "sse")
- (set_attr "mode" "V4SF")])
+(define_insn "*smin<mode>3"
+ [(set (match_operand:SSEMODEF2P 0 "register_operand" "=x")
+ (smin:SSEMODEF2P
+ (match_operand:SSEMODEF2P 1 "register_operand" "0")
+ (match_operand:SSEMODEF2P 2 "nonimmediate_operand" "xm")))]
+ "SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
+ "minp<ssemodesuffixf2c>\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sseadd")
+ (set_attr "mode" "<MODE>")])
-(define_insn "sse_vmsmaxv4sf3"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (vec_merge:V4SF
- (smax:V4SF (match_operand:V4SF 1 "register_operand" "0")
- (match_operand:V4SF 2 "nonimmediate_operand" "xm"))
+(define_insn "<sse>_vmsmin<mode>3"
+ [(set (match_operand:SSEMODEF2P 0 "register_operand" "=x")
+ (vec_merge:SSEMODEF2P
+ (smin:SSEMODEF2P
+ (match_operand:SSEMODEF2P 1 "register_operand" "0")
+ (match_operand:SSEMODEF2P 2 "nonimmediate_operand" "xm"))
(match_dup 1)
(const_int 1)))]
- "TARGET_SSE"
- "maxss\t{%2, %0|%0, %2}"
+ "SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
+ "mins<ssemodesuffixf2c>\t{%2, %0|%0, %2}"
[(set_attr "type" "sse")
- (set_attr "mode" "SF")])
+ (set_attr "mode" "<ssescalarmode>")])
-(define_expand "sminv4sf3"
- [(set (match_operand:V4SF 0 "register_operand" "")
- (smin:V4SF (match_operand:V4SF 1 "nonimmediate_operand" "")
- (match_operand:V4SF 2 "nonimmediate_operand" "")))]
- "TARGET_SSE"
+(define_expand "smax<mode>3"
+ [(set (match_operand:SSEMODEF2P 0 "register_operand" "")
+ (smax:SSEMODEF2P
+ (match_operand:SSEMODEF2P 1 "nonimmediate_operand" "")
+ (match_operand:SSEMODEF2P 2 "nonimmediate_operand" "")))]
+ "SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
{
if (!flag_finite_math_only)
- operands[1] = force_reg (V4SFmode, operands[1]);
- ix86_fixup_binary_operands_no_copy (SMIN, V4SFmode, operands);
+ operands[1] = force_reg (<MODE>mode, operands[1]);
+ ix86_fixup_binary_operands_no_copy (SMAX, <MODE>mode, operands);
})
-(define_insn "*sminv4sf3_finite"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (smin:V4SF (match_operand:V4SF 1 "nonimmediate_operand" "%0")
- (match_operand:V4SF 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE && flag_finite_math_only
- && ix86_binary_operator_ok (SMIN, V4SFmode, operands)"
- "minps\t{%2, %0|%0, %2}"
- [(set_attr "type" "sse")
- (set_attr "mode" "V4SF")])
+(define_insn "*smax<mode>3_finite"
+ [(set (match_operand:SSEMODEF2P 0 "register_operand" "=x")
+ (smax:SSEMODEF2P
+ (match_operand:SSEMODEF2P 1 "nonimmediate_operand" "%0")
+ (match_operand:SSEMODEF2P 2 "nonimmediate_operand" "xm")))]
+ "SSE_VEC_FLOAT_MODE_P (<MODE>mode) && flag_finite_math_only
+ && ix86_binary_operator_ok (SMAX, <MODE>mode, operands)"
+ "maxp<ssemodesuffixf2c>\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sseadd")
+ (set_attr "mode" "<MODE>")])
-(define_insn "*sminv4sf3"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (smin:V4SF (match_operand:V4SF 1 "register_operand" "0")
- (match_operand:V4SF 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE"
- "minps\t{%2, %0|%0, %2}"
- [(set_attr "type" "sse")
- (set_attr "mode" "V4SF")])
+(define_insn "*smax<mode>3"
+ [(set (match_operand:SSEMODEF2P 0 "register_operand" "=x")
+ (smax:SSEMODEF2P
+ (match_operand:SSEMODEF2P 1 "register_operand" "0")
+ (match_operand:SSEMODEF2P 2 "nonimmediate_operand" "xm")))]
+ "SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
+ "maxp<ssemodesuffixf2c>\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sseadd")
+ (set_attr "mode" "<MODE>")])
-(define_insn "sse_vmsminv4sf3"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (vec_merge:V4SF
- (smin:V4SF (match_operand:V4SF 1 "register_operand" "0")
- (match_operand:V4SF 2 "nonimmediate_operand" "xm"))
- (match_dup 1)
- (const_int 1)))]
- "TARGET_SSE"
- "minss\t{%2, %0|%0, %2}"
- [(set_attr "type" "sse")
- (set_attr "mode" "SF")])
+(define_insn "<sse>_vmsmax<mode>3"
+ [(set (match_operand:SSEMODEF2P 0 "register_operand" "=x")
+ (vec_merge:SSEMODEF2P
+ (smax:SSEMODEF2P
+ (match_operand:SSEMODEF2P 1 "register_operand" "0")
+ (match_operand:SSEMODEF2P 2 "nonimmediate_operand" "xm"))
+ (match_dup 1)
+ (const_int 1)))]
+ "SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
+ "maxs<ssemodesuffixf2c>\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sseadd")
+ (set_attr "mode" "<ssescalarmode>")])
;; These versions of the min/max patterns implement exactly the operations
;; min = (op1 < op2 ? op1 : op2)
@@ -690,45 +696,27 @@
;; Their operands are not commutative, and thus they may be used in the
;; presence of -0.0 and NaN.
-(define_insn "*ieee_sminv4sf3"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (unspec:V4SF [(match_operand:V4SF 1 "register_operand" "0")
- (match_operand:V4SF 2 "nonimmediate_operand" "xm")]
- UNSPEC_IEEE_MIN))]
- "TARGET_SSE"
- "minps\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseadd")
- (set_attr "mode" "V4SF")])
-
-(define_insn "*ieee_smaxv4sf3"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (unspec:V4SF [(match_operand:V4SF 1 "register_operand" "0")
- (match_operand:V4SF 2 "nonimmediate_operand" "xm")]
- UNSPEC_IEEE_MAX))]
- "TARGET_SSE"
- "maxps\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseadd")
- (set_attr "mode" "V4SF")])
-
-(define_insn "*ieee_sminv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (unspec:V2DF [(match_operand:V2DF 1 "register_operand" "0")
- (match_operand:V2DF 2 "nonimmediate_operand" "xm")]
- UNSPEC_IEEE_MIN))]
- "TARGET_SSE2"
- "minpd\t{%2, %0|%0, %2}"
+(define_insn "*ieee_smin<mode>3"
+ [(set (match_operand:SSEMODEF2P 0 "register_operand" "=x")
+ (unspec:SSEMODEF2P
+ [(match_operand:SSEMODEF2P 1 "register_operand" "0")
+ (match_operand:SSEMODEF2P 2 "nonimmediate_operand" "xm")]
+ UNSPEC_IEEE_MIN))]
+ "SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
+ "minp<ssemodesuffixf2c>\t{%2, %0|%0, %2}"
[(set_attr "type" "sseadd")
- (set_attr "mode" "V2DF")])
+ (set_attr "mode" "<MODE>")])
-(define_insn "*ieee_smaxv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (unspec:V2DF [(match_operand:V2DF 1 "register_operand" "0")
- (match_operand:V2DF 2 "nonimmediate_operand" "xm")]
- UNSPEC_IEEE_MAX))]
- "TARGET_SSE2"
- "maxpd\t{%2, %0|%0, %2}"
+(define_insn "*ieee_smax<mode>3"
+ [(set (match_operand:SSEMODEF2P 0 "register_operand" "=x")
+ (unspec:SSEMODEF2P
+ [(match_operand:SSEMODEF2P 1 "register_operand" "0")
+ (match_operand:SSEMODEF2P 2 "nonimmediate_operand" "xm")]
+ UNSPEC_IEEE_MAX))]
+ "SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
+ "maxp<ssemodesuffixf2c>\t{%2, %0|%0, %2}"
[(set_attr "type" "sseadd")
- (set_attr "mode" "V2DF")])
+ (set_attr "mode" "<MODE>")])
(define_insn "sse3_addsubv4sf3"
[(set (match_operand:V4SF 0 "register_operand" "=x")
@@ -744,6 +732,19 @@
(set_attr "prefix_rep" "1")
(set_attr "mode" "V4SF")])
+(define_insn "sse3_addsubv2df3"
+ [(set (match_operand:V2DF 0 "register_operand" "=x")
+ (vec_merge:V2DF
+ (plus:V2DF
+ (match_operand:V2DF 1 "register_operand" "0")
+ (match_operand:V2DF 2 "nonimmediate_operand" "xm"))
+ (minus:V2DF (match_dup 1) (match_dup 2))
+ (const_int 1)))]
+ "TARGET_SSE3"
+ "addsubpd\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sseadd")
+ (set_attr "mode" "V2DF")])
+
(define_insn "sse3_haddv4sf3"
[(set (match_operand:V4SF 0 "register_operand" "=x")
(vec_concat:V4SF
@@ -771,6 +772,24 @@
(set_attr "prefix_rep" "1")
(set_attr "mode" "V4SF")])
+(define_insn "sse3_haddv2df3"
+ [(set (match_operand:V2DF 0 "register_operand" "=x")
+ (vec_concat:V2DF
+ (plus:DF
+ (vec_select:DF
+ (match_operand:V2DF 1 "register_operand" "0")
+ (parallel [(const_int 0)]))
+ (vec_select:DF (match_dup 1) (parallel [(const_int 1)])))
+ (plus:DF
+ (vec_select:DF
+ (match_operand:V2DF 2 "nonimmediate_operand" "xm")
+ (parallel [(const_int 0)]))
+ (vec_select:DF (match_dup 2) (parallel [(const_int 1)])))))]
+ "TARGET_SSE3"
+ "haddpd\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sseadd")
+ (set_attr "mode" "V2DF")])
+
(define_insn "sse3_hsubv4sf3"
[(set (match_operand:V4SF 0 "register_operand" "=x")
(vec_concat:V4SF
@@ -798,6 +817,24 @@
(set_attr "prefix_rep" "1")
(set_attr "mode" "V4SF")])
+(define_insn "sse3_hsubv2df3"
+ [(set (match_operand:V2DF 0 "register_operand" "=x")
+ (vec_concat:V2DF
+ (minus:DF
+ (vec_select:DF
+ (match_operand:V2DF 1 "register_operand" "0")
+ (parallel [(const_int 0)]))
+ (vec_select:DF (match_dup 1) (parallel [(const_int 1)])))
+ (minus:DF
+ (vec_select:DF
+ (match_operand:V2DF 2 "nonimmediate_operand" "xm")
+ (parallel [(const_int 0)]))
+ (vec_select:DF (match_dup 2) (parallel [(const_int 1)])))))]
+ "TARGET_SSE3"
+ "hsubpd\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sseadd")
+ (set_attr "mode" "V2DF")])
+
(define_expand "reduc_splus_v4sf"
[(match_operand:V4SF 0 "register_operand" "")
(match_operand:V4SF 1 "register_operand" "")]
@@ -814,6 +851,15 @@
DONE;
})
+(define_expand "reduc_splus_v2df"
+ [(match_operand:V2DF 0 "register_operand" "")
+ (match_operand:V2DF 1 "register_operand" "")]
+ "TARGET_SSE3"
+{
+ emit_insn (gen_sse3_haddv2df3 (operands[0], operands[1], operands[1]));
+ DONE;
+})
+
(define_expand "reduc_smax_v4sf"
[(match_operand:V4SF 0 "register_operand" "")
(match_operand:V4SF 1 "register_operand" "")]
@@ -834,80 +880,71 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
-;; Parallel single-precision floating point comparisons
+;; Parallel floating point comparisons
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(define_insn "sse_maskcmpv4sf3"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (match_operator:V4SF 3 "sse_comparison_operator"
- [(match_operand:V4SF 1 "register_operand" "0")
- (match_operand:V4SF 2 "nonimmediate_operand" "xm")]))]
- "TARGET_SSE && !TARGET_SSE5"
- "cmp%D3ps\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecmp")
- (set_attr "mode" "V4SF")])
-
-(define_insn "sse_maskcmpsf3"
- [(set (match_operand:SF 0 "register_operand" "=x")
- (match_operator:SF 3 "sse_comparison_operator"
- [(match_operand:SF 1 "register_operand" "0")
- (match_operand:SF 2 "nonimmediate_operand" "xm")]))]
- "TARGET_SSE && !TARGET_SSE5"
- "cmp%D3ss\t{%2, %0|%0, %2}"
+(define_insn "<sse>_maskcmp<mode>3"
+ [(set (match_operand:SSEMODEF4 0 "register_operand" "=x")
+ (match_operator:SSEMODEF4 3 "sse_comparison_operator"
+ [(match_operand:SSEMODEF4 1 "register_operand" "0")
+ (match_operand:SSEMODEF4 2 "nonimmediate_operand" "xm")]))]
+ "(SSE_FLOAT_MODE_P (<MODE>mode) || SSE_VEC_FLOAT_MODE_P (<MODE>mode))
+ && !TARGET_SSE5"
+ "cmp%D3<ssemodesuffixf4>\t{%2, %0|%0, %2}"
[(set_attr "type" "ssecmp")
- (set_attr "mode" "SF")])
+ (set_attr "mode" "<MODE>")])
-(define_insn "sse_vmmaskcmpv4sf3"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (vec_merge:V4SF
- (match_operator:V4SF 3 "sse_comparison_operator"
- [(match_operand:V4SF 1 "register_operand" "0")
- (match_operand:V4SF 2 "register_operand" "x")])
+(define_insn "<sse>_vmmaskcmp<mode>3"
+ [(set (match_operand:SSEMODEF2P 0 "register_operand" "=x")
+ (vec_merge:SSEMODEF2P
+ (match_operator:SSEMODEF2P 3 "sse_comparison_operator"
+ [(match_operand:SSEMODEF2P 1 "register_operand" "0")
+ (match_operand:SSEMODEF2P 2 "nonimmediate_operand" "xm")])
(match_dup 1)
(const_int 1)))]
- "TARGET_SSE && !TARGET_SSE5"
- "cmp%D3ss\t{%2, %0|%0, %2}"
+ "SSE_VEC_FLOAT_MODE_P (<MODE>mode) && !TARGET_SSE5"
+ "cmp%D3s<ssemodesuffixf2c>\t{%2, %0|%0, %2}"
[(set_attr "type" "ssecmp")
- (set_attr "mode" "SF")])
+ (set_attr "mode" "<ssescalarmode>")])
-(define_insn "sse_comi"
+(define_insn "<sse>_comi"
[(set (reg:CCFP FLAGS_REG)
(compare:CCFP
- (vec_select:SF
- (match_operand:V4SF 0 "register_operand" "x")
+ (vec_select:MODEF
+ (match_operand:<ssevecmode> 0 "register_operand" "x")
(parallel [(const_int 0)]))
- (vec_select:SF
- (match_operand:V4SF 1 "nonimmediate_operand" "xm")
+ (vec_select:MODEF
+ (match_operand:<ssevecmode> 1 "nonimmediate_operand" "xm")
(parallel [(const_int 0)]))))]
- "TARGET_SSE"
- "comiss\t{%1, %0|%0, %1}"
+ "SSE_FLOAT_MODE_P (<MODE>mode)"
+ "comis<ssemodefsuffix>\t{%1, %0|%0, %1}"
[(set_attr "type" "ssecomi")
- (set_attr "mode" "SF")])
+ (set_attr "mode" "<MODE>")])
-(define_insn "sse_ucomi"
+(define_insn "<sse>_ucomi"
[(set (reg:CCFPU FLAGS_REG)
(compare:CCFPU
- (vec_select:SF
- (match_operand:V4SF 0 "register_operand" "x")
+ (vec_select:MODEF
+ (match_operand:<ssevecmode> 0 "register_operand" "x")
(parallel [(const_int 0)]))
- (vec_select:SF
- (match_operand:V4SF 1 "nonimmediate_operand" "xm")
+ (vec_select:MODEF
+ (match_operand:<ssevecmode> 1 "nonimmediate_operand" "xm")
(parallel [(const_int 0)]))))]
- "TARGET_SSE"
- "ucomiss\t{%1, %0|%0, %1}"
+ "SSE_FLOAT_MODE_P (<MODE>mode)"
+ "ucomis<ssemodefsuffix>\t{%1, %0|%0, %1}"
[(set_attr "type" "ssecomi")
- (set_attr "mode" "SF")])
+ (set_attr "mode" "<MODE>")])
-(define_expand "vcondv4sf"
- [(set (match_operand:V4SF 0 "register_operand" "")
- (if_then_else:V4SF
+(define_expand "vcond<mode>"
+ [(set (match_operand:SSEMODEF2P 0 "register_operand" "")
+ (if_then_else:SSEMODEF2P
(match_operator 3 ""
- [(match_operand:V4SF 4 "nonimmediate_operand" "")
- (match_operand:V4SF 5 "nonimmediate_operand" "")])
- (match_operand:V4SF 1 "general_operand" "")
- (match_operand:V4SF 2 "general_operand" "")))]
- "TARGET_SSE"
+ [(match_operand:SSEMODEF2P 4 "nonimmediate_operand" "")
+ (match_operand:SSEMODEF2P 5 "nonimmediate_operand" "")])
+ (match_operand:SSEMODEF2P 1 "general_operand" "")
+ (match_operand:SSEMODEF2P 2 "general_operand" "")))]
+ "SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
{
if (ix86_expand_fp_vcond (operands))
DONE;
@@ -917,666 +954,123 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
-;; Parallel single-precision floating point logical operations
+;; Parallel floating point logical operations
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(define_expand "andv4sf3"
- [(set (match_operand:V4SF 0 "register_operand" "")
- (and:V4SF (match_operand:V4SF 1 "nonimmediate_operand" "")
- (match_operand:V4SF 2 "nonimmediate_operand" "")))]
- "TARGET_SSE"
- "ix86_fixup_binary_operands_no_copy (AND, V4SFmode, operands);")
+(define_expand "and<mode>3"
+ [(set (match_operand:SSEMODEF2P 0 "register_operand" "")
+ (and:SSEMODEF2P
+ (match_operand:SSEMODEF2P 1 "nonimmediate_operand" "")
+ (match_operand:SSEMODEF2P 2 "nonimmediate_operand" "")))]
+ "SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
+ "ix86_fixup_binary_operands_no_copy (AND, <MODE>mode, operands);")
-(define_insn "*andv4sf3"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (and:V4SF (match_operand:V4SF 1 "nonimmediate_operand" "%0")
- (match_operand:V4SF 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE && ix86_binary_operator_ok (AND, V4SFmode, operands)"
- "andps\t{%2, %0|%0, %2}"
+(define_insn "*and<mode>3"
+ [(set (match_operand:SSEMODEF2P 0 "register_operand" "=x")
+ (and:SSEMODEF2P
+ (match_operand:SSEMODEF2P 1 "nonimmediate_operand" "%0")
+ (match_operand:SSEMODEF2P 2 "nonimmediate_operand" "xm")))]
+ "SSE_VEC_FLOAT_MODE_P (<MODE>mode)
+ && ix86_binary_operator_ok (AND, V4SFmode, operands)"
+ "andp<ssemodesuffixf2c>\t{%2, %0|%0, %2}"
[(set_attr "type" "sselog")
- (set_attr "mode" "V4SF")])
+ (set_attr "mode" "<MODE>")])
-(define_insn "sse_nandv4sf3"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (and:V4SF (not:V4SF (match_operand:V4SF 1 "register_operand" "0"))
- (match_operand:V4SF 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE"
- "andnps\t{%2, %0|%0, %2}"
+(define_insn "<sse>_nand<mode>3"
+ [(set (match_operand:SSEMODEF2P 0 "register_operand" "=x")
+ (and:SSEMODEF2P
+ (not:SSEMODEF2P
+ (match_operand:SSEMODEF2P 1 "register_operand" "0"))
+ (match_operand:SSEMODEF2P 2 "nonimmediate_operand" "xm")))]
+ "SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
+ "andnp<ssemodesuffixf2c>\t{%2, %0|%0, %2}"
[(set_attr "type" "sselog")
- (set_attr "mode" "V4SF")])
+ (set_attr "mode" "<MODE>")])
-(define_expand "iorv4sf3"
- [(set (match_operand:V4SF 0 "register_operand" "")
- (ior:V4SF (match_operand:V4SF 1 "nonimmediate_operand" "")
- (match_operand:V4SF 2 "nonimmediate_operand" "")))]
- "TARGET_SSE"
- "ix86_fixup_binary_operands_no_copy (IOR, V4SFmode, operands);")
+(define_expand "ior<mode>3"
+ [(set (match_operand:SSEMODEF2P 0 "register_operand" "")
+ (ior:SSEMODEF2P
+ (match_operand:SSEMODEF2P 1 "nonimmediate_operand" "")
+ (match_operand:SSEMODEF2P 2 "nonimmediate_operand" "")))]
+ "SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
+ "ix86_fixup_binary_operands_no_copy (IOR, <MODE>mode, operands);")
-(define_insn "*iorv4sf3"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (ior:V4SF (match_operand:V4SF 1 "nonimmediate_operand" "%0")
- (match_operand:V4SF 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE && ix86_binary_operator_ok (IOR, V4SFmode, operands)"
- "orps\t{%2, %0|%0, %2}"
+(define_insn "*ior<mode>3"
+ [(set (match_operand:SSEMODEF2P 0 "register_operand" "=x")
+ (ior:SSEMODEF2P
+ (match_operand:SSEMODEF2P 1 "nonimmediate_operand" "%0")
+ (match_operand:SSEMODEF2P 2 "nonimmediate_operand" "xm")))]
+ "SSE_VEC_FLOAT_MODE_P (<MODE>mode)
+ && ix86_binary_operator_ok (IOR, <MODE>mode, operands)"
+ "orp<ssemodesuffixf2c>\t{%2, %0|%0, %2}"
[(set_attr "type" "sselog")
- (set_attr "mode" "V4SF")])
+ (set_attr "mode" "<MODE>")])
-(define_expand "xorv4sf3"
- [(set (match_operand:V4SF 0 "register_operand" "")
- (xor:V4SF (match_operand:V4SF 1 "nonimmediate_operand" "")
- (match_operand:V4SF 2 "nonimmediate_operand" "")))]
- "TARGET_SSE"
- "ix86_fixup_binary_operands_no_copy (XOR, V4SFmode, operands);")
+(define_expand "xor<mode>3"
+ [(set (match_operand:SSEMODEF2P 0 "register_operand" "")
+ (xor:SSEMODEF2P
+ (match_operand:SSEMODEF2P 1 "nonimmediate_operand" "")
+ (match_operand:SSEMODEF2P 2 "nonimmediate_operand" "")))]
+ "SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
+ "ix86_fixup_binary_operands_no_copy (XOR, <MODE>mode, operands);")
-(define_insn "*xorv4sf3"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (xor:V4SF (match_operand:V4SF 1 "nonimmediate_operand" "%0")
- (match_operand:V4SF 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE && ix86_binary_operator_ok (XOR, V4SFmode, operands)"
- "xorps\t{%2, %0|%0, %2}"
+(define_insn "*xor<mode>3"
+ [(set (match_operand:SSEMODEF2P 0 "register_operand" "=x")
+ (xor:SSEMODEF2P
+ (match_operand:SSEMODEF2P 1 "nonimmediate_operand" "%0")
+ (match_operand:SSEMODEF2P 2 "nonimmediate_operand" "xm")))]
+ "SSE_VEC_FLOAT_MODE_P (<MODE>mode)
+ && ix86_binary_operator_ok (XOR, <MODE>mode, operands)"
+ "xorp<ssemodesuffixf2c>\t{%2, %0|%0, %2}"
[(set_attr "type" "sselog")
- (set_attr "mode" "V4SF")])
+ (set_attr "mode" "<MODE>")])
;; Also define scalar versions. These are used for abs, neg, and
;; conditional move. Using subregs into vector modes causes register
;; allocation lossage. These patterns do not allow memory operands
;; because the native instructions read the full 128-bits.
-(define_insn "*andsf3"
- [(set (match_operand:SF 0 "register_operand" "=x")
- (and:SF (match_operand:SF 1 "register_operand" "0")
- (match_operand:SF 2 "register_operand" "x")))]
- "TARGET_SSE"
- "andps\t{%2, %0|%0, %2}"
+(define_insn "*and<mode>3"
+ [(set (match_operand:MODEF 0 "register_operand" "=x")
+ (and:MODEF
+ (match_operand:MODEF 1 "register_operand" "0")
+ (match_operand:MODEF 2 "register_operand" "x")))]
+ "SSE_FLOAT_MODE_P (<MODE>mode)"
+ "andp<ssemodefsuffix>\t{%2, %0|%0, %2}"
[(set_attr "type" "sselog")
- (set_attr "mode" "V4SF")])
-
-(define_insn "*nandsf3"
- [(set (match_operand:SF 0 "register_operand" "=x")
- (and:SF (not:SF (match_operand:SF 1 "register_operand" "0"))
- (match_operand:SF 2 "register_operand" "x")))]
- "TARGET_SSE"
- "andnps\t{%2, %0|%0, %2}"
+ (set_attr "mode" "<ssevecmode>")])
+
+(define_insn "*nand<mode>3"
+ [(set (match_operand:MODEF 0 "register_operand" "=x")
+ (and:MODEF
+ (not:MODEF
+ (match_operand:MODEF 1 "register_operand" "0"))
+ (match_operand:MODEF 2 "register_operand" "x")))]
+ "SSE_FLOAT_MODE_P (<MODE>mode)"
+ "andnp<ssemodefsuffix>\t{%2, %0|%0, %2}"
[(set_attr "type" "sselog")
- (set_attr "mode" "V4SF")])
-
-(define_insn "*iorsf3"
- [(set (match_operand:SF 0 "register_operand" "=x")
- (ior:SF (match_operand:SF 1 "register_operand" "0")
- (match_operand:SF 2 "register_operand" "x")))]
- "TARGET_SSE"
- "orps\t{%2, %0|%0, %2}"
+ (set_attr "mode" "<ssevecmode>")])
+
+(define_insn "*ior<mode>3"
+ [(set (match_operand:MODEF 0 "register_operand" "=x")
+ (ior:MODEF
+ (match_operand:MODEF 1 "register_operand" "0")
+ (match_operand:MODEF 2 "register_operand" "x")))]
+ "SSE_FLOAT_MODE_P (<MODE>mode)"
+ "orp<ssemodefsuffix>\t{%2, %0|%0, %2}"
[(set_attr "type" "sselog")
- (set_attr "mode" "V4SF")])
-
-(define_insn "*xorsf3"
- [(set (match_operand:SF 0 "register_operand" "=x")
- (xor:SF (match_operand:SF 1 "register_operand" "0")
- (match_operand:SF 2 "register_operand" "x")))]
- "TARGET_SSE"
- "xorps\t{%2, %0|%0, %2}"
+ (set_attr "mode" "<ssevecmode>")])
+
+(define_insn "*xor<mode>3"
+ [(set (match_operand:MODEF 0 "register_operand" "=x")
+ (xor:MODEF
+ (match_operand:MODEF 1 "register_operand" "0")
+ (match_operand:MODEF 2 "register_operand" "x")))]
+ "SSE_FLOAT_MODE_P (<MODE>mode)"
+ "xorp<ssemodefsuffix>\t{%2, %0|%0, %2}"
[(set_attr "type" "sselog")
- (set_attr "mode" "V4SF")])
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Parallel single-precision floating point conversion operations
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define_insn "sse_cvtpi2ps"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (vec_merge:V4SF
- (vec_duplicate:V4SF
- (float:V2SF (match_operand:V2SI 2 "nonimmediate_operand" "ym")))
- (match_operand:V4SF 1 "register_operand" "0")
- (const_int 3)))]
- "TARGET_SSE"
- "cvtpi2ps\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "V4SF")])
-
-(define_insn "sse_cvtps2pi"
- [(set (match_operand:V2SI 0 "register_operand" "=y")
- (vec_select:V2SI
- (unspec:V4SI [(match_operand:V4SF 1 "nonimmediate_operand" "xm")]
- UNSPEC_FIX_NOTRUNC)
- (parallel [(const_int 0) (const_int 1)])))]
- "TARGET_SSE"
- "cvtps2pi\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "unit" "mmx")
- (set_attr "mode" "DI")])
-
-(define_insn "sse_cvttps2pi"
- [(set (match_operand:V2SI 0 "register_operand" "=y")
- (vec_select:V2SI
- (fix:V4SI (match_operand:V4SF 1 "nonimmediate_operand" "xm"))
- (parallel [(const_int 0) (const_int 1)])))]
- "TARGET_SSE"
- "cvttps2pi\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "unit" "mmx")
- (set_attr "mode" "SF")])
-
-(define_insn "sse_cvtsi2ss"
- [(set (match_operand:V4SF 0 "register_operand" "=x,x")
- (vec_merge:V4SF
- (vec_duplicate:V4SF
- (float:SF (match_operand:SI 2 "nonimmediate_operand" "r,m")))
- (match_operand:V4SF 1 "register_operand" "0,0")
- (const_int 1)))]
- "TARGET_SSE"
- "cvtsi2ss\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseicvt")
- (set_attr "athlon_decode" "vector,double")
- (set_attr "amdfam10_decode" "vector,double")
- (set_attr "mode" "SF")])
-
-(define_insn "sse_cvtsi2ssq"
- [(set (match_operand:V4SF 0 "register_operand" "=x,x")
- (vec_merge:V4SF
- (vec_duplicate:V4SF
- (float:SF (match_operand:DI 2 "nonimmediate_operand" "r,rm")))
- (match_operand:V4SF 1 "register_operand" "0,0")
- (const_int 1)))]
- "TARGET_SSE && TARGET_64BIT"
- "cvtsi2ssq\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseicvt")
- (set_attr "athlon_decode" "vector,double")
- (set_attr "amdfam10_decode" "vector,double")
- (set_attr "mode" "SF")])
-
-(define_insn "sse_cvtss2si"
- [(set (match_operand:SI 0 "register_operand" "=r,r")
- (unspec:SI
- [(vec_select:SF
- (match_operand:V4SF 1 "nonimmediate_operand" "x,m")
- (parallel [(const_int 0)]))]
- UNSPEC_FIX_NOTRUNC))]
- "TARGET_SSE"
- "cvtss2si\t{%1, %0|%0, %1}"
- [(set_attr "type" "sseicvt")
- (set_attr "athlon_decode" "double,vector")
- (set_attr "prefix_rep" "1")
- (set_attr "mode" "SI")])
-
-(define_insn "sse_cvtss2si_2"
- [(set (match_operand:SI 0 "register_operand" "=r,r")
- (unspec:SI [(match_operand:SF 1 "nonimmediate_operand" "x,m")]
- UNSPEC_FIX_NOTRUNC))]
- "TARGET_SSE"
- "cvtss2si\t{%1, %0|%0, %1}"
- [(set_attr "type" "sseicvt")
- (set_attr "athlon_decode" "double,vector")
- (set_attr "amdfam10_decode" "double,double")
- (set_attr "prefix_rep" "1")
- (set_attr "mode" "SI")])
-
-(define_insn "sse_cvtss2siq"
- [(set (match_operand:DI 0 "register_operand" "=r,r")
- (unspec:DI
- [(vec_select:SF
- (match_operand:V4SF 1 "nonimmediate_operand" "x,m")
- (parallel [(const_int 0)]))]
- UNSPEC_FIX_NOTRUNC))]
- "TARGET_SSE && TARGET_64BIT"
- "cvtss2siq\t{%1, %0|%0, %1}"
- [(set_attr "type" "sseicvt")
- (set_attr "athlon_decode" "double,vector")
- (set_attr "prefix_rep" "1")
- (set_attr "mode" "DI")])
-
-(define_insn "sse_cvtss2siq_2"
- [(set (match_operand:DI 0 "register_operand" "=r,r")
- (unspec:DI [(match_operand:SF 1 "nonimmediate_operand" "x,m")]
- UNSPEC_FIX_NOTRUNC))]
- "TARGET_SSE && TARGET_64BIT"
- "cvtss2siq\t{%1, %0|%0, %1}"
- [(set_attr "type" "sseicvt")
- (set_attr "athlon_decode" "double,vector")
- (set_attr "amdfam10_decode" "double,double")
- (set_attr "prefix_rep" "1")
- (set_attr "mode" "DI")])
-
-(define_insn "sse_cvttss2si"
- [(set (match_operand:SI 0 "register_operand" "=r,r")
- (fix:SI
- (vec_select:SF
- (match_operand:V4SF 1 "nonimmediate_operand" "x,m")
- (parallel [(const_int 0)]))))]
- "TARGET_SSE"
- "cvttss2si\t{%1, %0|%0, %1}"
- [(set_attr "type" "sseicvt")
- (set_attr "athlon_decode" "double,vector")
- (set_attr "amdfam10_decode" "double,double")
- (set_attr "prefix_rep" "1")
- (set_attr "mode" "SI")])
-
-(define_insn "sse_cvttss2siq"
- [(set (match_operand:DI 0 "register_operand" "=r,r")
- (fix:DI
- (vec_select:SF
- (match_operand:V4SF 1 "nonimmediate_operand" "x,m")
- (parallel [(const_int 0)]))))]
- "TARGET_SSE && TARGET_64BIT"
- "cvttss2siq\t{%1, %0|%0, %1}"
- [(set_attr "type" "sseicvt")
- (set_attr "athlon_decode" "double,vector")
- (set_attr "amdfam10_decode" "double,double")
- (set_attr "prefix_rep" "1")
- (set_attr "mode" "DI")])
-
-(define_insn "sse2_cvtdq2ps"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (float:V4SF (match_operand:V4SI 1 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "cvtdq2ps\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "V4SF")])
-
-(define_insn "sse2_cvtps2dq"
- [(set (match_operand:V4SI 0 "register_operand" "=x")
- (unspec:V4SI [(match_operand:V4SF 1 "nonimmediate_operand" "xm")]
- UNSPEC_FIX_NOTRUNC))]
- "TARGET_SSE2"
- "cvtps2dq\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "prefix_data16" "1")
- (set_attr "mode" "TI")])
-
-(define_insn "sse2_cvttps2dq"
- [(set (match_operand:V4SI 0 "register_operand" "=x")
- (fix:V4SI (match_operand:V4SF 1 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "cvttps2dq\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "prefix_rep" "1")
- (set_attr "mode" "TI")])
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Parallel single-precision floating point element swizzling
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define_insn "sse_movhlps"
- [(set (match_operand:V4SF 0 "nonimmediate_operand" "=x,x,m")
- (vec_select:V4SF
- (vec_concat:V8SF
- (match_operand:V4SF 1 "nonimmediate_operand" " 0,0,0")
- (match_operand:V4SF 2 "nonimmediate_operand" " x,o,x"))
- (parallel [(const_int 6)
- (const_int 7)
- (const_int 2)
- (const_int 3)])))]
- "TARGET_SSE && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
- "@
- movhlps\t{%2, %0|%0, %2}
- movlps\t{%H2, %0|%0, %H2}
- movhps\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssemov")
- (set_attr "mode" "V4SF,V2SF,V2SF")])
-
-(define_insn "sse_movlhps"
- [(set (match_operand:V4SF 0 "nonimmediate_operand" "=x,x,o")
- (vec_select:V4SF
- (vec_concat:V8SF
- (match_operand:V4SF 1 "nonimmediate_operand" " 0,0,0")
- (match_operand:V4SF 2 "nonimmediate_operand" " x,m,x"))
- (parallel [(const_int 0)
- (const_int 1)
- (const_int 4)
- (const_int 5)])))]
- "TARGET_SSE && ix86_binary_operator_ok (UNKNOWN, V4SFmode, operands)"
- "@
- movlhps\t{%2, %0|%0, %2}
- movhps\t{%2, %0|%0, %2}
- movlps\t{%2, %H0|%H0, %2}"
- [(set_attr "type" "ssemov")
- (set_attr "mode" "V4SF,V2SF,V2SF")])
-
-(define_insn "sse_unpckhps"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (vec_select:V4SF
- (vec_concat:V8SF
- (match_operand:V4SF 1 "register_operand" "0")
- (match_operand:V4SF 2 "nonimmediate_operand" "xm"))
- (parallel [(const_int 2) (const_int 6)
- (const_int 3) (const_int 7)])))]
- "TARGET_SSE"
- "unpckhps\t{%2, %0|%0, %2}"
- [(set_attr "type" "sselog")
- (set_attr "mode" "V4SF")])
-
-(define_insn "sse_unpcklps"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (vec_select:V4SF
- (vec_concat:V8SF
- (match_operand:V4SF 1 "register_operand" "0")
- (match_operand:V4SF 2 "nonimmediate_operand" "xm"))
- (parallel [(const_int 0) (const_int 4)
- (const_int 1) (const_int 5)])))]
- "TARGET_SSE"
- "unpcklps\t{%2, %0|%0, %2}"
- [(set_attr "type" "sselog")
- (set_attr "mode" "V4SF")])
-
-;; These are modeled with the same vec_concat as the others so that we
-;; capture users of shufps that can use the new instructions
-(define_insn "sse3_movshdup"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (vec_select:V4SF
- (vec_concat:V8SF
- (match_operand:V4SF 1 "nonimmediate_operand" "xm")
- (match_dup 1))
- (parallel [(const_int 1)
- (const_int 1)
- (const_int 7)
- (const_int 7)])))]
- "TARGET_SSE3"
- "movshdup\t{%1, %0|%0, %1}"
- [(set_attr "type" "sse")
- (set_attr "prefix_rep" "1")
- (set_attr "mode" "V4SF")])
-
-(define_insn "sse3_movsldup"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (vec_select:V4SF
- (vec_concat:V8SF
- (match_operand:V4SF 1 "nonimmediate_operand" "xm")
- (match_dup 1))
- (parallel [(const_int 0)
- (const_int 0)
- (const_int 6)
- (const_int 6)])))]
- "TARGET_SSE3"
- "movsldup\t{%1, %0|%0, %1}"
- [(set_attr "type" "sse")
- (set_attr "prefix_rep" "1")
- (set_attr "mode" "V4SF")])
-
-(define_expand "sse_shufps"
- [(match_operand:V4SF 0 "register_operand" "")
- (match_operand:V4SF 1 "register_operand" "")
- (match_operand:V4SF 2 "nonimmediate_operand" "")
- (match_operand:SI 3 "const_int_operand" "")]
- "TARGET_SSE"
-{
- int mask = INTVAL (operands[3]);
- emit_insn (gen_sse_shufps_1 (operands[0], operands[1], operands[2],
- GEN_INT ((mask >> 0) & 3),
- GEN_INT ((mask >> 2) & 3),
- GEN_INT (((mask >> 4) & 3) + 4),
- GEN_INT (((mask >> 6) & 3) + 4)));
- DONE;
-})
-
-(define_insn "sse_shufps_1"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (vec_select:V4SF
- (vec_concat:V8SF
- (match_operand:V4SF 1 "register_operand" "0")
- (match_operand:V4SF 2 "nonimmediate_operand" "xm"))
- (parallel [(match_operand 3 "const_0_to_3_operand" "")
- (match_operand 4 "const_0_to_3_operand" "")
- (match_operand 5 "const_4_to_7_operand" "")
- (match_operand 6 "const_4_to_7_operand" "")])))]
- "TARGET_SSE"
-{
- int mask = 0;
- mask |= INTVAL (operands[3]) << 0;
- mask |= INTVAL (operands[4]) << 2;
- mask |= (INTVAL (operands[5]) - 4) << 4;
- mask |= (INTVAL (operands[6]) - 4) << 6;
- operands[3] = GEN_INT (mask);
-
- return "shufps\t{%3, %2, %0|%0, %2, %3}";
-}
- [(set_attr "type" "sselog")
- (set_attr "mode" "V4SF")])
-
-(define_insn "sse_storehps"
- [(set (match_operand:V2SF 0 "nonimmediate_operand" "=m,x,x")
- (vec_select:V2SF
- (match_operand:V4SF 1 "nonimmediate_operand" "x,x,o")
- (parallel [(const_int 2) (const_int 3)])))]
- "TARGET_SSE"
- "@
- movhps\t{%1, %0|%0, %1}
- movhlps\t{%1, %0|%0, %1}
- movlps\t{%H1, %0|%0, %H1}"
- [(set_attr "type" "ssemov")
- (set_attr "mode" "V2SF,V4SF,V2SF")])
-
-(define_insn "sse_loadhps"
- [(set (match_operand:V4SF 0 "nonimmediate_operand" "=x,x,o")
- (vec_concat:V4SF
- (vec_select:V2SF
- (match_operand:V4SF 1 "nonimmediate_operand" "0,0,0")
- (parallel [(const_int 0) (const_int 1)]))
- (match_operand:V2SF 2 "nonimmediate_operand" "m,x,x")))]
- "TARGET_SSE"
- "@
- movhps\t{%2, %0|%0, %2}
- movlhps\t{%2, %0|%0, %2}
- movlps\t{%2, %H0|%H0, %2}"
- [(set_attr "type" "ssemov")
- (set_attr "mode" "V2SF,V4SF,V2SF")])
-
-(define_insn "sse_storelps"
- [(set (match_operand:V2SF 0 "nonimmediate_operand" "=m,x,x")
- (vec_select:V2SF
- (match_operand:V4SF 1 "nonimmediate_operand" "x,x,m")
- (parallel [(const_int 0) (const_int 1)])))]
- "TARGET_SSE"
- "@
- movlps\t{%1, %0|%0, %1}
- movaps\t{%1, %0|%0, %1}
- movlps\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssemov")
- (set_attr "mode" "V2SF,V4SF,V2SF")])
-
-(define_insn "sse_loadlps"
- [(set (match_operand:V4SF 0 "nonimmediate_operand" "=x,x,m")
- (vec_concat:V4SF
- (match_operand:V2SF 2 "nonimmediate_operand" "0,m,x")
- (vec_select:V2SF
- (match_operand:V4SF 1 "nonimmediate_operand" "x,0,0")
- (parallel [(const_int 2) (const_int 3)]))))]
- "TARGET_SSE"
- "@
- shufps\t{$0xe4, %1, %0|%0, %1, 0xe4}
- movlps\t{%2, %0|%0, %2}
- movlps\t{%2, %0|%0, %2}"
- [(set_attr "type" "sselog,ssemov,ssemov")
- (set_attr "mode" "V4SF,V2SF,V2SF")])
-
-(define_insn "sse_movss"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (vec_merge:V4SF
- (match_operand:V4SF 2 "register_operand" "x")
- (match_operand:V4SF 1 "register_operand" "0")
- (const_int 1)))]
- "TARGET_SSE"
- "movss\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssemov")
- (set_attr "mode" "SF")])
-
-(define_insn "*vec_dupv4sf"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (vec_duplicate:V4SF
- (match_operand:SF 1 "register_operand" "0")))]
- "TARGET_SSE"
- "shufps\t{$0, %0, %0|%0, %0, 0}"
- [(set_attr "type" "sselog1")
- (set_attr "mode" "V4SF")])
-
-;; ??? In theory we can match memory for the MMX alternative, but allowing
-;; nonimmediate_operand for operand 2 and *not* allowing memory for the SSE
-;; alternatives pretty much forces the MMX alternative to be chosen.
-(define_insn "*sse_concatv2sf"
- [(set (match_operand:V2SF 0 "register_operand" "=x,x,*y,*y")
- (vec_concat:V2SF
- (match_operand:SF 1 "nonimmediate_operand" " 0,m, 0, m")
- (match_operand:SF 2 "reg_or_0_operand" " x,C,*y, C")))]
- "TARGET_SSE"
- "@
- unpcklps\t{%2, %0|%0, %2}
- movss\t{%1, %0|%0, %1}
- punpckldq\t{%2, %0|%0, %2}
- movd\t{%1, %0|%0, %1}"
- [(set_attr "type" "sselog,ssemov,mmxcvt,mmxmov")
- (set_attr "mode" "V4SF,SF,DI,DI")])
-
-(define_insn "*sse_concatv4sf"
- [(set (match_operand:V4SF 0 "register_operand" "=x,x")
- (vec_concat:V4SF
- (match_operand:V2SF 1 "register_operand" " 0,0")
- (match_operand:V2SF 2 "nonimmediate_operand" " x,m")))]
- "TARGET_SSE"
- "@
- movlhps\t{%2, %0|%0, %2}
- movhps\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssemov")
- (set_attr "mode" "V4SF,V2SF")])
-
-(define_expand "vec_initv4sf"
- [(match_operand:V4SF 0 "register_operand" "")
- (match_operand 1 "" "")]
- "TARGET_SSE"
-{
- ix86_expand_vector_init (false, operands[0], operands[1]);
- DONE;
-})
-
-(define_insn "vec_setv4sf_0"
- [(set (match_operand:V4SF 0 "nonimmediate_operand" "=x,x,Y2,m")
- (vec_merge:V4SF
- (vec_duplicate:V4SF
- (match_operand:SF 2 "general_operand" " x,m,*r,x*rfF"))
- (match_operand:V4SF 1 "vector_move_operand" " 0,C,C ,0")
- (const_int 1)))]
- "TARGET_SSE"
- "@
- movss\t{%2, %0|%0, %2}
- movss\t{%2, %0|%0, %2}
- movd\t{%2, %0|%0, %2}
- #"
- [(set_attr "type" "ssemov")
- (set_attr "mode" "SF")])
-
-;; A subset is vec_setv4sf.
-(define_insn "*vec_setv4sf_sse4_1"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (vec_merge:V4SF
- (vec_duplicate:V4SF
- (match_operand:SF 2 "nonimmediate_operand" "xm"))
- (match_operand:V4SF 1 "register_operand" "0")
- (match_operand:SI 3 "const_pow2_1_to_8_operand" "n")))]
- "TARGET_SSE4_1"
-{
- operands[3] = GEN_INT (exact_log2 (INTVAL (operands[3])) << 4);
- return "insertps\t{%3, %2, %0|%0, %2, %3}";
-}
- [(set_attr "type" "sselog")
- (set_attr "prefix_extra" "1")
- (set_attr "mode" "V4SF")])
-
-(define_insn "sse4_1_insertps"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (unspec:V4SF [(match_operand:V4SF 2 "register_operand" "x")
- (match_operand:V4SF 1 "register_operand" "0")
- (match_operand:SI 3 "const_0_to_255_operand" "n")]
- UNSPEC_INSERTPS))]
- "TARGET_SSE4_1"
- "insertps\t{%3, %2, %0|%0, %2, %3}";
- [(set_attr "type" "sselog")
- (set_attr "prefix_extra" "1")
- (set_attr "mode" "V4SF")])
-
-(define_split
- [(set (match_operand:V4SF 0 "memory_operand" "")
- (vec_merge:V4SF
- (vec_duplicate:V4SF
- (match_operand:SF 1 "nonmemory_operand" ""))
- (match_dup 0)
- (const_int 1)))]
- "TARGET_SSE && reload_completed"
- [(const_int 0)]
-{
- emit_move_insn (adjust_address (operands[0], SFmode, 0), operands[1]);
- DONE;
-})
-
-(define_expand "vec_setv4sf"
- [(match_operand:V4SF 0 "register_operand" "")
- (match_operand:SF 1 "register_operand" "")
- (match_operand 2 "const_int_operand" "")]
- "TARGET_SSE"
-{
- ix86_expand_vector_set (false, operands[0], operands[1],
- INTVAL (operands[2]));
- DONE;
-})
-
-(define_insn_and_split "*vec_extractv4sf_0"
- [(set (match_operand:SF 0 "nonimmediate_operand" "=x,m,fr")
- (vec_select:SF
- (match_operand:V4SF 1 "nonimmediate_operand" "xm,x,m")
- (parallel [(const_int 0)])))]
- "TARGET_SSE && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
- "#"
- "&& reload_completed"
- [(const_int 0)]
-{
- rtx op1 = operands[1];
- if (REG_P (op1))
- op1 = gen_rtx_REG (SFmode, REGNO (op1));
- else
- op1 = gen_lowpart (SFmode, op1);
- emit_move_insn (operands[0], op1);
- DONE;
-})
-
-(define_insn "*sse4_1_extractps"
- [(set (match_operand:SF 0 "nonimmediate_operand" "=rm")
- (vec_select:SF
- (match_operand:V4SF 1 "register_operand" "x")
- (parallel [(match_operand:SI 2 "const_0_to_3_operand" "n")])))]
- "TARGET_SSE4_1"
- "extractps\t{%2, %1, %0|%0, %1, %2}"
- [(set_attr "type" "sselog")
- (set_attr "prefix_extra" "1")
- (set_attr "mode" "V4SF")])
-
-(define_insn_and_split "*vec_extract_v4sf_mem"
- [(set (match_operand:SF 0 "register_operand" "=x*rf")
- (vec_select:SF
- (match_operand:V4SF 1 "memory_operand" "o")
- (parallel [(match_operand 2 "const_0_to_3_operand" "n")])))]
- ""
- "#"
- "reload_completed"
- [(const_int 0)]
-{
- int i = INTVAL (operands[2]);
-
- emit_move_insn (operands[0], adjust_address (operands[1], SFmode, i*4));
- DONE;
-})
-
-(define_expand "vec_extractv4sf"
- [(match_operand:SF 0 "register_operand" "")
- (match_operand:V4SF 1 "register_operand" "")
- (match_operand 2 "const_int_operand" "")]
- "TARGET_SSE"
-{
- ix86_expand_vector_extract (false, operands[0], operands[1],
- INTVAL (operands[2]));
- DONE;
-})
+ (set_attr "mode" "<ssevecmode>")])
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
@@ -2137,485 +1631,179 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
-;; Parallel double-precision floating point arithmetic
+;; Parallel single-precision floating point conversion operations
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(define_expand "negv2df2"
- [(set (match_operand:V2DF 0 "register_operand" "")
- (neg:V2DF (match_operand:V2DF 1 "register_operand" "")))]
- "TARGET_SSE2"
- "ix86_expand_fp_absneg_operator (NEG, V2DFmode, operands); DONE;")
-
-(define_expand "absv2df2"
- [(set (match_operand:V2DF 0 "register_operand" "")
- (abs:V2DF (match_operand:V2DF 1 "register_operand" "")))]
- "TARGET_SSE2"
- "ix86_expand_fp_absneg_operator (ABS, V2DFmode, operands); DONE;")
-
-(define_expand "addv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "")
- (plus:V2DF (match_operand:V2DF 1 "nonimmediate_operand" "")
- (match_operand:V2DF 2 "nonimmediate_operand" "")))]
- "TARGET_SSE2"
- "ix86_fixup_binary_operands_no_copy (PLUS, V2DFmode, operands);")
-
-(define_insn "*addv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (plus:V2DF (match_operand:V2DF 1 "nonimmediate_operand" "%0")
- (match_operand:V2DF 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2 && ix86_binary_operator_ok (PLUS, V2DFmode, operands)"
- "addpd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseadd")
- (set_attr "mode" "V2DF")])
-
-(define_insn "sse2_vmaddv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (vec_merge:V2DF
- (plus:V2DF (match_operand:V2DF 1 "register_operand" "0")
- (match_operand:V2DF 2 "nonimmediate_operand" "xm"))
- (match_dup 1)
- (const_int 1)))]
- "TARGET_SSE2 && ix86_binary_operator_ok (PLUS, V4SFmode, operands)"
- "addsd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseadd")
- (set_attr "mode" "DF")])
-
-(define_expand "subv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "")
- (minus:V2DF (match_operand:V2DF 1 "nonimmediate_operand" "")
- (match_operand:V2DF 2 "nonimmediate_operand" "")))]
- "TARGET_SSE2"
- "ix86_fixup_binary_operands_no_copy (MINUS, V2DFmode, operands);")
-
-(define_insn "*subv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (minus:V2DF (match_operand:V2DF 1 "register_operand" "0")
- (match_operand:V2DF 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "subpd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseadd")
- (set_attr "mode" "V2DF")])
-
-(define_insn "sse2_vmsubv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (vec_merge:V2DF
- (minus:V2DF (match_operand:V2DF 1 "register_operand" "0")
- (match_operand:V2DF 2 "nonimmediate_operand" "xm"))
- (match_dup 1)
- (const_int 1)))]
- "TARGET_SSE2"
- "subsd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseadd")
- (set_attr "mode" "DF")])
-
-(define_expand "mulv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "")
- (mult:V2DF (match_operand:V2DF 1 "nonimmediate_operand" "")
- (match_operand:V2DF 2 "nonimmediate_operand" "")))]
- "TARGET_SSE2"
- "ix86_fixup_binary_operands_no_copy (MULT, V2DFmode, operands);")
-
-(define_insn "*mulv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (mult:V2DF (match_operand:V2DF 1 "nonimmediate_operand" "%0")
- (match_operand:V2DF 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2 && ix86_binary_operator_ok (MULT, V2DFmode, operands)"
- "mulpd\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssemul")
- (set_attr "mode" "V2DF")])
-
-(define_insn "sse2_vmmulv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (vec_merge:V2DF
- (mult:V2DF (match_operand:V2DF 1 "register_operand" "0")
- (match_operand:V2DF 2 "nonimmediate_operand" "xm"))
- (match_dup 1)
- (const_int 1)))]
- "TARGET_SSE2 && ix86_binary_operator_ok (MULT, V2DFmode, operands)"
- "mulsd\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssemul")
- (set_attr "mode" "DF")])
-
-(define_expand "divv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "")
- (div:V2DF (match_operand:V2DF 1 "register_operand" "")
- (match_operand:V2DF 2 "nonimmediate_operand" "")))]
- "TARGET_SSE2"
- "ix86_fixup_binary_operands_no_copy (DIV, V2DFmode, operands);")
-
-(define_insn "*divv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (div:V2DF (match_operand:V2DF 1 "register_operand" "0")
- (match_operand:V2DF 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "divpd\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssediv")
- (set_attr "mode" "V2DF")])
-
-(define_insn "sse2_vmdivv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (vec_merge:V2DF
- (div:V2DF (match_operand:V2DF 1 "register_operand" "0")
- (match_operand:V2DF 2 "nonimmediate_operand" "xm"))
- (match_dup 1)
- (const_int 1)))]
- "TARGET_SSE2"
- "divsd\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssediv")
- (set_attr "mode" "DF")])
-
-(define_insn "sqrtv2df2"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (sqrt:V2DF (match_operand:V2DF 1 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "sqrtpd\t{%1, %0|%0, %1}"
- [(set_attr "type" "sse")
- (set_attr "mode" "V2DF")])
-
-(define_insn "sse2_vmsqrtv2df2"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (vec_merge:V2DF
- (sqrt:V2DF (match_operand:V2DF 1 "nonimmediate_operand" "xm"))
- (match_operand:V2DF 2 "register_operand" "0")
- (const_int 1)))]
- "TARGET_SSE2"
- "sqrtsd\t{%1, %0|%0, %1}"
- [(set_attr "type" "sse")
- (set_attr "mode" "DF")])
-
-;; ??? For !flag_finite_math_only, the representation with SMIN/SMAX
-;; isn't really correct, as those rtl operators aren't defined when
-;; applied to NaNs. Hopefully the optimizers won't get too smart on us.
-
-(define_expand "smaxv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "")
- (smax:V2DF (match_operand:V2DF 1 "nonimmediate_operand" "")
- (match_operand:V2DF 2 "nonimmediate_operand" "")))]
- "TARGET_SSE2"
-{
- if (!flag_finite_math_only)
- operands[1] = force_reg (V2DFmode, operands[1]);
- ix86_fixup_binary_operands_no_copy (SMAX, V2DFmode, operands);
-})
-
-(define_insn "*smaxv2df3_finite"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (smax:V2DF (match_operand:V2DF 1 "nonimmediate_operand" "%0")
- (match_operand:V2DF 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2 && flag_finite_math_only
- && ix86_binary_operator_ok (SMAX, V2DFmode, operands)"
- "maxpd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseadd")
- (set_attr "mode" "V2DF")])
-
-(define_insn "*smaxv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (smax:V2DF (match_operand:V2DF 1 "register_operand" "0")
- (match_operand:V2DF 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "maxpd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseadd")
- (set_attr "mode" "V2DF")])
-
-(define_insn "sse2_vmsmaxv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (vec_merge:V2DF
- (smax:V2DF (match_operand:V2DF 1 "register_operand" "0")
- (match_operand:V2DF 2 "nonimmediate_operand" "xm"))
- (match_dup 1)
- (const_int 1)))]
- "TARGET_SSE2"
- "maxsd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseadd")
- (set_attr "mode" "DF")])
-
-(define_expand "sminv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "")
- (smin:V2DF (match_operand:V2DF 1 "nonimmediate_operand" "")
- (match_operand:V2DF 2 "nonimmediate_operand" "")))]
- "TARGET_SSE2"
-{
- if (!flag_finite_math_only)
- operands[1] = force_reg (V2DFmode, operands[1]);
- ix86_fixup_binary_operands_no_copy (SMIN, V2DFmode, operands);
-})
+(define_insn "sse_cvtpi2ps"
+ [(set (match_operand:V4SF 0 "register_operand" "=x")
+ (vec_merge:V4SF
+ (vec_duplicate:V4SF
+ (float:V2SF (match_operand:V2SI 2 "nonimmediate_operand" "ym")))
+ (match_operand:V4SF 1 "register_operand" "0")
+ (const_int 3)))]
+ "TARGET_SSE"
+ "cvtpi2ps\t{%2, %0|%0, %2}"
+ [(set_attr "type" "ssecvt")
+ (set_attr "mode" "V4SF")])
-(define_insn "*sminv2df3_finite"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (smin:V2DF (match_operand:V2DF 1 "nonimmediate_operand" "%0")
- (match_operand:V2DF 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2 && flag_finite_math_only
- && ix86_binary_operator_ok (SMIN, V2DFmode, operands)"
- "minpd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseadd")
- (set_attr "mode" "V2DF")])
+(define_insn "sse_cvtps2pi"
+ [(set (match_operand:V2SI 0 "register_operand" "=y")
+ (vec_select:V2SI
+ (unspec:V4SI [(match_operand:V4SF 1 "nonimmediate_operand" "xm")]
+ UNSPEC_FIX_NOTRUNC)
+ (parallel [(const_int 0) (const_int 1)])))]
+ "TARGET_SSE"
+ "cvtps2pi\t{%1, %0|%0, %1}"
+ [(set_attr "type" "ssecvt")
+ (set_attr "unit" "mmx")
+ (set_attr "mode" "DI")])
-(define_insn "*sminv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (smin:V2DF (match_operand:V2DF 1 "register_operand" "0")
- (match_operand:V2DF 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "minpd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseadd")
- (set_attr "mode" "V2DF")])
+(define_insn "sse_cvttps2pi"
+ [(set (match_operand:V2SI 0 "register_operand" "=y")
+ (vec_select:V2SI
+ (fix:V4SI (match_operand:V4SF 1 "nonimmediate_operand" "xm"))
+ (parallel [(const_int 0) (const_int 1)])))]
+ "TARGET_SSE"
+ "cvttps2pi\t{%1, %0|%0, %1}"
+ [(set_attr "type" "ssecvt")
+ (set_attr "unit" "mmx")
+ (set_attr "mode" "SF")])
-(define_insn "sse2_vmsminv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (vec_merge:V2DF
- (smin:V2DF (match_operand:V2DF 1 "register_operand" "0")
- (match_operand:V2DF 2 "nonimmediate_operand" "xm"))
- (match_dup 1)
+(define_insn "sse_cvtsi2ss"
+ [(set (match_operand:V4SF 0 "register_operand" "=x,x")
+ (vec_merge:V4SF
+ (vec_duplicate:V4SF
+ (float:SF (match_operand:SI 2 "nonimmediate_operand" "r,m")))
+ (match_operand:V4SF 1 "register_operand" "0,0")
(const_int 1)))]
- "TARGET_SSE2"
- "minsd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseadd")
- (set_attr "mode" "DF")])
+ "TARGET_SSE"
+ "cvtsi2ss\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sseicvt")
+ (set_attr "athlon_decode" "vector,double")
+ (set_attr "amdfam10_decode" "vector,double")
+ (set_attr "mode" "SF")])
-(define_insn "sse3_addsubv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (vec_merge:V2DF
- (plus:V2DF
- (match_operand:V2DF 1 "register_operand" "0")
- (match_operand:V2DF 2 "nonimmediate_operand" "xm"))
- (minus:V2DF (match_dup 1) (match_dup 2))
+(define_insn "sse_cvtsi2ssq"
+ [(set (match_operand:V4SF 0 "register_operand" "=x,x")
+ (vec_merge:V4SF
+ (vec_duplicate:V4SF
+ (float:SF (match_operand:DI 2 "nonimmediate_operand" "r,rm")))
+ (match_operand:V4SF 1 "register_operand" "0,0")
(const_int 1)))]
- "TARGET_SSE3"
- "addsubpd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseadd")
- (set_attr "mode" "V2DF")])
-
-(define_insn "sse3_haddv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (vec_concat:V2DF
- (plus:DF
- (vec_select:DF
- (match_operand:V2DF 1 "register_operand" "0")
- (parallel [(const_int 0)]))
- (vec_select:DF (match_dup 1) (parallel [(const_int 1)])))
- (plus:DF
- (vec_select:DF
- (match_operand:V2DF 2 "nonimmediate_operand" "xm")
- (parallel [(const_int 0)]))
- (vec_select:DF (match_dup 2) (parallel [(const_int 1)])))))]
- "TARGET_SSE3"
- "haddpd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseadd")
- (set_attr "mode" "V2DF")])
-
-(define_insn "sse3_hsubv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (vec_concat:V2DF
- (minus:DF
- (vec_select:DF
- (match_operand:V2DF 1 "register_operand" "0")
- (parallel [(const_int 0)]))
- (vec_select:DF (match_dup 1) (parallel [(const_int 1)])))
- (minus:DF
- (vec_select:DF
- (match_operand:V2DF 2 "nonimmediate_operand" "xm")
- (parallel [(const_int 0)]))
- (vec_select:DF (match_dup 2) (parallel [(const_int 1)])))))]
- "TARGET_SSE3"
- "hsubpd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sseadd")
- (set_attr "mode" "V2DF")])
-
-(define_expand "reduc_splus_v2df"
- [(match_operand:V2DF 0 "register_operand" "")
- (match_operand:V2DF 1 "register_operand" "")]
- "TARGET_SSE3"
-{
- emit_insn (gen_sse3_haddv2df3 (operands[0], operands[1], operands[1]));
- DONE;
-})
+ "TARGET_SSE && TARGET_64BIT"
+ "cvtsi2ssq\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sseicvt")
+ (set_attr "athlon_decode" "vector,double")
+ (set_attr "amdfam10_decode" "vector,double")
+ (set_attr "mode" "SF")])
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Parallel double-precision floating point comparisons
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(define_insn "sse_cvtss2si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI
+ [(vec_select:SF
+ (match_operand:V4SF 1 "nonimmediate_operand" "x,m")
+ (parallel [(const_int 0)]))]
+ UNSPEC_FIX_NOTRUNC))]
+ "TARGET_SSE"
+ "cvtss2si\t{%1, %0|%0, %1}"
+ [(set_attr "type" "sseicvt")
+ (set_attr "athlon_decode" "double,vector")
+ (set_attr "prefix_rep" "1")
+ (set_attr "mode" "SI")])
-(define_insn "sse2_maskcmpv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (match_operator:V2DF 3 "sse_comparison_operator"
- [(match_operand:V2DF 1 "register_operand" "0")
- (match_operand:V2DF 2 "nonimmediate_operand" "xm")]))]
- "TARGET_SSE2 && !TARGET_SSE5"
- "cmp%D3pd\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecmp")
- (set_attr "mode" "V2DF")])
+(define_insn "sse_cvtss2si_2"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (unspec:SI [(match_operand:SF 1 "nonimmediate_operand" "x,m")]
+ UNSPEC_FIX_NOTRUNC))]
+ "TARGET_SSE"
+ "cvtss2si\t{%1, %0|%0, %1}"
+ [(set_attr "type" "sseicvt")
+ (set_attr "athlon_decode" "double,vector")
+ (set_attr "amdfam10_decode" "double,double")
+ (set_attr "prefix_rep" "1")
+ (set_attr "mode" "SI")])
-(define_insn "sse2_maskcmpdf3"
- [(set (match_operand:DF 0 "register_operand" "=x")
- (match_operator:DF 3 "sse_comparison_operator"
- [(match_operand:DF 1 "register_operand" "0")
- (match_operand:DF 2 "nonimmediate_operand" "xm")]))]
- "TARGET_SSE2 && !TARGET_SSE5"
- "cmp%D3sd\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecmp")
- (set_attr "mode" "DF")])
+(define_insn "sse_cvtss2siq"
+ [(set (match_operand:DI 0 "register_operand" "=r,r")
+ (unspec:DI
+ [(vec_select:SF
+ (match_operand:V4SF 1 "nonimmediate_operand" "x,m")
+ (parallel [(const_int 0)]))]
+ UNSPEC_FIX_NOTRUNC))]
+ "TARGET_SSE && TARGET_64BIT"
+ "cvtss2siq\t{%1, %0|%0, %1}"
+ [(set_attr "type" "sseicvt")
+ (set_attr "athlon_decode" "double,vector")
+ (set_attr "prefix_rep" "1")
+ (set_attr "mode" "DI")])
-(define_insn "sse2_vmmaskcmpv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (vec_merge:V2DF
- (match_operator:V2DF 3 "sse_comparison_operator"
- [(match_operand:V2DF 1 "register_operand" "0")
- (match_operand:V2DF 2 "nonimmediate_operand" "xm")])
- (match_dup 1)
- (const_int 1)))]
- "TARGET_SSE2 && !TARGET_SSE5"
- "cmp%D3sd\t{%2, %0|%0, %2}"
- [(set_attr "type" "ssecmp")
- (set_attr "mode" "DF")])
+(define_insn "sse_cvtss2siq_2"
+ [(set (match_operand:DI 0 "register_operand" "=r,r")
+ (unspec:DI [(match_operand:SF 1 "nonimmediate_operand" "x,m")]
+ UNSPEC_FIX_NOTRUNC))]
+ "TARGET_SSE && TARGET_64BIT"
+ "cvtss2siq\t{%1, %0|%0, %1}"
+ [(set_attr "type" "sseicvt")
+ (set_attr "athlon_decode" "double,vector")
+ (set_attr "amdfam10_decode" "double,double")
+ (set_attr "prefix_rep" "1")
+ (set_attr "mode" "DI")])
-(define_insn "sse2_comi"
- [(set (reg:CCFP FLAGS_REG)
- (compare:CCFP
- (vec_select:DF
- (match_operand:V2DF 0 "register_operand" "x")
- (parallel [(const_int 0)]))
- (vec_select:DF
- (match_operand:V2DF 1 "nonimmediate_operand" "xm")
+(define_insn "sse_cvttss2si"
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (fix:SI
+ (vec_select:SF
+ (match_operand:V4SF 1 "nonimmediate_operand" "x,m")
(parallel [(const_int 0)]))))]
- "TARGET_SSE2"
- "comisd\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecomi")
- (set_attr "mode" "DF")])
+ "TARGET_SSE"
+ "cvttss2si\t{%1, %0|%0, %1}"
+ [(set_attr "type" "sseicvt")
+ (set_attr "athlon_decode" "double,vector")
+ (set_attr "amdfam10_decode" "double,double")
+ (set_attr "prefix_rep" "1")
+ (set_attr "mode" "SI")])
-(define_insn "sse2_ucomi"
- [(set (reg:CCFPU FLAGS_REG)
- (compare:CCFPU
- (vec_select:DF
- (match_operand:V2DF 0 "register_operand" "x")
- (parallel [(const_int 0)]))
- (vec_select:DF
- (match_operand:V2DF 1 "nonimmediate_operand" "xm")
+(define_insn "sse_cvttss2siq"
+ [(set (match_operand:DI 0 "register_operand" "=r,r")
+ (fix:DI
+ (vec_select:SF
+ (match_operand:V4SF 1 "nonimmediate_operand" "x,m")
(parallel [(const_int 0)]))))]
- "TARGET_SSE2"
- "ucomisd\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecomi")
- (set_attr "mode" "DF")])
-
-(define_expand "vcondv2df"
- [(set (match_operand:V2DF 0 "register_operand" "")
- (if_then_else:V2DF
- (match_operator 3 ""
- [(match_operand:V2DF 4 "nonimmediate_operand" "")
- (match_operand:V2DF 5 "nonimmediate_operand" "")])
- (match_operand:V2DF 1 "general_operand" "")
- (match_operand:V2DF 2 "general_operand" "")))]
- "TARGET_SSE2"
-{
- if (ix86_expand_fp_vcond (operands))
- DONE;
- else
- FAIL;
-})
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Parallel double-precision floating point logical operations
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define_expand "andv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "")
- (and:V2DF (match_operand:V2DF 1 "nonimmediate_operand" "")
- (match_operand:V2DF 2 "nonimmediate_operand" "")))]
- "TARGET_SSE2"
- "ix86_fixup_binary_operands_no_copy (AND, V2DFmode, operands);")
-
-(define_insn "*andv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (and:V2DF (match_operand:V2DF 1 "nonimmediate_operand" "%0")
- (match_operand:V2DF 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2 && ix86_binary_operator_ok (AND, V2DFmode, operands)"
- "andpd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sselog")
- (set_attr "mode" "V2DF")])
-
-(define_insn "sse2_nandv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (and:V2DF (not:V2DF (match_operand:V2DF 1 "register_operand" "0"))
- (match_operand:V2DF 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2"
- "andnpd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sselog")
- (set_attr "mode" "V2DF")])
-
-(define_expand "iorv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "")
- (ior:V2DF (match_operand:V2DF 1 "nonimmediate_operand" "")
- (match_operand:V2DF 2 "nonimmediate_operand" "")))]
- "TARGET_SSE2"
- "ix86_fixup_binary_operands_no_copy (IOR, V2DFmode, operands);")
-
-(define_insn "*iorv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (ior:V2DF (match_operand:V2DF 1 "nonimmediate_operand" "%0")
- (match_operand:V2DF 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2 && ix86_binary_operator_ok (IOR, V2DFmode, operands)"
- "orpd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sselog")
- (set_attr "mode" "V2DF")])
-
-(define_expand "xorv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "")
- (xor:V2DF (match_operand:V2DF 1 "nonimmediate_operand" "")
- (match_operand:V2DF 2 "nonimmediate_operand" "")))]
- "TARGET_SSE2"
- "ix86_fixup_binary_operands_no_copy (XOR, V2DFmode, operands);")
-
-(define_insn "*xorv2df3"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (xor:V2DF (match_operand:V2DF 1 "nonimmediate_operand" "%0")
- (match_operand:V2DF 2 "nonimmediate_operand" "xm")))]
- "TARGET_SSE2 && ix86_binary_operator_ok (XOR, V2DFmode, operands)"
- "xorpd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sselog")
- (set_attr "mode" "V2DF")])
-
-;; Also define scalar versions. These are used for abs, neg, and
-;; conditional move. Using subregs into vector modes causes register
-;; allocation lossage. These patterns do not allow memory operands
-;; because the native instructions read the full 128-bits.
-
-(define_insn "*anddf3"
- [(set (match_operand:DF 0 "register_operand" "=x")
- (and:DF (match_operand:DF 1 "register_operand" "0")
- (match_operand:DF 2 "register_operand" "x")))]
- "TARGET_SSE2"
- "andpd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sselog")
- (set_attr "mode" "V2DF")])
+ "TARGET_SSE && TARGET_64BIT"
+ "cvttss2siq\t{%1, %0|%0, %1}"
+ [(set_attr "type" "sseicvt")
+ (set_attr "athlon_decode" "double,vector")
+ (set_attr "amdfam10_decode" "double,double")
+ (set_attr "prefix_rep" "1")
+ (set_attr "mode" "DI")])
-(define_insn "*nanddf3"
- [(set (match_operand:DF 0 "register_operand" "=x")
- (and:DF (not:DF (match_operand:DF 1 "register_operand" "0"))
- (match_operand:DF 2 "register_operand" "x")))]
+(define_insn "sse2_cvtdq2ps"
+ [(set (match_operand:V4SF 0 "register_operand" "=x")
+ (float:V4SF (match_operand:V4SI 1 "nonimmediate_operand" "xm")))]
"TARGET_SSE2"
- "andnpd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sselog")
- (set_attr "mode" "V2DF")])
+ "cvtdq2ps\t{%1, %0|%0, %1}"
+ [(set_attr "type" "ssecvt")
+ (set_attr "mode" "V4SF")])
-(define_insn "*iordf3"
- [(set (match_operand:DF 0 "register_operand" "=x")
- (ior:DF (match_operand:DF 1 "register_operand" "0")
- (match_operand:DF 2 "register_operand" "x")))]
+(define_insn "sse2_cvtps2dq"
+ [(set (match_operand:V4SI 0 "register_operand" "=x")
+ (unspec:V4SI [(match_operand:V4SF 1 "nonimmediate_operand" "xm")]
+ UNSPEC_FIX_NOTRUNC))]
"TARGET_SSE2"
- "orpd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sselog")
- (set_attr "mode" "V2DF")])
+ "cvtps2dq\t{%1, %0|%0, %1}"
+ [(set_attr "type" "ssecvt")
+ (set_attr "prefix_data16" "1")
+ (set_attr "mode" "TI")])
-(define_insn "*xordf3"
- [(set (match_operand:DF 0 "register_operand" "=x")
- (xor:DF (match_operand:DF 1 "register_operand" "0")
- (match_operand:DF 2 "register_operand" "x")))]
+(define_insn "sse2_cvttps2dq"
+ [(set (match_operand:V4SI 0 "register_operand" "=x")
+ (fix:V4SI (match_operand:V4SF 1 "nonimmediate_operand" "xm")))]
"TARGET_SSE2"
- "xorpd\t{%2, %0|%0, %2}"
- [(set_attr "type" "sselog")
- (set_attr "mode" "V2DF")])
+ "cvttps2dq\t{%1, %0|%0, %1}"
+ [(set_attr "type" "ssecvt")
+ (set_attr "prefix_rep" "1")
+ (set_attr "mode" "TI")])
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
@@ -2698,7 +1886,7 @@
(define_insn "sse2_cvtsd2si_2"
[(set (match_operand:SI 0 "register_operand" "=r,r")
(unspec:SI [(match_operand:DF 1 "nonimmediate_operand" "x,m")]
- UNSPEC_FIX_NOTRUNC))]
+ UNSPEC_FIX_NOTRUNC))]
"TARGET_SSE2"
"cvtsd2si\t{%1, %0|%0, %1}"
[(set_attr "type" "sseicvt")
@@ -2724,7 +1912,7 @@
(define_insn "sse2_cvtsd2siq_2"
[(set (match_operand:DI 0 "register_operand" "=r,r")
(unspec:DI [(match_operand:DF 1 "nonimmediate_operand" "x,m")]
- UNSPEC_FIX_NOTRUNC))]
+ UNSPEC_FIX_NOTRUNC))]
"TARGET_SSE2 && TARGET_64BIT"
"cvtsd2siq\t{%1, %0|%0, %1}"
[(set_attr "type" "sseicvt")
@@ -3035,6 +2223,388 @@
DONE;
})
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Parallel single-precision floating point element swizzling
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(define_insn "sse_movhlps"
+ [(set (match_operand:V4SF 0 "nonimmediate_operand" "=x,x,m")
+ (vec_select:V4SF
+ (vec_concat:V8SF
+ (match_operand:V4SF 1 "nonimmediate_operand" " 0,0,0")
+ (match_operand:V4SF 2 "nonimmediate_operand" " x,o,x"))
+ (parallel [(const_int 6)
+ (const_int 7)
+ (const_int 2)
+ (const_int 3)])))]
+ "TARGET_SSE && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
+ "@
+ movhlps\t{%2, %0|%0, %2}
+ movlps\t{%H2, %0|%0, %H2}
+ movhps\t{%2, %0|%0, %2}"
+ [(set_attr "type" "ssemov")
+ (set_attr "mode" "V4SF,V2SF,V2SF")])
+
+(define_insn "sse_movlhps"
+ [(set (match_operand:V4SF 0 "nonimmediate_operand" "=x,x,o")
+ (vec_select:V4SF
+ (vec_concat:V8SF
+ (match_operand:V4SF 1 "nonimmediate_operand" " 0,0,0")
+ (match_operand:V4SF 2 "nonimmediate_operand" " x,m,x"))
+ (parallel [(const_int 0)
+ (const_int 1)
+ (const_int 4)
+ (const_int 5)])))]
+ "TARGET_SSE && ix86_binary_operator_ok (UNKNOWN, V4SFmode, operands)"
+ "@
+ movlhps\t{%2, %0|%0, %2}
+ movhps\t{%2, %0|%0, %2}
+ movlps\t{%2, %H0|%H0, %2}"
+ [(set_attr "type" "ssemov")
+ (set_attr "mode" "V4SF,V2SF,V2SF")])
+
+(define_insn "sse_unpckhps"
+ [(set (match_operand:V4SF 0 "register_operand" "=x")
+ (vec_select:V4SF
+ (vec_concat:V8SF
+ (match_operand:V4SF 1 "register_operand" "0")
+ (match_operand:V4SF 2 "nonimmediate_operand" "xm"))
+ (parallel [(const_int 2) (const_int 6)
+ (const_int 3) (const_int 7)])))]
+ "TARGET_SSE"
+ "unpckhps\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sselog")
+ (set_attr "mode" "V4SF")])
+
+(define_insn "sse_unpcklps"
+ [(set (match_operand:V4SF 0 "register_operand" "=x")
+ (vec_select:V4SF
+ (vec_concat:V8SF
+ (match_operand:V4SF 1 "register_operand" "0")
+ (match_operand:V4SF 2 "nonimmediate_operand" "xm"))
+ (parallel [(const_int 0) (const_int 4)
+ (const_int 1) (const_int 5)])))]
+ "TARGET_SSE"
+ "unpcklps\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sselog")
+ (set_attr "mode" "V4SF")])
+
+;; These are modeled with the same vec_concat as the others so that we
+;; capture users of shufps that can use the new instructions
+(define_insn "sse3_movshdup"
+ [(set (match_operand:V4SF 0 "register_operand" "=x")
+ (vec_select:V4SF
+ (vec_concat:V8SF
+ (match_operand:V4SF 1 "nonimmediate_operand" "xm")
+ (match_dup 1))
+ (parallel [(const_int 1)
+ (const_int 1)
+ (const_int 7)
+ (const_int 7)])))]
+ "TARGET_SSE3"
+ "movshdup\t{%1, %0|%0, %1}"
+ [(set_attr "type" "sse")
+ (set_attr "prefix_rep" "1")
+ (set_attr "mode" "V4SF")])
+
+(define_insn "sse3_movsldup"
+ [(set (match_operand:V4SF 0 "register_operand" "=x")
+ (vec_select:V4SF
+ (vec_concat:V8SF
+ (match_operand:V4SF 1 "nonimmediate_operand" "xm")
+ (match_dup 1))
+ (parallel [(const_int 0)
+ (const_int 0)
+ (const_int 6)
+ (const_int 6)])))]
+ "TARGET_SSE3"
+ "movsldup\t{%1, %0|%0, %1}"
+ [(set_attr "type" "sse")
+ (set_attr "prefix_rep" "1")
+ (set_attr "mode" "V4SF")])
+
+(define_expand "sse_shufps"
+ [(match_operand:V4SF 0 "register_operand" "")
+ (match_operand:V4SF 1 "register_operand" "")
+ (match_operand:V4SF 2 "nonimmediate_operand" "")
+ (match_operand:SI 3 "const_int_operand" "")]
+ "TARGET_SSE"
+{
+ int mask = INTVAL (operands[3]);
+ emit_insn (gen_sse_shufps_1 (operands[0], operands[1], operands[2],
+ GEN_INT ((mask >> 0) & 3),
+ GEN_INT ((mask >> 2) & 3),
+ GEN_INT (((mask >> 4) & 3) + 4),
+ GEN_INT (((mask >> 6) & 3) + 4)));
+ DONE;
+})
+
+(define_insn "sse_shufps_1"
+ [(set (match_operand:V4SF 0 "register_operand" "=x")
+ (vec_select:V4SF
+ (vec_concat:V8SF
+ (match_operand:V4SF 1 "register_operand" "0")
+ (match_operand:V4SF 2 "nonimmediate_operand" "xm"))
+ (parallel [(match_operand 3 "const_0_to_3_operand" "")
+ (match_operand 4 "const_0_to_3_operand" "")
+ (match_operand 5 "const_4_to_7_operand" "")
+ (match_operand 6 "const_4_to_7_operand" "")])))]
+ "TARGET_SSE"
+{
+ int mask = 0;
+ mask |= INTVAL (operands[3]) << 0;
+ mask |= INTVAL (operands[4]) << 2;
+ mask |= (INTVAL (operands[5]) - 4) << 4;
+ mask |= (INTVAL (operands[6]) - 4) << 6;
+ operands[3] = GEN_INT (mask);
+
+ return "shufps\t{%3, %2, %0|%0, %2, %3}";
+}
+ [(set_attr "type" "sselog")
+ (set_attr "mode" "V4SF")])
+
+(define_insn "sse_storehps"
+ [(set (match_operand:V2SF 0 "nonimmediate_operand" "=m,x,x")
+ (vec_select:V2SF
+ (match_operand:V4SF 1 "nonimmediate_operand" "x,x,o")
+ (parallel [(const_int 2) (const_int 3)])))]
+ "TARGET_SSE"
+ "@
+ movhps\t{%1, %0|%0, %1}
+ movhlps\t{%1, %0|%0, %1}
+ movlps\t{%H1, %0|%0, %H1}"
+ [(set_attr "type" "ssemov")
+ (set_attr "mode" "V2SF,V4SF,V2SF")])
+
+(define_insn "sse_loadhps"
+ [(set (match_operand:V4SF 0 "nonimmediate_operand" "=x,x,o")
+ (vec_concat:V4SF
+ (vec_select:V2SF
+ (match_operand:V4SF 1 "nonimmediate_operand" "0,0,0")
+ (parallel [(const_int 0) (const_int 1)]))
+ (match_operand:V2SF 2 "nonimmediate_operand" "m,x,x")))]
+ "TARGET_SSE"
+ "@
+ movhps\t{%2, %0|%0, %2}
+ movlhps\t{%2, %0|%0, %2}
+ movlps\t{%2, %H0|%H0, %2}"
+ [(set_attr "type" "ssemov")
+ (set_attr "mode" "V2SF,V4SF,V2SF")])
+
+(define_insn "sse_storelps"
+ [(set (match_operand:V2SF 0 "nonimmediate_operand" "=m,x,x")
+ (vec_select:V2SF
+ (match_operand:V4SF 1 "nonimmediate_operand" "x,x,m")
+ (parallel [(const_int 0) (const_int 1)])))]
+ "TARGET_SSE"
+ "@
+ movlps\t{%1, %0|%0, %1}
+ movaps\t{%1, %0|%0, %1}
+ movlps\t{%1, %0|%0, %1}"
+ [(set_attr "type" "ssemov")
+ (set_attr "mode" "V2SF,V4SF,V2SF")])
+
+(define_insn "sse_loadlps"
+ [(set (match_operand:V4SF 0 "nonimmediate_operand" "=x,x,m")
+ (vec_concat:V4SF
+ (match_operand:V2SF 2 "nonimmediate_operand" "0,m,x")
+ (vec_select:V2SF
+ (match_operand:V4SF 1 "nonimmediate_operand" "x,0,0")
+ (parallel [(const_int 2) (const_int 3)]))))]
+ "TARGET_SSE"
+ "@
+ shufps\t{$0xe4, %1, %0|%0, %1, 0xe4}
+ movlps\t{%2, %0|%0, %2}
+ movlps\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sselog,ssemov,ssemov")
+ (set_attr "mode" "V4SF,V2SF,V2SF")])
+
+(define_insn "sse_movss"
+ [(set (match_operand:V4SF 0 "register_operand" "=x")
+ (vec_merge:V4SF
+ (match_operand:V4SF 2 "register_operand" "x")
+ (match_operand:V4SF 1 "register_operand" "0")
+ (const_int 1)))]
+ "TARGET_SSE"
+ "movss\t{%2, %0|%0, %2}"
+ [(set_attr "type" "ssemov")
+ (set_attr "mode" "SF")])
+
+(define_insn "*vec_dupv4sf"
+ [(set (match_operand:V4SF 0 "register_operand" "=x")
+ (vec_duplicate:V4SF
+ (match_operand:SF 1 "register_operand" "0")))]
+ "TARGET_SSE"
+ "shufps\t{$0, %0, %0|%0, %0, 0}"
+ [(set_attr "type" "sselog1")
+ (set_attr "mode" "V4SF")])
+
+;; ??? In theory we can match memory for the MMX alternative, but allowing
+;; nonimmediate_operand for operand 2 and *not* allowing memory for the SSE
+;; alternatives pretty much forces the MMX alternative to be chosen.
+(define_insn "*sse_concatv2sf"
+ [(set (match_operand:V2SF 0 "register_operand" "=x,x,*y,*y")
+ (vec_concat:V2SF
+ (match_operand:SF 1 "nonimmediate_operand" " 0,m, 0, m")
+ (match_operand:SF 2 "reg_or_0_operand" " x,C,*y, C")))]
+ "TARGET_SSE"
+ "@
+ unpcklps\t{%2, %0|%0, %2}
+ movss\t{%1, %0|%0, %1}
+ punpckldq\t{%2, %0|%0, %2}
+ movd\t{%1, %0|%0, %1}"
+ [(set_attr "type" "sselog,ssemov,mmxcvt,mmxmov")
+ (set_attr "mode" "V4SF,SF,DI,DI")])
+
+(define_insn "*sse_concatv4sf"
+ [(set (match_operand:V4SF 0 "register_operand" "=x,x")
+ (vec_concat:V4SF
+ (match_operand:V2SF 1 "register_operand" " 0,0")
+ (match_operand:V2SF 2 "nonimmediate_operand" " x,m")))]
+ "TARGET_SSE"
+ "@
+ movlhps\t{%2, %0|%0, %2}
+ movhps\t{%2, %0|%0, %2}"
+ [(set_attr "type" "ssemov")
+ (set_attr "mode" "V4SF,V2SF")])
+
+(define_expand "vec_initv4sf"
+ [(match_operand:V4SF 0 "register_operand" "")
+ (match_operand 1 "" "")]
+ "TARGET_SSE"
+{
+ ix86_expand_vector_init (false, operands[0], operands[1]);
+ DONE;
+})
+
+(define_insn "vec_setv4sf_0"
+ [(set (match_operand:V4SF 0 "nonimmediate_operand" "=x,x,Y2,m")
+ (vec_merge:V4SF
+ (vec_duplicate:V4SF
+ (match_operand:SF 2 "general_operand" " x,m,*r,x*rfF"))
+ (match_operand:V4SF 1 "vector_move_operand" " 0,C,C ,0")
+ (const_int 1)))]
+ "TARGET_SSE"
+ "@
+ movss\t{%2, %0|%0, %2}
+ movss\t{%2, %0|%0, %2}
+ movd\t{%2, %0|%0, %2}
+ #"
+ [(set_attr "type" "ssemov")
+ (set_attr "mode" "SF")])
+
+;; A subset is vec_setv4sf.
+(define_insn "*vec_setv4sf_sse4_1"
+ [(set (match_operand:V4SF 0 "register_operand" "=x")
+ (vec_merge:V4SF
+ (vec_duplicate:V4SF
+ (match_operand:SF 2 "nonimmediate_operand" "xm"))
+ (match_operand:V4SF 1 "register_operand" "0")
+ (match_operand:SI 3 "const_pow2_1_to_8_operand" "n")))]
+ "TARGET_SSE4_1"
+{
+ operands[3] = GEN_INT (exact_log2 (INTVAL (operands[3])) << 4);
+ return "insertps\t{%3, %2, %0|%0, %2, %3}";
+}
+ [(set_attr "type" "sselog")
+ (set_attr "prefix_extra" "1")
+ (set_attr "mode" "V4SF")])
+
+(define_insn "sse4_1_insertps"
+ [(set (match_operand:V4SF 0 "register_operand" "=x")
+ (unspec:V4SF [(match_operand:V4SF 2 "register_operand" "x")
+ (match_operand:V4SF 1 "register_operand" "0")
+ (match_operand:SI 3 "const_0_to_255_operand" "n")]
+ UNSPEC_INSERTPS))]
+ "TARGET_SSE4_1"
+ "insertps\t{%3, %2, %0|%0, %2, %3}";
+ [(set_attr "type" "sselog")
+ (set_attr "prefix_extra" "1")
+ (set_attr "mode" "V4SF")])
+
+(define_split
+ [(set (match_operand:V4SF 0 "memory_operand" "")
+ (vec_merge:V4SF
+ (vec_duplicate:V4SF
+ (match_operand:SF 1 "nonmemory_operand" ""))
+ (match_dup 0)
+ (const_int 1)))]
+ "TARGET_SSE && reload_completed"
+ [(const_int 0)]
+{
+ emit_move_insn (adjust_address (operands[0], SFmode, 0), operands[1]);
+ DONE;
+})
+
+(define_expand "vec_setv4sf"
+ [(match_operand:V4SF 0 "register_operand" "")
+ (match_operand:SF 1 "register_operand" "")
+ (match_operand 2 "const_int_operand" "")]
+ "TARGET_SSE"
+{
+ ix86_expand_vector_set (false, operands[0], operands[1],
+ INTVAL (operands[2]));
+ DONE;
+})
+
+(define_insn_and_split "*vec_extractv4sf_0"
+ [(set (match_operand:SF 0 "nonimmediate_operand" "=x,m,fr")
+ (vec_select:SF
+ (match_operand:V4SF 1 "nonimmediate_operand" "xm,x,m")
+ (parallel [(const_int 0)])))]
+ "TARGET_SSE && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
+ "#"
+ "&& reload_completed"
+ [(const_int 0)]
+{
+ rtx op1 = operands[1];
+ if (REG_P (op1))
+ op1 = gen_rtx_REG (SFmode, REGNO (op1));
+ else
+ op1 = gen_lowpart (SFmode, op1);
+ emit_move_insn (operands[0], op1);
+ DONE;
+})
+
+(define_insn "*sse4_1_extractps"
+ [(set (match_operand:SF 0 "nonimmediate_operand" "=rm")
+ (vec_select:SF
+ (match_operand:V4SF 1 "register_operand" "x")
+ (parallel [(match_operand:SI 2 "const_0_to_3_operand" "n")])))]
+ "TARGET_SSE4_1"
+ "extractps\t{%2, %1, %0|%0, %1, %2}"
+ [(set_attr "type" "sselog")
+ (set_attr "prefix_extra" "1")
+ (set_attr "mode" "V4SF")])
+
+(define_insn_and_split "*vec_extract_v4sf_mem"
+ [(set (match_operand:SF 0 "register_operand" "=x*rf")
+ (vec_select:SF
+ (match_operand:V4SF 1 "memory_operand" "o")
+ (parallel [(match_operand 2 "const_0_to_3_operand" "n")])))]
+ ""
+ "#"
+ "reload_completed"
+ [(const_int 0)]
+{
+ int i = INTVAL (operands[2]);
+
+ emit_move_insn (operands[0], adjust_address (operands[1], SFmode, i*4));
+ DONE;
+})
+
+(define_expand "vec_extractv4sf"
+ [(match_operand:SF 0 "register_operand" "")
+ (match_operand:V4SF 1 "register_operand" "")
+ (match_operand 2 "const_int_operand" "")]
+ "TARGET_SSE"
+{
+ ix86_expand_vector_extract (false, operands[0], operands[1],
+ INTVAL (operands[2]));
+ DONE;
+})
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
@@ -5847,23 +5417,15 @@
(set_attr "prefix_data16" "1")
(set_attr "mode" "TI")])
-(define_insn "sse_movmskps"
+(define_insn "<sse>_movmskp<ssemodesuffixf2c>"
[(set (match_operand:SI 0 "register_operand" "=r")
- (unspec:SI [(match_operand:V4SF 1 "register_operand" "x")]
- UNSPEC_MOVMSK))]
- "TARGET_SSE"
- "movmskps\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssecvt")
- (set_attr "mode" "V4SF")])
-
-(define_insn "sse2_movmskpd"
- [(set (match_operand:SI 0 "register_operand" "=r")
- (unspec:SI [(match_operand:V2DF 1 "register_operand" "x")]
- UNSPEC_MOVMSK))]
- "TARGET_SSE2"
- "movmskpd\t{%1, %0|%0, %1}"
+ (unspec:SI
+ [(match_operand:SSEMODEF2P 1 "register_operand" "x")]
+ UNSPEC_MOVMSK))]
+ "SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
+ "movmskp<ssemodesuffixf2c>\t{%1, %0|%0, %1}"
[(set_attr "type" "ssecvt")
- (set_attr "mode" "V2DF")])
+ (set_attr "mode" "<MODE>")])
(define_insn "sse2_pmovmskb"
[(set (match_operand:SI 0 "register_operand" "=r")
@@ -6017,7 +5579,12 @@
"monitor"
[(set_attr "length" "3")])
-;; SSSE3
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; SSSE3 instructions
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
(define_insn "ssse3_phaddwv8hi3"
[(set (match_operand:V8HI 0 "register_operand" "=x")
(vec_concat:V8HI
@@ -6536,7 +6103,7 @@
[(set (match_operand:V16QI 0 "register_operand" "=x")
(unspec:V16QI [(match_operand:V16QI 1 "register_operand" "0")
(match_operand:V16QI 2 "nonimmediate_operand" "xm")]
- UNSPEC_PSHUFB))]
+ UNSPEC_PSHUFB))]
"TARGET_SSSE3"
"pshufb\t{%2, %0|%0, %2}";
[(set_attr "type" "sselog1")
@@ -6548,7 +6115,7 @@
[(set (match_operand:V8QI 0 "register_operand" "=y")
(unspec:V8QI [(match_operand:V8QI 1 "register_operand" "0")
(match_operand:V8QI 2 "nonimmediate_operand" "ym")]
- UNSPEC_PSHUFB))]
+ UNSPEC_PSHUFB))]
"TARGET_SSSE3"
"pshufb\t{%2, %0|%0, %2}";
[(set_attr "type" "sselog1")
@@ -6557,9 +6124,10 @@
(define_insn "ssse3_psign<mode>3"
[(set (match_operand:SSEMODE124 0 "register_operand" "=x")
- (unspec:SSEMODE124 [(match_operand:SSEMODE124 1 "register_operand" "0")
- (match_operand:SSEMODE124 2 "nonimmediate_operand" "xm")]
- UNSPEC_PSIGN))]
+ (unspec:SSEMODE124
+ [(match_operand:SSEMODE124 1 "register_operand" "0")
+ (match_operand:SSEMODE124 2 "nonimmediate_operand" "xm")]
+ UNSPEC_PSIGN))]
"TARGET_SSSE3"
"psign<ssevecsize>\t{%2, %0|%0, %2}";
[(set_attr "type" "sselog1")
@@ -6569,9 +6137,10 @@
(define_insn "ssse3_psign<mode>3"
[(set (match_operand:MMXMODEI 0 "register_operand" "=y")
- (unspec:MMXMODEI [(match_operand:MMXMODEI 1 "register_operand" "0")
- (match_operand:MMXMODEI 2 "nonimmediate_operand" "ym")]
- UNSPEC_PSIGN))]
+ (unspec:MMXMODEI
+ [(match_operand:MMXMODEI 1 "register_operand" "0")
+ (match_operand:MMXMODEI 2 "nonimmediate_operand" "ym")]
+ UNSPEC_PSIGN))]
"TARGET_SSSE3"
"psign<mmxvecsize>\t{%2, %0|%0, %2}";
[(set_attr "type" "sselog1")
@@ -6583,7 +6152,7 @@
(unspec:TI [(match_operand:TI 1 "register_operand" "0")
(match_operand:TI 2 "nonimmediate_operand" "xm")
(match_operand:SI 3 "const_0_to_255_mul_8_operand" "n")]
- UNSPEC_PALIGNR))]
+ UNSPEC_PALIGNR))]
"TARGET_SSSE3"
{
operands[3] = GEN_INT (INTVAL (operands[3]) / 8);
@@ -6599,7 +6168,7 @@
(unspec:DI [(match_operand:DI 1 "register_operand" "0")
(match_operand:DI 2 "nonimmediate_operand" "ym")
(match_operand:SI 3 "const_0_to_255_mul_8_operand" "n")]
- UNSPEC_PALIGNR))]
+ UNSPEC_PALIGNR))]
"TARGET_SSSE3"
{
operands[3] = GEN_INT (INTVAL (operands[3]) / 8);
@@ -6634,45 +6203,27 @@
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(define_insn "sse4a_vmmovntv2df"
- [(set (match_operand:DF 0 "memory_operand" "=m")
- (unspec:DF [(vec_select:DF
- (match_operand:V2DF 1 "register_operand" "x")
- (parallel [(const_int 0)]))]
- UNSPEC_MOVNT))]
- "TARGET_SSE4A"
- "movntsd\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssemov")
- (set_attr "mode" "DF")])
-
-(define_insn "sse4a_movntdf"
- [(set (match_operand:DF 0 "memory_operand" "=m")
- (unspec:DF [(match_operand:DF 1 "register_operand" "x")]
- UNSPEC_MOVNT))]
+(define_insn "sse4a_movnt<mode>"
+ [(set (match_operand:MODEF 0 "memory_operand" "=m")
+ (unspec:MODEF
+ [(match_operand:MODEF 1 "register_operand" "x")]
+ UNSPEC_MOVNT))]
"TARGET_SSE4A"
- "movntsd\t{%1, %0|%0, %1}"
+ "movnts<ssemodefsuffix>\t{%1, %0|%0, %1}"
[(set_attr "type" "ssemov")
- (set_attr "mode" "DF")])
-
-(define_insn "sse4a_vmmovntv4sf"
- [(set (match_operand:SF 0 "memory_operand" "=m")
- (unspec:SF [(vec_select:SF
- (match_operand:V4SF 1 "register_operand" "x")
- (parallel [(const_int 0)]))]
- UNSPEC_MOVNT))]
- "TARGET_SSE4A"
- "movntss\t{%1, %0|%0, %1}"
- [(set_attr "type" "ssemov")
- (set_attr "mode" "SF")])
+ (set_attr "mode" "<MODE>")])
-(define_insn "sse4a_movntsf"
- [(set (match_operand:SF 0 "memory_operand" "=m")
- (unspec:SF [(match_operand:SF 1 "register_operand" "x")]
- UNSPEC_MOVNT))]
+(define_insn "sse4a_vmmovnt<mode>"
+ [(set (match_operand:<ssescalarmode> 0 "memory_operand" "=m")
+ (unspec:<ssescalarmode>
+ [(vec_select:<ssescalarmode>
+ (match_operand:SSEMODEF2P 1 "register_operand" "x")
+ (parallel [(const_int 0)]))]
+ UNSPEC_MOVNT))]
"TARGET_SSE4A"
- "movntss\t{%1, %0|%0, %1}"
+ "movnts<ssemodesuffixf2c>\t{%1, %0|%0, %1}"
[(set_attr "type" "ssemov")
- (set_attr "mode" "SF")])
+ (set_attr "mode" "<ssescalarmode>")])
(define_insn "sse4a_extrqi"
[(set (match_operand:V2DI 0 "register_operand" "=x")
@@ -6727,77 +6278,43 @@
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(define_insn "sse4_1_blendpd"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (vec_merge:V2DF
- (match_operand:V2DF 2 "nonimmediate_operand" "xm")
- (match_operand:V2DF 1 "register_operand" "0")
+(define_insn "sse4_1_blendp<ssemodesuffixf2c>"
+ [(set (match_operand:SSEMODEF2P 0 "register_operand" "=x")
+ (vec_merge:SSEMODEF2P
+ (match_operand:SSEMODEF2P 2 "nonimmediate_operand" "xm")
+ (match_operand:SSEMODEF2P 1 "register_operand" "0")
(match_operand:SI 3 "const_0_to_3_operand" "n")))]
"TARGET_SSE4_1"
- "blendpd\t{%3, %2, %0|%0, %2, %3}"
+ "blendp<ssemodesuffixf2c>\t{%3, %2, %0|%0, %2, %3}"
[(set_attr "type" "ssemov")
(set_attr "prefix_extra" "1")
- (set_attr "mode" "V2DF")])
-
-(define_insn "sse4_1_blendps"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (vec_merge:V4SF
- (match_operand:V4SF 2 "nonimmediate_operand" "xm")
- (match_operand:V4SF 1 "register_operand" "0")
- (match_operand:SI 3 "const_0_to_15_operand" "n")))]
- "TARGET_SSE4_1"
- "blendps\t{%3, %2, %0|%0, %2, %3}"
- [(set_attr "type" "ssemov")
- (set_attr "prefix_extra" "1")
- (set_attr "mode" "V4SF")])
-
-(define_insn "sse4_1_blendvpd"
- [(set (match_operand:V2DF 0 "reg_not_xmm0_operand" "=x")
- (unspec:V2DF [(match_operand:V2DF 1 "reg_not_xmm0_operand" "0")
- (match_operand:V2DF 2 "nonimm_not_xmm0_operand" "xm")
- (match_operand:V2DF 3 "register_operand" "Yz")]
- UNSPEC_BLENDV))]
- "TARGET_SSE4_1"
- "blendvpd\t{%3, %2, %0|%0, %2, %3}"
- [(set_attr "type" "ssemov")
- (set_attr "prefix_extra" "1")
- (set_attr "mode" "V2DF")])
+ (set_attr "mode" "<MODE>")])
-(define_insn "sse4_1_blendvps"
- [(set (match_operand:V4SF 0 "reg_not_xmm0_operand" "=x")
- (unspec:V4SF [(match_operand:V4SF 1 "reg_not_xmm0_operand" "0")
- (match_operand:V4SF 2 "nonimm_not_xmm0_operand" "xm")
- (match_operand:V4SF 3 "register_operand" "Yz")]
- UNSPEC_BLENDV))]
+(define_insn "sse4_1_blendvp<ssemodesuffixf2c>"
+ [(set (match_operand:SSEMODEF2P 0 "reg_not_xmm0_operand" "=x")
+ (unspec:SSEMODEF2P
+ [(match_operand:SSEMODEF2P 1 "reg_not_xmm0_operand" "0")
+ (match_operand:SSEMODEF2P 2 "nonimm_not_xmm0_operand" "xm")
+ (match_operand:SSEMODEF2P 3 "register_operand" "Yz")]
+ UNSPEC_BLENDV))]
"TARGET_SSE4_1"
- "blendvps\t{%3, %2, %0|%0, %2, %3}"
+ "blendvp<ssemodesuffixf2c>\t{%3, %2, %0|%0, %2, %3}"
[(set_attr "type" "ssemov")
(set_attr "prefix_extra" "1")
- (set_attr "mode" "V4SF")])
-
-(define_insn "sse4_1_dppd"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (unspec:V2DF [(match_operand:V2DF 1 "nonimmediate_operand" "%0")
- (match_operand:V2DF 2 "nonimmediate_operand" "xm")
- (match_operand:SI 3 "const_0_to_255_operand" "n")]
- UNSPEC_DP))]
- "TARGET_SSE4_1"
- "dppd\t{%3, %2, %0|%0, %2, %3}"
- [(set_attr "type" "ssemul")
- (set_attr "prefix_extra" "1")
- (set_attr "mode" "V2DF")])
+ (set_attr "mode" "<MODE>")])
-(define_insn "sse4_1_dpps"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (unspec:V4SF [(match_operand:V4SF 1 "nonimmediate_operand" "%0")
- (match_operand:V4SF 2 "nonimmediate_operand" "xm")
- (match_operand:SI 3 "const_0_to_255_operand" "n")]
- UNSPEC_DP))]
+(define_insn "sse4_1_dpp<ssemodesuffixf2c>"
+ [(set (match_operand:SSEMODEF2P 0 "register_operand" "=x")
+ (unspec:SSEMODEF2P
+ [(match_operand:SSEMODEF2P 1 "nonimmediate_operand" "%0")
+ (match_operand:SSEMODEF2P 2 "nonimmediate_operand" "xm")
+ (match_operand:SI 3 "const_0_to_255_operand" "n")]
+ UNSPEC_DP))]
"TARGET_SSE4_1"
- "dpps\t{%3, %2, %0|%0, %2, %3}"
+ "dpp<ssemodesuffixf2c>\t{%3, %2, %0|%0, %2, %3}"
[(set_attr "type" "ssemul")
(set_attr "prefix_extra" "1")
- (set_attr "mode" "V4SF")])
+ (set_attr "mode" "<MODE>")])
(define_insn "sse4_1_movntdqa"
[(set (match_operand:V2DI 0 "register_operand" "=x")
@@ -7245,55 +6762,32 @@
(set_attr "prefix_extra" "1")
(set_attr "mode" "TI")])
-(define_insn "sse4_1_roundpd"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (unspec:V2DF [(match_operand:V2DF 1 "nonimmediate_operand" "xm")
- (match_operand:SI 2 "const_0_to_15_operand" "n")]
- UNSPEC_ROUND))]
- "TARGET_ROUND"
- "roundpd\t{%2, %1, %0|%0, %1, %2}"
- [(set_attr "type" "ssecvt")
- (set_attr "prefix_extra" "1")
- (set_attr "mode" "V2DF")])
-
-(define_insn "sse4_1_roundps"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (unspec:V4SF [(match_operand:V4SF 1 "nonimmediate_operand" "xm")
- (match_operand:SI 2 "const_0_to_15_operand" "n")]
- UNSPEC_ROUND))]
- "TARGET_ROUND"
- "roundps\t{%2, %1, %0|%0, %1, %2}"
- [(set_attr "type" "ssecvt")
- (set_attr "prefix_extra" "1")
- (set_attr "mode" "V4SF")])
-
-(define_insn "sse4_1_roundsd"
- [(set (match_operand:V2DF 0 "register_operand" "=x")
- (vec_merge:V2DF
- (unspec:V2DF [(match_operand:V2DF 2 "register_operand" "x")
- (match_operand:SI 3 "const_0_to_15_operand" "n")]
- UNSPEC_ROUND)
- (match_operand:V2DF 1 "register_operand" "0")
- (const_int 1)))]
+(define_insn "sse4_1_roundp<ssemodesuffixf2c>"
+ [(set (match_operand:SSEMODEF2P 0 "register_operand" "=x")
+ (unspec:SSEMODEF2P
+ [(match_operand:SSEMODEF2P 1 "nonimmediate_operand" "xm")
+ (match_operand:SI 2 "const_0_to_15_operand" "n")]
+ UNSPEC_ROUND))]
"TARGET_ROUND"
- "roundsd\t{%3, %2, %0|%0, %2, %3}"
+ "roundp<ssemodesuffixf2c>\t{%2, %1, %0|%0, %1, %2}"
[(set_attr "type" "ssecvt")
(set_attr "prefix_extra" "1")
- (set_attr "mode" "V2DF")])
+ (set_attr "mode" "<MODE>")])
-(define_insn "sse4_1_roundss"
- [(set (match_operand:V4SF 0 "register_operand" "=x")
- (vec_merge:V4SF
- (unspec:V4SF [(match_operand:V4SF 2 "register_operand" "x")
- (match_operand:SI 3 "const_0_to_15_operand" "n")]
- UNSPEC_ROUND)
- (match_operand:V4SF 1 "register_operand" "0")
+(define_insn "sse4_1_rounds<ssemodesuffixf2c>"
+ [(set (match_operand:SSEMODEF2P 0 "register_operand" "=x")
+ (vec_merge:SSEMODEF2P
+ (unspec:SSEMODEF2P
+ [(match_operand:SSEMODEF2P 2 "register_operand" "x")
+ (match_operand:SI 3 "const_0_to_15_operand" "n")]
+ UNSPEC_ROUND)
+ (match_operand:SSEMODEF2P 1 "register_operand" "0")
(const_int 1)))]
"TARGET_ROUND"
- "roundss\t{%3, %2, %0|%0, %2, %3}"
+ "rounds<ssemodesuffixf2c>\t{%3, %2, %0|%0, %2, %3}"
[(set_attr "type" "ssecvt")
(set_attr "prefix_extra" "1")
- (set_attr "mode" "V4SF")])
+ (set_attr "mode" "<MODE>")])
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
@@ -8347,10 +7841,11 @@
;; SSE5 permute instructions
(define_insn "sse5_pperm"
[(set (match_operand:V16QI 0 "register_operand" "=x,x,x,x")
- (unspec:V16QI [(match_operand:V16QI 1 "nonimmediate_operand" "0,0,x,xm")
- (match_operand:V16QI 2 "nonimmediate_operand" "x,xm,xm,x")
- (match_operand:V16QI 3 "nonimmediate_operand" "xm,x,0,0")]
- UNSPEC_SSE5_PERMUTE))]
+ (unspec:V16QI
+ [(match_operand:V16QI 1 "nonimmediate_operand" "0,0,x,xm")
+ (match_operand:V16QI 2 "nonimmediate_operand" "x,xm,xm,x")
+ (match_operand:V16QI 3 "nonimmediate_operand" "xm,x,0,0")]
+ UNSPEC_SSE5_PERMUTE))]
"TARGET_SSE5 && ix86_sse5_valid_op_p (operands, insn, 4, true, 1)"
"pperm\t{%3, %2, %1, %0|%0, %1, %2, %3}"
[(set_attr "type" "sse4arg")
@@ -8553,7 +8048,7 @@
[(match_operand:SSEMODEF2P 1 "nonimmediate_operand" "xm")]
UNSPEC_FRCZ))]
"TARGET_SSE5"
- "frcz<ssesuffixf4>\t{%1, %0|%0, %1}"
+ "frcz<ssemodesuffixf4>\t{%1, %0|%0, %1}"
[(set_attr "type" "ssecvt1")
(set_attr "prefix_extra" "1")
(set_attr "mode" "<MODE>")])
@@ -8567,8 +8062,8 @@
UNSPEC_FRCZ)
(match_operand:SSEMODEF2P 1 "register_operand" "0")
(const_int 1)))]
- "TARGET_ROUND"
- "frcz<ssesuffixf2s>\t{%2, %0|%0, %2}"
+ "TARGET_SSE5"
+ "frcz<ssemodesuffixf2s>\t{%2, %0|%0, %2}"
[(set_attr "type" "ssecvt1")
(set_attr "prefix_extra" "1")
(set_attr "mode" "<MODE>")])
@@ -8710,10 +8205,11 @@
;; being added here to be complete.
(define_insn "sse5_pcom_tf<mode>3"
[(set (match_operand:SSEMODE1248 0 "register_operand" "=x")
- (unspec:SSEMODE1248 [(match_operand:SSEMODE1248 1 "register_operand" "x")
- (match_operand:SSEMODE1248 2 "nonimmediate_operand" "xm")
- (match_operand:SI 3 "const_int_operand" "n")]
- UNSPEC_SSE5_TRUEFALSE))]
+ (unspec:SSEMODE1248
+ [(match_operand:SSEMODE1248 1 "register_operand" "x")
+ (match_operand:SSEMODE1248 2 "nonimmediate_operand" "xm")
+ (match_operand:SI 3 "const_int_operand" "n")]
+ UNSPEC_SSE5_TRUEFALSE))]
"TARGET_SSE5"
{
return ((INTVAL (operands[3]) != 0)
diff --git a/gcc/config/mips/mips.md b/gcc/config/mips/mips.md
index a6ddb8c967f..b5c66622c2a 100644
--- a/gcc/config/mips/mips.md
+++ b/gcc/config/mips/mips.md
@@ -4312,9 +4312,9 @@
[(unspec_volatile [(reg:DI 28)] UNSPEC_BLOCKAGE)]
""
""
- [(set_attr "type" "unknown")
- (set_attr "mode" "none")
- (set_attr "length" "0")])
+ [(set_attr "type" "ghost")
+ (set_attr "mode" "none")
+ (set_attr "length" "0")])
;; Initialize $gp for RTP PIC. Operand 0 is the __GOTT_BASE__ symbol
;; and operand 1 is the __GOTT_INDEX__ symbol.
@@ -5517,9 +5517,9 @@
[(unspec_volatile [(const_int 0)] UNSPEC_BLOCKAGE)]
""
""
- [(set_attr "type" "unknown")
- (set_attr "mode" "none")
- (set_attr "length" "0")])
+ [(set_attr "type" "ghost")
+ (set_attr "mode" "none")
+ (set_attr "length" "0")])
(define_expand "epilogue"
[(const_int 2)]
diff --git a/gcc/config/rs6000/darwin.h b/gcc/config/rs6000/darwin.h
index 6c88757d24e..f6c9ee3c2e2 100644
--- a/gcc/config/rs6000/darwin.h
+++ b/gcc/config/rs6000/darwin.h
@@ -432,3 +432,6 @@
/* When generating kernel code or kexts, we don't use Altivec by
default, as kernel code doesn't save/restore those registers. */
#define OS_MISSING_ALTIVEC (flag_mkernel || flag_apple_kext)
+
+/* Darwin has to rename some of the long double builtins. */
+#define SUBTARGET_INIT_BUILTINS darwin_patch_builtins ()
diff --git a/gcc/config/rs6000/eabispe.h b/gcc/config/rs6000/eabispe.h
index 0acc17c7022..c3a3f2b4e53 100644
--- a/gcc/config/rs6000/eabispe.h
+++ b/gcc/config/rs6000/eabispe.h
@@ -31,7 +31,7 @@
#define SUBSUBTARGET_OVERRIDE_OPTIONS \
if (rs6000_select[1].string == NULL) \
rs6000_cpu = PROCESSOR_PPC8540; \
- if (!rs6000_explicit_options.abi) \
+ if (!rs6000_explicit_options.spe_abi) \
rs6000_spe_abi = 1; \
if (!rs6000_explicit_options.float_gprs) \
rs6000_float_gprs = 1; \
diff --git a/gcc/config/rs6000/linuxspe.h b/gcc/config/rs6000/linuxspe.h
index 1aea7442c54..c526cf8dce4 100644
--- a/gcc/config/rs6000/linuxspe.h
+++ b/gcc/config/rs6000/linuxspe.h
@@ -30,7 +30,7 @@
#define SUBSUBTARGET_OVERRIDE_OPTIONS \
if (rs6000_select[1].string == NULL) \
rs6000_cpu = PROCESSOR_PPC8540; \
- if (!rs6000_explicit_options.abi) \
+ if (!rs6000_explicit_options.spe_abi) \
rs6000_spe_abi = 1; \
if (!rs6000_explicit_options.float_gprs) \
rs6000_float_gprs = 1; \
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 4ebea38388b..9b9fefda2af 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -171,7 +171,7 @@ int rs6000_long_double_type_size;
/* IEEE quad extended precision long double. */
int rs6000_ieeequad;
-/* Whether -mabi=altivec has appeared. */
+/* Nonzero to use AltiVec ABI. */
int rs6000_altivec_abi;
/* Nonzero if we want SPE ABI extensions. */
@@ -262,12 +262,14 @@ int rs6000_alignment_flags;
struct {
bool aix_struct_ret; /* True if -maix-struct-ret was used. */
bool alignment; /* True if -malign- was used. */
- bool abi; /* True if -mabi=spe/nospe was used. */
+ bool spe_abi; /* True if -mabi=spe/no-spe was used. */
+ bool altivec_abi; /* True if -mabi=altivec/no-altivec used. */
bool spe; /* True if -mspe= was used. */
bool float_gprs; /* True if -mfloat-gprs= was used. */
bool isel; /* True if -misel was used. */
bool long_double; /* True if -mlong-double- was used. */
bool ieee; /* True if -mabi=ieee/ibmlongdouble used. */
+ bool vrsave; /* True if -mvrsave was used. */
} rs6000_explicit_options;
struct builtin_description
@@ -667,6 +669,25 @@ struct processor_costs ppc8540_cost = {
1, /* prefetch streams /*/
};
+/* Instruction costs on E300C2 and E300C3 cores. */
+static const
+struct processor_costs ppce300c2c3_cost = {
+ COSTS_N_INSNS (4), /* mulsi */
+ COSTS_N_INSNS (4), /* mulsi_const */
+ COSTS_N_INSNS (4), /* mulsi_const9 */
+ COSTS_N_INSNS (4), /* muldi */
+ COSTS_N_INSNS (19), /* divsi */
+ COSTS_N_INSNS (19), /* divdi */
+ COSTS_N_INSNS (3), /* fp */
+ COSTS_N_INSNS (4), /* dmul */
+ COSTS_N_INSNS (18), /* sdiv */
+ COSTS_N_INSNS (33), /* ddiv */
+ 32,
+ 32, /* l1 cache */
+ 256, /* l2 cache */
+ 1, /* prefetch streams /*/
+};
+
/* Instruction costs on POWER4 and POWER5 processors. */
static const
struct processor_costs power4_cost = {
@@ -1418,6 +1439,8 @@ rs6000_override_options (const char *default_cpu)
{"8540", PROCESSOR_PPC8540, POWERPC_BASE_MASK | MASK_STRICT_ALIGN},
/* 8548 has a dummy entry for now. */
{"8548", PROCESSOR_PPC8540, POWERPC_BASE_MASK | MASK_STRICT_ALIGN},
+ {"e300c2", PROCESSOR_PPCE300C2, POWERPC_BASE_MASK | MASK_SOFT_FLOAT},
+ {"e300c3", PROCESSOR_PPCE300C3, POWERPC_BASE_MASK},
{"860", PROCESSOR_MPCCORE, POWERPC_BASE_MASK | MASK_SOFT_FLOAT},
{"970", PROCESSOR_POWER4,
POWERPC_7400_MASK | MASK_PPC_GPOPT | MASK_MFCRF | MASK_POWERPC64},
@@ -1524,6 +1547,14 @@ rs6000_override_options (const char *default_cpu)
if (TARGET_E500)
rs6000_isel = 1;
+ if (rs6000_cpu == PROCESSOR_PPCE300C2 || rs6000_cpu == PROCESSOR_PPCE300C3)
+ {
+ if (TARGET_ALTIVEC)
+ error ("AltiVec not supported in this target");
+ if (TARGET_SPE)
+ error ("Spe not supported in this target");
+ }
+
/* If we are optimizing big endian systems for space, use the load/store
multiple and string instructions. */
if (BYTES_BIG_ENDIAN && optimize_size)
@@ -1590,11 +1621,18 @@ rs6000_override_options (const char *default_cpu)
if (TARGET_XCOFF && TARGET_ALTIVEC)
rs6000_altivec_abi = 1;
- /* Set Altivec ABI as default for PowerPC64 Linux. */
- if (TARGET_ELF && TARGET_64BIT)
+ /* The AltiVec ABI is the default for PowerPC-64 GNU/Linux. For
+ PowerPC-32 GNU/Linux, -maltivec implies the AltiVec ABI. It can
+ be explicitly overridden in either case. */
+ if (TARGET_ELF)
{
- rs6000_altivec_abi = 1;
- TARGET_ALTIVEC_VRSAVE = 1;
+ if (!rs6000_explicit_options.altivec_abi
+ && (TARGET_64BIT || TARGET_ALTIVEC))
+ rs6000_altivec_abi = 1;
+
+ /* Enable VRSAVE for AltiVec ABI, unless explicitly overridden. */
+ if (!rs6000_explicit_options.vrsave)
+ TARGET_ALTIVEC_VRSAVE = rs6000_altivec_abi;
}
/* Set the Darwin64 ABI as default for 64-bit Darwin. */
@@ -1638,7 +1676,7 @@ rs6000_override_options (const char *default_cpu)
/* For the powerpc-eabispe configuration, we set all these by
default, so let's unset them if we manually set another
CPU that is not the E500. */
- if (!rs6000_explicit_options.abi)
+ if (!rs6000_explicit_options.spe_abi)
rs6000_spe_abi = 0;
if (!rs6000_explicit_options.spe)
rs6000_spe = 0;
@@ -1836,6 +1874,11 @@ rs6000_override_options (const char *default_cpu)
rs6000_cost = &ppc8540_cost;
break;
+ case PROCESSOR_PPCE300C2:
+ case PROCESSOR_PPCE300C3:
+ rs6000_cost = &ppce300c2c3_cost;
+ break;
+
case PROCESSOR_POWER4:
case PROCESSOR_POWER5:
rs6000_cost = &power4_cost;
@@ -2131,6 +2174,7 @@ rs6000_handle_option (size_t code, const char *arg, int value)
break;
case OPT_mvrsave_:
+ rs6000_explicit_options.vrsave = true;
rs6000_parse_yes_no_option ("vrsave", arg, &(TARGET_ALTIVEC_VRSAVE));
break;
@@ -2188,19 +2232,20 @@ rs6000_handle_option (size_t code, const char *arg, int value)
case OPT_mabi_:
if (!strcmp (arg, "altivec"))
{
- rs6000_explicit_options.abi = true;
+ rs6000_explicit_options.altivec_abi = true;
rs6000_altivec_abi = 1;
+
+ /* Enabling the AltiVec ABI turns off the SPE ABI. */
rs6000_spe_abi = 0;
}
else if (! strcmp (arg, "no-altivec"))
{
- /* ??? Don't set rs6000_explicit_options.abi here, to allow
- the default for rs6000_spe_abi to be chosen later. */
+ rs6000_explicit_options.altivec_abi = true;
rs6000_altivec_abi = 0;
}
else if (! strcmp (arg, "spe"))
{
- rs6000_explicit_options.abi = true;
+ rs6000_explicit_options.spe_abi = true;
rs6000_spe_abi = 1;
rs6000_altivec_abi = 0;
if (!TARGET_SPE_ABI)
@@ -2208,7 +2253,7 @@ rs6000_handle_option (size_t code, const char *arg, int value)
}
else if (! strcmp (arg, "no-spe"))
{
- rs6000_explicit_options.abi = true;
+ rs6000_explicit_options.spe_abi = true;
rs6000_spe_abi = 0;
}
@@ -3619,19 +3664,29 @@ rs6000_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNUSED,
/* We accept [reg + reg] and [reg + OFFSET]. */
if (GET_CODE (x) == PLUS)
- {
- rtx op1 = XEXP (x, 0);
- rtx op2 = XEXP (x, 1);
+ {
+ rtx op1 = XEXP (x, 0);
+ rtx op2 = XEXP (x, 1);
+ rtx y;
- op1 = force_reg (Pmode, op1);
+ op1 = force_reg (Pmode, op1);
- if (GET_CODE (op2) != REG
- && (GET_CODE (op2) != CONST_INT
- || !SPE_CONST_OFFSET_OK (INTVAL (op2))))
- op2 = force_reg (Pmode, op2);
+ if (GET_CODE (op2) != REG
+ && (GET_CODE (op2) != CONST_INT
+ || !SPE_CONST_OFFSET_OK (INTVAL (op2))
+ || (GET_MODE_SIZE (mode) > 8
+ && !SPE_CONST_OFFSET_OK (INTVAL (op2) + 8))))
+ op2 = force_reg (Pmode, op2);
- return gen_rtx_PLUS (Pmode, op1, op2);
- }
+ /* We can't always do [reg + reg] for these, because [reg +
+ reg + offset] is not a legitimate addressing mode. */
+ y = gen_rtx_PLUS (Pmode, op1, op2);
+
+ if (GET_MODE_SIZE (mode) > 8 && REG_P (op2))
+ return force_reg (Pmode, y);
+ else
+ return y;
+ }
return force_reg (Pmode, x);
}
@@ -9166,6 +9221,10 @@ rs6000_init_builtins (void)
if (built_in_decls [BUILT_IN_CLOG])
set_user_assembler_name (built_in_decls [BUILT_IN_CLOG], "__clog");
#endif
+
+#ifdef SUBTARGET_INIT_BUILTINS
+ SUBTARGET_INIT_BUILTINS;
+#endif
}
/* Search through a set of builtins and enable the mask bits.
@@ -18502,6 +18561,8 @@ rs6000_issue_rate (void)
case CPU_PPC7400:
case CPU_PPC8540:
case CPU_CELL:
+ case CPU_PPCE300C2:
+ case CPU_PPCE300C3:
return 2;
case CPU_RIOS2:
case CPU_PPC604:
diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h
index 6a64eae3dd9..7f7dd57e1e1 100644
--- a/gcc/config/rs6000/rs6000.h
+++ b/gcc/config/rs6000/rs6000.h
@@ -60,6 +60,18 @@
#define TARGET_PAIRED_FLOAT 0
#endif
+#ifdef HAVE_AS_POPCNTB
+#define ASM_CPU_POWER5_SPEC "-mpower5"
+#else
+#define ASM_CPU_POWER5_SPEC "-mpower4"
+#endif
+
+#ifdef HAVE_AS_DFP
+#define ASM_CPU_POWER6_SPEC "-mpower6 -maltivec"
+#else
+#define ASM_CPU_POWER6_SPEC "-mpower4 -maltivec"
+#endif
+
/* Common ASM definitions used by ASM_SPEC among the various targets
for handling -mcpu=xxx switches. */
#define ASM_CPU_SPEC \
@@ -76,10 +88,10 @@
%{mcpu=power2: -mpwrx} \
%{mcpu=power3: -mppc64} \
%{mcpu=power4: -mpower4} \
-%{mcpu=power5: -mpower4} \
-%{mcpu=power5+: -mpower4} \
-%{mcpu=power6: -mpower4 -maltivec} \
-%{mcpu=power6x: -mpower4 -maltivec} \
+%{mcpu=power5: %(asm_cpu_power5)} \
+%{mcpu=power5+: %(asm_cpu_power5)} \
+%{mcpu=power6: %(asm_cpu_power6) -maltivec} \
+%{mcpu=power6x: %(asm_cpu_power6) -maltivec} \
%{mcpu=powerpc: -mppc} \
%{mcpu=rios: -mpwr} \
%{mcpu=rios1: -mpwr} \
@@ -117,6 +129,8 @@
%{mcpu=G5: -mpower4 -maltivec} \
%{mcpu=8540: -me500} \
%{mcpu=8548: -me500} \
+%{mcpu=e300c2: -me300} \
+%{mcpu=e300c3: -me300} \
%{maltivec: -maltivec} \
-many"
@@ -141,6 +155,8 @@
{ "asm_cpu", ASM_CPU_SPEC }, \
{ "asm_default", ASM_DEFAULT_SPEC }, \
{ "cc1_cpu", CC1_CPU_SPEC }, \
+ { "asm_cpu_power5", ASM_CPU_POWER5_SPEC }, \
+ { "asm_cpu_power6", ASM_CPU_POWER6_SPEC }, \
SUBTARGET_EXTRA_SPECS
/* -mcpu=native handling only makes sense with compiler running on
@@ -262,6 +278,8 @@ enum processor_type
PROCESSOR_PPC7400,
PROCESSOR_PPC7450,
PROCESSOR_PPC8540,
+ PROCESSOR_PPCE300C2,
+ PROCESSOR_PPCE300C3,
PROCESSOR_POWER4,
PROCESSOR_POWER5,
PROCESSOR_POWER6,
@@ -596,6 +614,7 @@ extern enum rs6000_nop_insertion rs6000_sched_insert_nops;
Make vector constants quadword aligned. */
#define CONSTANT_ALIGNMENT(EXP, ALIGN) \
(TREE_CODE (EXP) == STRING_CST \
+ && (STRICT_ALIGNMENT || !optimize_size) \
&& (ALIGN) < BITS_PER_WORD \
? BITS_PER_WORD \
: (ALIGN))
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index d1b43dc78af..777a1ecf46d 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -133,7 +133,7 @@
;; Processor type -- this attribute must exactly match the processor_type
;; enumeration in rs6000.h.
-(define_attr "cpu" "rios1,rios2,rs64a,mpccore,ppc403,ppc405,ppc440,ppc601,ppc603,ppc604,ppc604e,ppc620,ppc630,ppc750,ppc7400,ppc7450,ppc8540,power4,power5,power6,cell"
+(define_attr "cpu" "rios1,rios2,rs64a,mpccore,ppc403,ppc405,ppc440,ppc601,ppc603,ppc604,ppc604e,ppc620,ppc630,ppc750,ppc7400,ppc7450,ppc8540,ppce300c2,ppce300c3,power4,power5,power6,cell"
(const (symbol_ref "rs6000_cpu_attr")))
@@ -166,6 +166,7 @@
(include "7xx.md")
(include "7450.md")
(include "8540.md")
+(include "e300c2c3.md")
(include "power4.md")
(include "power5.md")
(include "power6.md")
diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c
index 4088ef73cdf..dccbc1ea350 100644
--- a/gcc/config/sh/sh.c
+++ b/gcc/config/sh/sh.c
@@ -3838,6 +3838,7 @@ find_barrier (int num_mova, rtx mova, rtx from)
rtx barrier_before_mova = 0, found_barrier = 0, good_barrier = 0;
int si_limit;
int hi_limit;
+ rtx orig = from;
/* For HImode: range is 510, add 4 because pc counts from address of
second instruction after this one, subtract 2 for the jump instruction
@@ -3897,6 +3898,7 @@ find_barrier (int num_mova, rtx mova, rtx from)
if (GET_CODE (from) == BARRIER)
{
+ rtx next;
found_barrier = from;
@@ -3905,6 +3907,14 @@ find_barrier (int num_mova, rtx mova, rtx from)
this kind of barrier. */
if (barrier_align (from) > 2)
good_barrier = from;
+
+ /* If we are at the end of a hot/cold block, dump the constants
+ here. */
+ next = NEXT_INSN (from);
+ if (next
+ && NOTE_P (next)
+ && NOTE_KIND (next) == NOTE_INSN_SWITCH_TEXT_SECTIONS)
+ break;
}
if (broken_move (from))
@@ -4061,7 +4071,8 @@ find_barrier (int num_mova, rtx mova, rtx from)
/* If we exceeded the range, then we must back up over the last
instruction we looked at. Otherwise, we just need to undo the
NEXT_INSN at the end of the loop. */
- if (count_hi > hi_limit || count_si > si_limit)
+ if (PREV_INSN (from) != orig
+ && (count_hi > hi_limit || count_si > si_limit))
from = PREV_INSN (PREV_INSN (from));
else
from = PREV_INSN (from);
diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md
index d7e2727adac..5a580b517cd 100644
--- a/gcc/config/sh/sh.md
+++ b/gcc/config/sh/sh.md
@@ -7378,7 +7378,7 @@ label:
(define_insn "jump_compact"
[(set (pc)
(label_ref (match_operand 0 "" "")))]
- "TARGET_SH1"
+ "TARGET_SH1 && !find_reg_note (insn, REG_CROSSING_JUMP, NULL_RTX)"
"*
{
/* The length is 16 if the delay slot is unfilled. */
diff --git a/gcc/config/spu/spu.md b/gcc/config/spu/spu.md
index f1bfdaff607..14854606b8d 100644
--- a/gcc/config/spu/spu.md
+++ b/gcc/config/spu/spu.md
@@ -4455,3 +4455,179 @@ selb\t%0,%4,%0,%3"
DONE;
}")
+
+(define_expand "vec_unpacku_hi_v8hi"
+ [(set (match_operand:V4SI 0 "spu_reg_operand" "=r")
+ (zero_extend:V4SI
+ (vec_select:V4HI
+ (match_operand:V8HI 1 "spu_reg_operand" "r")
+ (parallel [(const_int 0)(const_int 1)(const_int 2)(const_int 3)]))))]
+ ""
+{
+ rtx mask = gen_reg_rtx (TImode);
+ unsigned char arr[16] = {
+ 0x80, 0x80, 0x00, 0x01, 0x80, 0x80, 0x02, 0x03,
+ 0x80, 0x80, 0x04, 0x05, 0x80, 0x80, 0x06, 0x07};
+
+ emit_move_insn (mask, array_to_constant (TImode, arr));
+ emit_insn (gen_shufb (operands[0], operands[1], operands[1], mask));
+
+ DONE;
+})
+
+(define_expand "vec_unpacku_lo_v8hi"
+ [(set (match_operand:V4SI 0 "spu_reg_operand" "=r")
+ (zero_extend:V4SI
+ (vec_select:V4HI
+ (match_operand:V8HI 1 "spu_reg_operand" "r")
+ (parallel [(const_int 4)(const_int 5)(const_int 6)(const_int 7)]))))]
+""
+{
+ rtx mask = gen_reg_rtx (TImode);
+ unsigned char arr[16] = {
+ 0x80, 0x80, 0x08, 0x09, 0x80, 0x80, 0x0A, 0x0B,
+ 0x80, 0x80, 0x0C, 0x0D, 0x80, 0x80, 0x0E, 0x0F};
+
+ emit_move_insn (mask, array_to_constant (TImode, arr));
+ emit_insn (gen_shufb (operands[0], operands[1], operands[1], mask));
+
+ DONE;
+})
+
+(define_expand "vec_unpacks_hi_v8hi"
+ [(set (match_operand:V4SI 0 "spu_reg_operand" "=r")
+ (sign_extend:V4SI
+ (vec_select:V4HI
+ (match_operand:V8HI 1 "spu_reg_operand" "r")
+ (parallel [(const_int 0)(const_int 1)(const_int 2)(const_int 3)]))))]
+ ""
+{
+ rtx tmp1 = gen_reg_rtx (V8HImode);
+ rtx tmp2 = gen_reg_rtx (V4SImode);
+ rtx mask = gen_reg_rtx (TImode);
+ unsigned char arr[16] = {
+ 0x80, 0x80, 0x00, 0x01, 0x80, 0x80, 0x02, 0x03,
+ 0x80, 0x80, 0x04, 0x05, 0x80, 0x80, 0x06, 0x07};
+
+ emit_move_insn (mask, array_to_constant (TImode, arr));
+ emit_insn (gen_shufb (tmp1, operands[1], operands[1], mask));
+ emit_insn (gen_spu_xshw (tmp2, tmp1));
+ emit_move_insn (operands[0], tmp2);
+
+ DONE;
+})
+
+(define_expand "vec_unpacks_lo_v8hi"
+ [(set (match_operand:V4SI 0 "spu_reg_operand" "=r")
+ (sign_extend:V4SI
+ (vec_select:V4HI
+ (match_operand:V8HI 1 "spu_reg_operand" "r")
+ (parallel [(const_int 4)(const_int 5)(const_int 6)(const_int 7)]))))]
+""
+{
+ rtx tmp1 = gen_reg_rtx (V8HImode);
+ rtx tmp2 = gen_reg_rtx (V4SImode);
+ rtx mask = gen_reg_rtx (TImode);
+ unsigned char arr[16] = {
+ 0x80, 0x80, 0x08, 0x09, 0x80, 0x80, 0x0A, 0x0B,
+ 0x80, 0x80, 0x0C, 0x0D, 0x80, 0x80, 0x0E, 0x0F};
+
+ emit_move_insn (mask, array_to_constant (TImode, arr));
+ emit_insn (gen_shufb (tmp1, operands[1], operands[1], mask));
+ emit_insn (gen_spu_xshw (tmp2, tmp1));
+ emit_move_insn (operands[0], tmp2);
+
+DONE;
+})
+
+(define_expand "vec_unpacku_hi_v16qi"
+ [(set (match_operand:V8HI 0 "spu_reg_operand" "=r")
+ (zero_extend:V8HI
+ (vec_select:V8QI
+ (match_operand:V16QI 1 "spu_reg_operand" "r")
+ (parallel [(const_int 0)(const_int 1)(const_int 2)(const_int 3)
+ (const_int 4)(const_int 5)(const_int 6)(const_int 7)]))))]
+ ""
+{
+ rtx mask = gen_reg_rtx (TImode);
+ unsigned char arr[16] = {
+ 0x80, 0x00, 0x80, 0x01, 0x80, 0x02, 0x80, 0x03,
+ 0x80, 0x04, 0x80, 0x05, 0x80, 0x06, 0x80, 0x07};
+
+ emit_move_insn (mask, array_to_constant (TImode, arr));
+ emit_insn (gen_shufb (operands[0], operands[1], operands[1], mask));
+
+ DONE;
+})
+
+(define_expand "vec_unpacku_lo_v16qi"
+ [(set (match_operand:V8HI 0 "spu_reg_operand" "=r")
+ (zero_extend:V8HI
+ (vec_select:V8QI
+ (match_operand:V16QI 1 "spu_reg_operand" "r")
+ (parallel [(const_int 8)(const_int 9)(const_int 10)(const_int 11)
+ (const_int 12)(const_int 13)(const_int 14)(const_int 15)]))))]
+""
+{
+ rtx mask = gen_reg_rtx (TImode);
+ unsigned char arr[16] = {
+ 0x80, 0x08, 0x80, 0x09, 0x80, 0x0A, 0x80, 0x0B,
+ 0x80, 0x0C, 0x80, 0x0D, 0x80, 0x0E, 0x80, 0x0F};
+
+ emit_move_insn (mask, array_to_constant (TImode, arr));
+ emit_insn (gen_shufb (operands[0], operands[1], operands[1], mask));
+
+ DONE;
+})
+
+(define_expand "vec_unpacks_hi_v16qi"
+ [(set (match_operand:V8HI 0 "spu_reg_operand" "=r")
+ (sign_extend:V8HI
+ (vec_select:V8QI
+ (match_operand:V16QI 1 "spu_reg_operand" "r")
+ (parallel [(const_int 0)(const_int 1)(const_int 2)(const_int 3)
+ (const_int 4)(const_int 5)(const_int 6)(const_int 7)]))))]
+""
+{
+ rtx tmp1 = gen_reg_rtx (V16QImode);
+ rtx tmp2 = gen_reg_rtx (V8HImode);
+ rtx mask = gen_reg_rtx (TImode);
+ unsigned char arr[16] = {
+ 0x80, 0x00, 0x80, 0x01, 0x80, 0x02, 0x80, 0x03,
+ 0x80, 0x04, 0x80, 0x05, 0x80, 0x06, 0x80, 0x07};
+
+ emit_move_insn (mask, array_to_constant (TImode, arr));
+ emit_insn (gen_shufb (tmp1, operands[1], operands[1], mask));
+ emit_insn (gen_spu_xsbh (tmp2, tmp1));
+ emit_move_insn (operands[0], tmp2);
+
+ DONE;
+})
+
+(define_expand "vec_unpacks_lo_v16qi"
+ [(set (match_operand:V8HI 0 "spu_reg_operand" "=r")
+ (sign_extend:V8HI
+ (vec_select:V8QI
+ (match_operand:V16QI 1 "spu_reg_operand" "r")
+ (parallel [(const_int 8)(const_int 9)(const_int 10)(const_int 11)
+ (const_int 12)(const_int 13)(const_int 14)(const_int 15)]))))]
+""
+{
+ rtx tmp1 = gen_reg_rtx (V16QImode);
+ rtx tmp2 = gen_reg_rtx (V8HImode);
+ rtx mask = gen_reg_rtx (TImode);
+ unsigned char arr[16] = {
+ 0x80, 0x08, 0x80, 0x09, 0x80, 0x0A, 0x80, 0x0B,
+ 0x80, 0x0C, 0x80, 0x0D, 0x80, 0x0E, 0x80, 0x0F};
+
+ emit_move_insn (mask, array_to_constant (TImode, arr));
+ emit_insn (gen_shufb (tmp1, operands[1], operands[1], mask));
+ emit_insn (gen_spu_xsbh (tmp2, tmp1));
+ emit_move_insn (operands[0], tmp2);
+
+DONE;
+})
+
+
+
+
diff --git a/gcc/configure b/gcc/configure
index c50aa142d2e..ca41b081427 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -788,6 +788,7 @@ build_install_headers_dir
build_xm_file_list
build_xm_include_list
build_xm_defines
+build_file_translate
check_languages
cpp_install_dir
xmake_file
@@ -18074,6 +18075,7 @@ fi
+
# Echo link setup.
if test x${build} = x${host} ; then
if test x${host} = x${target} ; then
@@ -18959,6 +18961,7 @@ build_install_headers_dir!$build_install_headers_dir$ac_delim
build_xm_file_list!$build_xm_file_list$ac_delim
build_xm_include_list!$build_xm_include_list$ac_delim
build_xm_defines!$build_xm_defines$ac_delim
+build_file_translate!$build_file_translate$ac_delim
check_languages!$check_languages$ac_delim
cpp_install_dir!$cpp_install_dir$ac_delim
xmake_file!$xmake_file$ac_delim
@@ -18974,7 +18977,6 @@ gcc_config_arguments!$gcc_config_arguments$ac_delim
gcc_gxx_include_dir!$gcc_gxx_include_dir$ac_delim
host_exeext!$host_exeext$ac_delim
host_xm_file_list!$host_xm_file_list$ac_delim
-host_xm_include_list!$host_xm_include_list$ac_delim
_ACEOF
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
@@ -19016,6 +19018,7 @@ _ACEOF
ac_delim='%!_!# '
for ac_last_try in false false false false false :; do
cat >conf$$subs.sed <<_ACEOF
+host_xm_include_list!$host_xm_include_list$ac_delim
host_xm_defines!$host_xm_defines$ac_delim
out_host_hook_obj!$out_host_hook_obj$ac_delim
install!$install$ac_delim
@@ -19045,7 +19048,7 @@ LIBOBJS!$LIBOBJS$ac_delim
LTLIBOBJS!$LTLIBOBJS$ac_delim
_ACEOF
- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 27; then
+ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 28; then
break
elif $ac_last_try; then
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 6f016fcfce5..aa4bf07f4ea 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,84 @@
+2008-02-26 Paolo Carlini <pcarlini@suse.de>
+
+ PR c++/35323
+ * name-lookup.c (arg_assoc_type): Handle FIXED_POINT_TYPE.
+
+2008-02-26 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
+
+ * typeck.c (build_class_member_access_expr): Add appropriate
+ OPT_W* parameter to warning.
+ (build_reinterpret_cast_1): Likewise.
+ * name-lookup.c (push_overloaded_decl): Likewise.
+
+2008-02-25 Paolo Carlini <pcarlini@suse.de>
+
+ PR c++/35333
+ * error.c (dump_expr): Handle CONJ_EXPR.
+
+2008-02-25 Paolo Carlini <pcarlini@suse.de>
+
+ PR c++/35338
+ * error.c (dump_type): Handle FIXED_POINT_TYPE.
+ (dump_expr): Handle FIXED_CST.
+
+2008-02-24 Jason Merrill <jason@redhat.com>
+
+ * parser.c (cp_parser_declaration): Handle "inline namespace".
+ (cp_parser_namespace_definition): Likewise.
+
+ PR c++/33486
+ * name-lookup.c (arg_assoc_namespace): Look down into inline
+ namespaces, too.
+
+2008-02-23 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
+
+ * typeck.c (check_for_casting_away_constness): Use 1 single
+ argument, the type of cast, to decide what diagnostics generate.
+ (build_static_cast_1): Remove unused code. Update call to
+ check_for_casting_away_constness.
+ (build_reinterpret_cast_1): Update call to
+ check_for_casting_away_constness.
+ (build_const_cast_1): Likewise.
+
+2008-02-24 Paolo Carlini <pcarlini@suse.de>
+
+ * error.c (dump_expr): Don't deal directly with NEW_EXPR (and
+ VEC_NEW_EXPR), forward to pp_expression.
+ * cxx-pretty-print.c (pp_cxx_new_expression): Fix FIXME.
+
+2008-02-24 Danny Smith <dannysmith@users.sourceforge.net>
+
+ PR c++/34749
+ * friend.c (do_friend): Call cplus_decl_attributes earlier.
+
+2008-02-22 Andrew Pinski <andrew_pinski@playstation.sony.com>
+
+ PR C++/34715
+ * decl.c (duplicate_decls): Merge DECL_DISREGARD_INLINE_LIMITS for
+ template decls' function decl.
+
+2008-02-22 Paolo Carlini <pcarlini@suse.de>
+
+ PR c++/35282
+ Revert:
+ 2008-02-14 Paolo Carlini <pcarlini@suse.de>
+
+ PR c++/28743
+ * pt.c (determine_specialization): In case of function templates,
+ when the type of DECL does not match FN there is no match.
+
+2008-02-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ PR c/19999
+ * typeck.c (build_binary_op): Warn about floating point
+ comparisons if FLOAT_TYPE_P, not only for REAL_TYPE.
+
+2008-02-19 Jason Merrill <jason@redhat.com>
+
+ PR c++/34950
+ * pt.c (resolve_overloaded_unification): Set processing_template_decl
+ while we look for possible bindings.
+
2008-02-19 Jakub Jelinek <jakub@redhat.com>
PR c++/35028
diff --git a/gcc/cp/cxx-pretty-print.c b/gcc/cp/cxx-pretty-print.c
index 9c5a85ff0b4..62ff1fc3fc3 100644
--- a/gcc/cp/cxx-pretty-print.c
+++ b/gcc/cp/cxx-pretty-print.c
@@ -1,5 +1,5 @@
/* Implementation of subroutines for the GNU C++ pretty-printer.
- Copyright (C) 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
Contributed by Gabriel Dos Reis <gdr@integrable-solutions.net>
This file is part of GCC.
@@ -636,6 +636,8 @@ static void
pp_cxx_new_expression (cxx_pretty_printer *pp, tree t)
{
enum tree_code code = TREE_CODE (t);
+ tree type = TREE_OPERAND (t, 1);
+ tree init = TREE_OPERAND (t, 2);
switch (code)
{
case NEW_EXPR:
@@ -648,18 +650,22 @@ pp_cxx_new_expression (cxx_pretty_printer *pp, tree t)
pp_cxx_call_argument_list (pp, TREE_OPERAND (t, 0));
pp_space (pp);
}
- /* FIXME: array-types are built with one more element. */
- pp_cxx_type_id (pp, TREE_OPERAND (t, 1));
- if (TREE_OPERAND (t, 2))
+ if (TREE_CODE (type) == ARRAY_REF)
+ type = build_cplus_array_type
+ (TREE_OPERAND (type, 0),
+ build_index_type (fold_build2 (MINUS_EXPR, integer_type_node,
+ TREE_OPERAND (type, 1),
+ integer_one_node)));
+ pp_cxx_type_id (pp, type);
+ if (init)
{
pp_left_paren (pp);
- t = TREE_OPERAND (t, 2);
- if (TREE_CODE (t) == TREE_LIST)
- pp_c_expression_list (pp_c_base (pp), t);
- else if (t == void_zero_node)
+ if (TREE_CODE (init) == TREE_LIST)
+ pp_c_expression_list (pp_c_base (pp), init);
+ else if (init == void_zero_node)
; /* OK, empty initializer list. */
else
- pp_cxx_expression (pp, t);
+ pp_cxx_expression (pp, init);
pp_right_paren (pp);
}
break;
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 72949301370..82c55e0ec63 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -1675,6 +1675,9 @@ duplicate_decls (tree newdecl, tree olddecl, bool newdecl_is_friend)
= DECL_INTERFACE_KNOWN (new_result);
DECL_DECLARED_INLINE_P (old_result)
= DECL_DECLARED_INLINE_P (new_result);
+ DECL_DISREGARD_INLINE_LIMITS (old_result)
+ |= DECL_DISREGARD_INLINE_LIMITS (new_result);
+
}
else
{
@@ -1682,6 +1685,8 @@ duplicate_decls (tree newdecl, tree olddecl, bool newdecl_is_friend)
|= DECL_INLINE (new_result);
DECL_DECLARED_INLINE_P (old_result)
|= DECL_DECLARED_INLINE_P (new_result);
+ DECL_DISREGARD_INLINE_LIMITS (old_result)
+ |= DECL_DISREGARD_INLINE_LIMITS (new_result);
check_redeclaration_exception_specification (newdecl, olddecl);
}
}
diff --git a/gcc/cp/error.c b/gcc/cp/error.c
index b81120af5fa..94e43c05f9c 100644
--- a/gcc/cp/error.c
+++ b/gcc/cp/error.c
@@ -326,6 +326,7 @@ dump_type (tree t, int flags)
case BOOLEAN_TYPE:
case COMPLEX_TYPE:
case VECTOR_TYPE:
+ case FIXED_POINT_TYPE:
pp_type_specifier_seq (cxx_pp, t);
break;
@@ -1583,43 +1584,6 @@ dump_expr (tree t, int flags)
}
break;
- case NEW_EXPR:
- {
- tree type = TREE_OPERAND (t, 1);
- tree init = TREE_OPERAND (t, 2);
- if (NEW_EXPR_USE_GLOBAL (t))
- pp_cxx_colon_colon (cxx_pp);
- pp_cxx_identifier (cxx_pp, "new");
- if (TREE_OPERAND (t, 0))
- {
- pp_cxx_left_paren (cxx_pp);
- dump_expr_list (TREE_OPERAND (t, 0), flags);
- pp_cxx_right_paren (cxx_pp);
- pp_cxx_whitespace (cxx_pp);
- }
- if (TREE_CODE (type) == ARRAY_REF)
- type = build_cplus_array_type
- (TREE_OPERAND (type, 0),
- build_index_type (fold_build2 (MINUS_EXPR, integer_type_node,
- TREE_OPERAND (type, 1),
- integer_one_node)));
- dump_type (type, flags);
- if (init)
- {
- pp_cxx_left_paren (cxx_pp);
- if (TREE_CODE (init) == TREE_LIST)
- dump_expr_list (init, flags);
- else if (init == void_zero_node)
- /* This representation indicates an empty initializer,
- e.g.: "new int()". */
- ;
- else
- dump_expr (init, flags);
- pp_cxx_right_paren (cxx_pp);
- }
- }
- break;
-
case TARGET_EXPR:
/* Note that this only works for G++ target exprs. If somebody
builds a general TARGET_EXPR, there's no way to represent that
@@ -2075,11 +2039,15 @@ dump_expr (tree t, int flags)
case TYPEID_EXPR:
case MEMBER_REF:
case DOTSTAR_EXPR:
+ case NEW_EXPR:
+ case VEC_NEW_EXPR:
case DELETE_EXPR:
case VEC_DELETE_EXPR:
case MODOP_EXPR:
case ABS_EXPR:
+ case CONJ_EXPR:
case VECTOR_CST:
+ case FIXED_CST:
pp_expression (cxx_pp, t);
break;
diff --git a/gcc/cp/friend.c b/gcc/cp/friend.c
index ffb0baaa600..c4dfcc58798 100644
--- a/gcc/cp/friend.c
+++ b/gcc/cp/friend.c
@@ -413,6 +413,13 @@ do_friend (tree ctype, tree declarator, tree decl,
/* Every decl that gets here is a friend of something. */
DECL_FRIEND_P (decl) = 1;
+ /* Unfortunately, we have to handle attributes here. Normally we would
+ handle them in start_decl_1, but since this is a friend decl start_decl_1
+ never gets to see it. */
+
+ /* Set attributes here so if duplicate decl, will have proper attributes. */
+ cplus_decl_attributes (&decl, attrlist, 0);
+
if (TREE_CODE (declarator) == TEMPLATE_ID_EXPR)
{
declarator = TREE_OPERAND (declarator, 0);
@@ -582,12 +589,5 @@ do_friend (tree ctype, tree declarator, tree decl,
DECL_FRIEND_P (decl) = 1;
}
- /* Unfortunately, we have to handle attributes here. Normally we would
- handle them in start_decl_1, but since this is a friend decl start_decl_1
- never gets to see it. */
-
- /* Set attributes here so if duplicate decl, will have proper attributes. */
- cplus_decl_attributes (&decl, attrlist, 0);
-
return decl;
}
diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c
index ded1d2ec421..9a95d150eec 100644
--- a/gcc/cp/name-lookup.c
+++ b/gcc/cp/name-lookup.c
@@ -1,5 +1,5 @@
/* Definitions for C++ name lookup routines.
- Copyright (C) 2003, 2004, 2005, 2006, 2007
+ Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Gabriel Dos Reis <gdr@integrable-solutions.net>
@@ -1919,7 +1919,7 @@ push_overloaded_decl (tree decl, int flags, bool is_friend)
if (IS_AGGR_TYPE (t) && warn_shadow
&& (! DECL_IN_SYSTEM_HEADER (decl)
|| ! DECL_IN_SYSTEM_HEADER (old)))
- warning (0, "%q#D hides constructor for %q#T", decl, t);
+ warning (OPT_Wshadow, "%q#D hides constructor for %q#T", decl, t);
old = NULL_TREE;
}
else if (is_overloaded_fn (old))
@@ -4419,6 +4419,13 @@ arg_assoc_namespace (struct arg_lookup *k, tree scope)
if (arg_assoc_namespace (k, TREE_PURPOSE (value)))
return true;
+ /* Also look down into inline namespaces. */
+ for (value = DECL_NAMESPACE_USING (scope); value;
+ value = TREE_CHAIN (value))
+ if (is_associated_namespace (scope, TREE_PURPOSE (value)))
+ if (arg_assoc_namespace (k, TREE_PURPOSE (value)))
+ return true;
+
value = namespace_binding (k->name, scope);
if (!value)
return false;
@@ -4594,6 +4601,7 @@ arg_assoc_type (struct arg_lookup *k, tree type)
case COMPLEX_TYPE:
case VECTOR_TYPE:
case BOOLEAN_TYPE:
+ case FIXED_POINT_TYPE:
return false;
case RECORD_TYPE:
if (TYPE_PTRMEMFUNC_P (type))
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index a5bd05519b4..cb0059392a7 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -7737,6 +7737,10 @@ cp_parser_declaration (cp_parser* parser)
|| token2.type == CPP_OPEN_BRACE
|| token2.keyword == RID_ATTRIBUTE))
cp_parser_namespace_definition (parser);
+ /* An inline (associated) namespace definition. */
+ else if (token1.keyword == RID_INLINE
+ && token2.keyword == RID_NAMESPACE)
+ cp_parser_namespace_definition (parser);
/* Objective-C++ declaration/definition. */
else if (c_dialect_objc () && OBJC_IS_AT_KEYWORD (token1.keyword))
cp_parser_objc_declaration (parser);
@@ -11562,6 +11566,15 @@ cp_parser_namespace_definition (cp_parser* parser)
{
tree identifier, attribs;
bool has_visibility;
+ bool is_inline;
+
+ if (cp_lexer_next_token_is_keyword (parser->lexer, RID_INLINE))
+ {
+ is_inline = true;
+ cp_lexer_consume_token (parser->lexer);
+ }
+ else
+ is_inline = false;
/* Look for the `namespace' keyword. */
cp_parser_require_keyword (parser, RID_NAMESPACE, "`namespace'");
@@ -11583,6 +11596,21 @@ cp_parser_namespace_definition (cp_parser* parser)
/* Start the namespace. */
push_namespace (identifier);
+ /* "inline namespace" is equivalent to a stub namespace definition
+ followed by a strong using directive. */
+ if (is_inline)
+ {
+ tree namespace = current_namespace;
+ /* Set up namespace association. */
+ DECL_NAMESPACE_ASSOCIATIONS (namespace)
+ = tree_cons (CP_DECL_CONTEXT (namespace), NULL_TREE,
+ DECL_NAMESPACE_ASSOCIATIONS (namespace));
+ /* Import the contents of the inline namespace. */
+ pop_namespace ();
+ do_using_directive (namespace);
+ push_namespace (identifier);
+ }
+
has_visibility = handle_namespace_attrs (current_namespace, attribs);
/* Parse the body of the namespace. */
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 5931126e860..2a54986c551 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -1563,9 +1563,12 @@ determine_specialization (tree template_id,
no partial specializations of functions. Therefore, if
the type of DECL does not match FN, there is no
match. */
- if (tsk == tsk_template
- && !compparms (fn_arg_types, decl_arg_types))
- continue;
+ if (tsk == tsk_template)
+ {
+ if (compparms (fn_arg_types, decl_arg_types))
+ candidates = tree_cons (NULL_TREE, fn, candidates);
+ continue;
+ }
/* See whether this function might be a specialization of this
template. */
@@ -12137,6 +12140,7 @@ resolve_overloaded_unification (tree tparms,
if (TREE_CODE (fn) != TEMPLATE_DECL)
continue;
+ ++processing_template_decl;
subargs = get_bindings (fn, DECL_TEMPLATE_RESULT (fn),
expl_subargs, /*check_ret=*/false);
if (subargs)
@@ -12145,6 +12149,7 @@ resolve_overloaded_unification (tree tparms,
good += try_one_overload (tparms, targs, tempargs, parm,
elem, strict, sub_strict, addr_p);
}
+ --processing_template_decl;
}
}
else if (TREE_CODE (arg) != OVERLOAD
diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c
index 9764ed369a2..bb8d71cbbfc 100644
--- a/gcc/cp/typeck.c
+++ b/gcc/cp/typeck.c
@@ -1934,9 +1934,11 @@ build_class_member_access_expr (tree object, tree member,
&& !DECL_FIELD_IS_BASE (member)
&& !skip_evaluation)
{
- warning (0, "invalid access to non-static data member %qD of NULL object",
- member);
- warning (0, "(perhaps the %<offsetof%> macro was used incorrectly)");
+ warning (OPT_Winvalid_offsetof,
+ "invalid access to non-static data member %qD "
+ " of NULL object", member);
+ warning (OPT_Winvalid_offsetof,
+ "(perhaps the %<offsetof%> macro was used incorrectly)");
}
/* If MEMBER is from an anonymous aggregate, we have converted
@@ -3359,7 +3361,7 @@ build_binary_op (enum tree_code code, tree orig_op0, tree orig_op1,
case EQ_EXPR:
case NE_EXPR:
- if (code0 == REAL_TYPE || code1 == REAL_TYPE)
+ if (FLOAT_TYPE_P (type0) || FLOAT_TYPE_P (type1))
warning (OPT_Wfloat_equal,
"comparing floating point with == or != is unsafe");
if ((TREE_CODE (orig_op0) == STRING_CST && !integer_zerop (op1))
@@ -4842,18 +4844,38 @@ build_compound_expr (tree lhs, tree rhs)
}
/* Issue a diagnostic message if casting from SRC_TYPE to DEST_TYPE
- casts away constness. DIAG_FN gives the function to call if we
- need to issue a diagnostic; if it is NULL, no diagnostic will be
- issued. DESCRIPTION explains what operation is taking place. */
+ casts away constness. CAST gives the type of cast. */
static void
check_for_casting_away_constness (tree src_type, tree dest_type,
- void (*diag_fn)(const char *, ...) ATTRIBUTE_GCC_CXXDIAG(1,2),
- const char *description)
+ enum tree_code cast)
{
- if (diag_fn && casts_away_constness (src_type, dest_type))
- diag_fn ("%s from type %qT to type %qT casts away constness",
- description, src_type, dest_type);
+ /* C-style casts are allowed to cast away constness. With
+ WARN_CAST_QUAL, we still want to issue a warning. */
+ if (cast == CAST_EXPR && !warn_cast_qual)
+ return;
+
+ if (casts_away_constness (src_type, dest_type))
+ switch (cast)
+ {
+ case CAST_EXPR:
+ warning (OPT_Wcast_qual,
+ "cast from type %qT to type %qT casts away constness",
+ src_type, dest_type);
+ return;
+
+ case STATIC_CAST_EXPR:
+ error ("static_cast from type %qT to type %qT casts away constness",
+ src_type, dest_type);
+ return;
+
+ case REINTERPRET_CAST_EXPR:
+ error ("reinterpret_cast from type %qT to type %qT casts away constness",
+ src_type, dest_type);
+ return;
+ default:
+ gcc_unreachable();
+ }
}
/* Convert EXPR (an expression with pointer-to-member type) to TYPE
@@ -4939,8 +4961,6 @@ build_static_cast_1 (tree type, tree expr, bool c_cast_p,
tree intype;
tree result;
tree orig;
- void (*diag_fn)(const char*, ...) ATTRIBUTE_GCC_CXXDIAG(1,2);
- const char *desc;
/* Assume the cast is valid. */
*valid_p = true;
@@ -4950,21 +4970,6 @@ build_static_cast_1 (tree type, tree expr, bool c_cast_p,
/* Save casted types in the function's used types hash table. */
used_types_insert (type);
- /* Determine what to do when casting away constness. */
- if (c_cast_p)
- {
- /* C-style casts are allowed to cast away constness. With
- WARN_CAST_QUAL, we still want to issue a warning. */
- diag_fn = warn_cast_qual ? warning0 : NULL;
- desc = "cast";
- }
- else
- {
- /* A static_cast may not cast away constness. */
- diag_fn = error;
- desc = "static_cast";
- }
-
/* [expr.static.cast]
An lvalue of type "cv1 B", where B is a class type, can be cast
@@ -5089,7 +5094,7 @@ build_static_cast_1 (tree type, tree expr, bool c_cast_p,
tree base;
if (!c_cast_p)
- check_for_casting_away_constness (intype, type, diag_fn, desc);
+ check_for_casting_away_constness (intype, type, STATIC_CAST_EXPR);
base = lookup_base (TREE_TYPE (type), TREE_TYPE (intype),
c_cast_p ? ba_unique : ba_check,
NULL);
@@ -5124,8 +5129,7 @@ build_static_cast_1 (tree type, tree expr, bool c_cast_p,
if (can_convert (t1, t2) || can_convert (t2, t1))
{
if (!c_cast_p)
- check_for_casting_away_constness (intype, type, diag_fn,
- desc);
+ check_for_casting_away_constness (intype, type, STATIC_CAST_EXPR);
return convert_ptrmem (type, expr, /*allow_inverse_p=*/1,
c_cast_p);
}
@@ -5142,7 +5146,7 @@ build_static_cast_1 (tree type, tree expr, bool c_cast_p,
&& TYPE_PTROB_P (type))
{
if (!c_cast_p)
- check_for_casting_away_constness (intype, type, diag_fn, desc);
+ check_for_casting_away_constness (intype, type, STATIC_CAST_EXPR);
return build_nop (type, expr);
}
@@ -5327,8 +5331,7 @@ build_reinterpret_cast_1 (tree type, tree expr, bool c_cast_p,
tree sexpr = expr;
if (!c_cast_p)
- check_for_casting_away_constness (intype, type, error,
- "reinterpret_cast");
+ check_for_casting_away_constness (intype, type, REINTERPRET_CAST_EXPR);
/* Warn about possible alignment problems. */
if (STRICT_ALIGNMENT && warn_cast_align
&& !VOID_TYPE_P (type)
@@ -5336,9 +5339,8 @@ build_reinterpret_cast_1 (tree type, tree expr, bool c_cast_p,
&& COMPLETE_TYPE_P (TREE_TYPE (type))
&& COMPLETE_TYPE_P (TREE_TYPE (intype))
&& TYPE_ALIGN (TREE_TYPE (type)) > TYPE_ALIGN (TREE_TYPE (intype)))
- warning (0, "cast from %qT to %qT increases required alignment of "
- "target type",
- intype, type);
+ warning (OPT_Wcast_align, "cast from %qT to %qT "
+ "increases required alignment of target type", intype, type);
/* We need to strip nops here, because the front end likes to
create (int *)&a for array-to-pointer decay, instead of &a[0]. */
@@ -5483,10 +5485,7 @@ build_const_cast_1 (tree dst_type, tree expr, bool complain,
*valid_p = true;
/* This cast is actually a C-style cast. Issue a warning if
the user is making a potentially unsafe cast. */
- if (warn_cast_qual)
- check_for_casting_away_constness (src_type, dst_type,
- warning0,
- "cast");
+ check_for_casting_away_constness (src_type, dst_type, CAST_EXPR);
}
if (reference_type)
{
diff --git a/gcc/cse.c b/gcc/cse.c
index f6660e4ff12..9f31e670966 100644
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -4753,6 +4753,23 @@ cse_insn (rtx insn, rtx libcall_insn)
src_elt_cost = MAX_COST;
}
+ /* Avoid creation of overlapping memory moves. */
+ if (MEM_P (trial) && MEM_P (SET_DEST (sets[i].rtl)))
+ {
+ rtx src, dest;
+
+ /* BLKmode moves are not handled by cse anyway. */
+ if (GET_MODE (trial) == BLKmode)
+ break;
+
+ src = canon_rtx (trial);
+ dest = canon_rtx (SET_DEST (sets[i].rtl));
+
+ if (!MEM_P (src) || !MEM_P (dest)
+ || !nonoverlapping_memrefs_p (src, dest))
+ break;
+ }
+
/* We don't normally have an insn matching (set (pc) (pc)), so
check for this separately here. We will delete such an
insn below.
diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi
index 8411f4427ae..9569f9b2157 100644
--- a/gcc/doc/install.texi
+++ b/gcc/doc/install.texi
@@ -1762,33 +1762,35 @@ same described above, but object files from the stage1 and
stage2 of the 3-stage bootstrap of the compiler are deleted as
soon as they are no longer needed.
-If you want to save additional space during the bootstrap and in
-the final installation as well, you can build the compiler binaries
-without debugging information as in the following example. This will save
-roughly 40% of disk space both for the bootstrap and the final installation.
-(Libraries will still contain debugging information.)
+If you wish to use non-default GCC flags when compiling the stage2
+and stage3 compilers, set @code{BOOT_CFLAGS} on the command line when
+doing @samp{make}. For example, if you want to save additional space
+during the bootstrap and in the final installation as well, you can
+build the compiler binaries without debugging information as in the
+following example. This will save roughly 40% of disk space both for
+the bootstrap and the final installation. (Libraries will still contain
+debugging information.)
@smallexample
- make CFLAGS='-O' LIBCFLAGS='-g -O2' \
- LIBCXXFLAGS='-g -O2 -fno-implicit-templates' bootstrap
+ make BOOT_CFLAGS='-O' bootstrap
@end smallexample
-If you wish to use non-default GCC flags when compiling the stage2 and
-stage3 compilers, set @code{BOOT_CFLAGS} on the command line when doing
-@samp{make}. Non-default optimization flags are less well
-tested here than the default of @samp{-g -O2}, but should still work.
-In a few cases, you may find that you need to specify special flags such
-as @option{-msoft-float} here to complete the bootstrap; or, if the
-native compiler miscompiles the stage1 compiler, you may need to work
-around this, by choosing @code{BOOT_CFLAGS} to avoid the parts of the
-stage1 compiler that were miscompiled, or by using @samp{make
+You can place non-default optimization flags into @code{BOOT_CFLAGS}; they
+are less well tested here than the default of @samp{-g -O2}, but should
+still work. In a few cases, you may find that you need to specify special
+flags such as @option{-msoft-float} here to complete the bootstrap; or,
+if the native compiler miscompiles the stage1 compiler, you may need
+to work around this, by choosing @code{BOOT_CFLAGS} to avoid the parts
+of the stage1 compiler that were miscompiled, or by using @samp{make
bootstrap4} to increase the number of stages of bootstrap.
-Note that using non-standard @code{CFLAGS} can cause bootstrap to fail
-if these trigger a warning with the new compiler. For example using
-@samp{-O2 -g -mcpu=i686} on @code{i686-pc-linux-gnu} will cause bootstrap
-failure as @option{-mcpu=} is deprecated in 3.4.0 and above.
-
+@code{BOOT_CFLAGS} does not apply to bootstrapped target libraries.
+Since these are always compiled with the compiler currently being
+bootstrapped, you can use @code{CFLAGS_FOR_TARGET} to modify their
+compilation flags, as for non-bootstrapped target libraries.
+Again, if the native compiler miscompiles the stage1 compiler, you may
+need to work around this by avoiding non-working parts of the stage1
+compiler. Use @code{STAGE1_LIBCFLAGS} to this end.
If you used the flag @option{--enable-languages=@dots{}} to restrict
the compilers to be built, only those you've actually enabled will be
@@ -2679,8 +2681,8 @@ cross-compilers on the Alpha for 32-bit machines has only been tested in
a few cases and may not work properly.
@samp{make compare} may fail on old versions of DEC Unix unless you add
-@option{-save-temps} to @code{CFLAGS}. On these systems, the name of the
-assembler input file is stored in the object file, and that makes
+@option{-save-temps} to @code{BOOT_CFLAGS}. On these systems, the name
+of the assembler input file is stored in the object file, and that makes
comparison fail if it differs between the @code{stage1} and
@code{stage2} compilations. The option @option{-save-temps} forces a
fixed name to be used for the assembler input file, instead of a
diff --git a/gcc/doc/install.texi2html b/gcc/doc/install.texi2html
index 60d670b4785..c5452661187 100755
--- a/gcc/doc/install.texi2html
+++ b/gcc/doc/install.texi2html
@@ -5,7 +5,7 @@
# $SOURCEDIR and $DESTDIR, resp., refer to the directory containing
# the texinfo source and the directory to put the HTML version in.
#
-# (C) 2001, 2003, 2006 Free Software Foundation
+# (C) 2001, 2003, 2006, 2008 Free Software Foundation
# Originally by Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>, June 2001.
#
# This script is Free Software, and it can be copied, distributed and
@@ -40,7 +40,7 @@ for x in index.html specific.html prerequisites.html download.html configure.htm
do
define=`echo $x | sed -e 's/\.//g'`
echo "define = $define"
- $MAKEINFO -I $SOURCEDIR -I $SOURCEDIR/include $SOURCEDIR/install.texi --html --no-split -D$define -o$DESTDIR/$x
+ $MAKEINFO --no-number-sections -I $SOURCEDIR -I $SOURCEDIR/include $SOURCEDIR/install.texi --html --no-split -D$define -o$DESTDIR/$x
done
rm $SOURCEDIR/include/gcc-vers.texi
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 1cb14ea11dc..693f30de694 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -236,7 +236,8 @@ Objective-C and Objective-C++ Dialects}.
-Werror -Werror=* @gol
-Wfatal-errors -Wfloat-equal -Wformat -Wformat=2 @gol
-Wno-format-extra-args -Wformat-nonliteral @gol
--Wformat-security -Wformat-y2k -Wignored-qualifiers @gol
+-Wformat-security -Wformat-y2k @gol
+-Wframe-larger-than=@var{len} -Wignored-qualifiers @gol
-Wimplicit -Wimplicit-function-declaration -Wimplicit-int @gol
-Wimport -Wno-import -Winit-self -Winline @gol
-Wno-int-to-pointer-cast -Wno-invalid-offsetof @gol
@@ -320,7 +321,8 @@ Objective-C and Objective-C++ Dialects}.
-fauto-inc-dec -fbranch-probabilities -fbranch-target-load-optimize @gol
-fbranch-target-load-optimize2 -fbtr-bb-exclusive -fcaller-saves @gol
-fcheck-data-deps -fcprop-registers -fcrossjumping -fcse-follow-jumps @gol
--fcse-skip-blocks -fcx-limited-range -fdata-sections -fdce -fdce @gol
+-fcse-skip-blocks -fcx-fortran-rules -fcx-limited-range @gol
+-fdata-sections -fdce -fdce @gol
-fdelayed-branch -fdelete-null-pointer-checks -fdse -fdse @gol
-fearly-inlining -fexpensive-optimizations -ffast-math @gol
-ffinite-math-only -ffloat-store -fforward-propagate @gol
@@ -3518,6 +3520,10 @@ global variable or whenever a built-in function is shadowed.
@opindex Wlarger-than-@var{len}
Warn whenever an object of larger than @var{len} bytes is defined.
+@item -Wframe-larger-than=@var{len}
+@opindex Wframe-larger-than
+Warn whenever the size of a function frame is larger than @var{len} bytes.
+
@item -Wunsafe-loop-optimizations
@opindex Wunsafe-loop-optimizations
@opindex Wno-unsafe-loop-optimizations
@@ -6541,13 +6547,25 @@ implicitly converting it to double precision constant.
@item -fcx-limited-range
@opindex fcx-limited-range
When enabled, this option states that a range reduction step is not
-needed when performing complex division. The default is
-@option{-fno-cx-limited-range}, but is enabled by @option{-ffast-math}.
+needed when performing complex division. Also, there is no checking
+whether the result of a complex multiplication or division is @code{NaN
++ I*NaN}, with an attempt to rescue the situation in that case. The
+default is @option{-fno-cx-limited-range}, but is enabled by
+@option{-ffast-math}.
This option controls the default setting of the ISO C99
@code{CX_LIMITED_RANGE} pragma. Nevertheless, the option applies to
all languages.
+@item -fcx-fortran-rules
+@opindex fcx-fortran-rules
+Complex multiplication and division follow Fortran rules. Range
+reduction is done as part of complex division, but there is no checking
+whether the result of a complex multiplication or division is @code{NaN
++ I*NaN}, with an attempt to rescue the situation in that case.
+
+The default is @option{-fno-cx-fortran-rules}.
+
@end table
The following options control optimizations that may improve
diff --git a/gcc/explow.c b/gcc/explow.c
index a5ed65b2e56..612fb1bb5db 100644
--- a/gcc/explow.c
+++ b/gcc/explow.c
@@ -489,6 +489,7 @@ memory_address (enum machine_mode mode, rtx x)
done:
+ gcc_assert (memory_address_p (mode, x));
/* If we didn't change the address, we are done. Otherwise, mark
a reg as a pointer if we have REG or REG + CONST_INT. */
if (oldx == x)
diff --git a/gcc/expmed.c b/gcc/expmed.c
index 09a58dedba2..04071d375ed 100644
--- a/gcc/expmed.c
+++ b/gcc/expmed.c
@@ -1339,18 +1339,15 @@ extract_bit_field_1 (rtx str_rtx, unsigned HOST_WIDE_INT bitsize,
|| (offset * BITS_PER_UNIT % bitsize == 0
&& MEM_ALIGN (op0) % bitsize == 0)))))
{
- if (mode1 != GET_MODE (op0))
+ if (MEM_P (op0))
+ op0 = adjust_address (op0, mode1, offset);
+ else if (mode1 != GET_MODE (op0))
{
- if (MEM_P (op0))
- op0 = adjust_address (op0, mode1, offset);
- else
- {
- rtx sub = simplify_gen_subreg (mode1, op0, GET_MODE (op0),
- byte_offset);
- if (sub == NULL)
- goto no_subreg_mode_swap;
- op0 = sub;
- }
+ rtx sub = simplify_gen_subreg (mode1, op0, GET_MODE (op0),
+ byte_offset);
+ if (sub == NULL)
+ goto no_subreg_mode_swap;
+ op0 = sub;
}
if (mode1 != mode)
return convert_to_mode (tmode, op0, unsignedp);
diff --git a/gcc/expr.c b/gcc/expr.c
index ade0396f817..36741918fb3 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -8049,6 +8049,7 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode,
}
return expand_call (exp, target, ignore);
+ case PAREN_EXPR:
case NON_LVALUE_EXPR:
case NOP_EXPR:
case CONVERT_EXPR:
diff --git a/gcc/final.c b/gcc/final.c
index 12891c2d50d..8d1cebead41 100644
--- a/gcc/final.c
+++ b/gcc/final.c
@@ -1524,6 +1524,15 @@ final_start_function (rtx first ATTRIBUTE_UNUSED, FILE *file,
TREE_ASM_WRITTEN (DECL_INITIAL (current_function_decl)) = 1;
}
+ if (warn_frame_larger_than
+ && get_frame_size () > frame_larger_than_size)
+ {
+ /* Issue a warning */
+ warning (OPT_Wframe_larger_than_,
+ "the frame size of %wd bytes is larger than %wd bytes",
+ get_frame_size (), frame_larger_than_size);
+ }
+
/* First output the function prologue: code to set up the stack frame. */
targetm.asm_out.function_prologue (file, get_frame_size ());
diff --git a/gcc/flags.h b/gcc/flags.h
index e3174732995..e2041500c14 100644
--- a/gcc/flags.h
+++ b/gcc/flags.h
@@ -137,6 +137,12 @@ extern void set_Wstrict_aliasing (int onoff);
extern bool warn_larger_than;
extern HOST_WIDE_INT larger_than_size;
+/* Nonzero means warn about any function whose frame size is larger
+ than N bytes. */
+
+extern bool warn_frame_larger_than;
+extern HOST_WIDE_INT frame_larger_than_size;
+
/* Temporarily suppress certain warnings.
This is set while reading code from a system header file. */
diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index a33b2b07a46..1ecd2255e4a 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -134,7 +134,6 @@ static tree extract_muldiv_1 (tree, tree, enum tree_code, tree, bool *);
static tree fold_binary_op_with_conditional_arg (enum tree_code, tree,
tree, tree,
tree, tree, int);
-static bool fold_real_zero_addition_p (const_tree, const_tree, int);
static tree fold_mathfn_compare (enum built_in_function, enum tree_code,
tree, tree, tree);
static tree fold_inf_compare (enum tree_code, tree, tree, tree);
@@ -1492,7 +1491,7 @@ split_tree (tree in, enum tree_code code, tree *conp, tree *litp,
|| TREE_CODE (in) == FIXED_CST)
*litp = in;
else if (TREE_CODE (in) == code
- || (! FLOAT_TYPE_P (TREE_TYPE (in))
+ || ((! FLOAT_TYPE_P (TREE_TYPE (in)) || flag_associative_math)
&& ! SAT_FIXED_POINT_TYPE_P (TREE_TYPE (in))
/* We can associate addition and subtraction together (even
though the C standard doesn't say so) for integers because
@@ -6426,7 +6425,7 @@ fold_binary_op_with_conditional_arg (enum tree_code code,
X - 0 is not the same as X because 0 - 0 is -0. In other rounding
modes, X + 0 is not the same as X because -0 + 0 is 0. */
-static bool
+bool
fold_real_zero_addition_p (const_tree type, const_tree addend, int negate)
{
if (!real_zerop (addend))
@@ -8028,6 +8027,14 @@ fold_unary (enum tree_code code, tree type, tree op0)
switch (code)
{
+ case PAREN_EXPR:
+ /* Re-association barriers around constants and other re-association
+ barriers can be removed. */
+ if (CONSTANT_CLASS_P (op0)
+ || TREE_CODE (op0) == PAREN_EXPR)
+ return fold_convert (type, op0);
+ return NULL_TREE;
+
case NOP_EXPR:
case FLOAT_EXPR:
case CONVERT_EXPR:
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index ea74958f3f9..5ba83fb7b87 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,212 @@
+2008-02-25 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
+
+ PR fortran/34729
+ * trans-const.c (gfc_build_string_const): Don't call gettext.
+ (gfc_build_localized_string_const): New function.
+ * trans-const.h (gfc_build_localized_string_const): New prototype.
+ * trans.c (gfc_trans_runtime_check): Use
+ gfc_build_localized_string_const instead of gfc_build_string_const.
+ (gfc_call_malloc): Likewise.
+ (gfc_allocate_with_status): Likewise.
+ (gfc_allocate_array_with_status): Likewise.
+ (gfc_deallocate_with_status): Likewise.
+ (gfc_call_realloc): Likewise.
+ * trans-io.c (gfc_trans_io_runtime_check): Likewise.
+
+2008-02-24 Tobias Schlüter <tobi@gcc.gnu.org>
+
+ * arith.c: Update copyright years.
+ * arith.h: Likewise.
+ * array.c: Likewise.
+ * bbt.c: Likewise.
+ * check.c: Likewise.
+ * data.c: Likewise.
+ * data.h: Likewise.
+ * decl.c: Likewise.
+ * dependency.c: Likewise.
+ * dependency.h: Likewise.
+ * dump-parse-tree.c: Likewise.
+ * error.c: Likewise.
+ * expr.c: Likewise.
+ * gfc-internals.texi: Likewise.
+ * gfortran.h: Likewise.
+ * gfortran.texi: Likewise.
+ * gfortranspec.c: Likewise.
+ * interface.c: Likewise.
+ * intrinsic.c: Likewise.
+ * intrinsic.h: Likewise.
+ * intrinsic.texi: Likewise.
+ * invoke.texi: Likewise.
+ * io.c: Likewise.
+ * iresolve.c: Likewise.
+ * iso-c-binding.def: Likewise.
+ * iso-fortran-env.def: Likewise.
+ * lang-specs.h: Likewise.
+ * lang.opt: Likewise.
+ * libgfortran.h: Likewise.
+ * match.c: Likewise.
+ * match.h: Likewise.
+ * matchexp.c: Likewise.
+ * misc.c: Likewise.
+ * module.c: Likewise.
+ * openmp.c: Likewise.
+ * options.c: Likewise.
+ * parse.c: Likewise.
+ * parse.h: Likewise.
+ * primary.c: Likewise.
+ * resolve.c: Likewise.
+ * scanner.c: Likewise.
+ * simplify.c: Likewise.
+ * st.c: Likewise.
+ * symbol.c: Likewise.
+ * target-memory.c: Likewise.
+ * target-memory.h: Likewise.
+ * trans-array.h: Likewise.
+ * trans-const.h: Likewise.
+ * trans-stmt.h: Likewise.
+ * trans-types.c: Likewise.
+ * trans-types.h: Likewise.
+ * types.def: Likewise.
+
+2008-02-24 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR fortran/35223
+ * simplify.c (gfc_simplify_ibclr), (gfc_simplify_ibits),
+ (gfc_simplify_ibset): Remove call to range_check.
+ (simplify_cmplx), (gfc_simplify_dble), (gfc_simplify_float)
+ (gfc_simplify_real): Add call gfc_clear_ts to initialize the
+ temporary gfc_typspec variable.
+
+2008-02-24 Tobias Schlüter <tobi@gcc.gnu.org>
+
+ * trans-array.c (gfc_conv_descriptor_data_get,
+ gfc_conv_descriptor_data_set_internal,
+ gfc_conv_descriptor_data_addr, gfc_conv_descriptor_offset,
+ gfc_conv_descriptor_dtype, gfc_conv_descriptor_dimension,
+ gfc_conv_descriptor_stride, gfc_conv_descriptor_lbound,
+ gfc_conv_descriptor_ubound, gfc_trans_create_temp_array,
+ gfc_conv_array_transpose, gfc_grow_array,
+ gfc_trans_array_constructor_subarray,
+ gfc_trans_array_constructor_value, gfc_trans_scalarized_loop_end,
+ gfc_array_init_size, gfc_array_allocate, gfc_array_deallocate,
+ gfc_conv_array_initializer, gfc_trans_array_bounds,
+ gfc_trans_auto_array_allocation, gfc_trans_dummy_array_bias,
+ gfc_get_dataptr_offset, gfc_conv_array_parameter,
+ gfc_trans_dealloc_allocated, get_full_array_size,
+ gfc_duplicate_allocatable, structure_alloc_comps): Use fold_buildN
+ instead of buildN.
+ * trans-expr.c (gfc_conv_expr_present, gfc_conv_missing_dummy,
+ gfc_conv_component_ref, gfc_conv_cst_int_power,
+ gfc_conv_function_call, gfc_trans_structur_assign): Likewise.
+ * trans-common.c (create_common): Likewise.
+ * trans-openmp.c (gfc_trans_omp_atomic, gfc_trans_omp_do):
+ Likewise.
+ * trans-const.c (gfc_conv_constant_to_tree): Likewise.
+ * trans-stmt.c (gfc_trans_goto, gfc_trans_return, gfc_trans_do,
+ gfc_trans_integer_select, gfc_trans_character_select,
+ gfc_trans_forall_loop, compute_overall_iter_number,
+ gfc_trans_forall_1, gfc_evaluate_where_mask, gfc_trans_allocate,
+ gfc_trans_deallocate): Likewise.
+ * trans.c (gfc_build_addr_expr, gfc_trans_runtime_check,
+ gfc_allocate_with_status, gfc_allocate_array_with_status,
+ gfc_deallocate_with_status): Likewise.
+ * f95-lang.c (gfc_truthvalue_conversion): Likewise.
+ * trans-io.c (set_parameter_const, set_parameter_value,
+ set_parameter_ref, set_string, set_internal_unit, io_result,
+ set_error_locus, nml_get_addr_expr, transfer_expr): Likewise.
+ * trans-decl.c (gfc_build_qualified_array, build_entry_thunks,
+ gfc_get_fake_result_decl, gfc_trans_auto_character_variable,
+ gfc_generate_function_code): Likewise.
+ * convert.c (convert): Likewise.
+ * trans-intrinsic.c (gfc_conv_intrinsic_conversion,
+ build_fixbound_expr, build_fix_expr, gfc_conv_intrinsic_aint,
+ gfc_conv_intrinsic_int, gfc_conv_intrinsic_imagpart,
+ gfc_conv_intrinsic_conjg, gfc_conv_intrinsic_abs,
+ gfc_conv_intrinsic_cmplx, gfc_conv_intrinsic_mod,
+ gfc_conv_intrinsic_dim, gfc_conv_intrinsic_dprod,
+ gfc_conv_intrinsic_ctime, gfc_conv_intrinsic_fdate,
+ gfc_conv_intrinsic_ttynam, gfc_conv_intrinsic_minmax,
+ gfc_conv_intrinsic_minmax_char, gfc_conv_intrinsic_count,
+ gfc_conv_intrinsic_arith, gfc_conv_intrinsic_dot_product,
+ gfc_conv_intrinsic_minmaxloc, gfc_conv_intrinsic_minmaxval,
+ gfc_conv_intrinsic_btest, gfc_conv_intrinsic_not,
+ gfc_conv_intrinsic_ibits, gfc_conv_intrinsic_ishft,
+ gfc_conv_intrinsic_ichar, gfc_conv_intrinsic_size,
+ gfc_conv_intrinsic_array_transfer, gfc_conv_intrinsic_transfer,
+ gfc_conv_allocated, gfc_conv_associated, gfc_conv_intrinsic_trim,
+ gfc_conv_intrinsic_repeat): Likewise.
+
+2008-02-23 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ PR target/25477
+ * trans-expr.c (gfc_conv_power_op): Use BUILT_IN_CPOW{F,,L}.
+ * f95-lang.c (gfc_init_builtin_functions): Define BUILT_IN_CPOW{F,,L}.
+ * trans.h (gfor_fndecl_math_cpow, gfor_fndecl_math_cpowf,
+ gfor_fndecl_math_cpowl10, gfor_fndecl_math_cpowl16): Remove.
+ * trans-decl.c: Likewise.
+
+2008-02-22 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR fortran/35059
+ * expr.c (find_array_element): Modify traversing the constructor to
+ avoid trying to access NULL memory pointed to by next for the
+ last element. (find_array_section): Exit while loop if cons->next is
+ NULL.
+
+2008-02-22 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR fortran/34907
+ * iresolve.c (resolve_mask_arg): Add gfc_clear_ts to initialize
+ structure.
+ (gfc_resolve_aint): Likewise.
+ (gfc_resolve_anint): Likewise.
+ (gfc_resolve_besn): Likewise.
+ (gfc_resolve_cshift): Likewise.
+ (gfc_resolve_ctime): Likewise.
+ (gfc_resolve_eoshift): Likewise.
+ (gfc_resolve_index_func): Likewise.
+ (gfc_resolve_isatty): Likewise.
+ (gfc_resolve_malloc): Likewise.
+ (gfc_resolve_rrspacing): Likewise.
+ (gfc_resolve_scale): Likewise.
+ (gfc_resolve_set_exponent): Likewise.
+ (gfc_resolve_spacing): Likewise.
+ (gfc_resolve_spacing): Likewise.
+ (gfc_resolve_fgetc): Likewise.
+ (gfc_resolve_fputc): Likewise.
+ (gfc_resolve_ftell): Likewise.
+ (gfc_resolve_ttynam): Likewise.
+ (gfc_resolve_alarm_sub): Likewise.
+ (gfc_resolve_mvbits): Likewise.
+ (gfc_resolve_getarg): Likewise.
+ (gfc_resolve_signal_sub): Likewise.
+ (gfc_resolve_exit): Likewise.
+ (gfc_resolve_flush): Likewise.
+ (gfc_resolve_free): Likewise.
+ (gfc_resolve_ctime_sub): Likewise.
+ (gfc_resolve_fgetc_sub): Likewise.
+ (gfc_resolve_fputc_sub): Likewise.
+ (gfc_resolve_fseek_sub): Likewise.
+ (gfc_resolve_ftell_sub): Likewise.
+ (gfc_resolve_ttynam_sub): Likewise.
+
+2008-02-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * gfc-internals.texi: Fix typos and markup nits.
+ * gfortran.texi: Likewise.
+ * intrinsic.texi: Likewise.
+
+2008-02-21 Richard Guenther <rguenther@suse.de>
+
+ * trans-expr.c (gfc_conv_expr_op): Expand INTRINSIC_PARENTHESES
+ as unary PAREN_EXPR for real and complex typed expressions.
+ (gfc_conv_unary_op): Fold the built tree.
+
+2008-02-20 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/34997
+ * match.c (gfc_match_name): Improve error message for '$'.
+
2008-02-19 Daniel Franke <franke.daniel@gmail.com>
PR fortran/35030
diff --git a/gcc/fortran/arith.c b/gcc/fortran/arith.c
index b06aa078c8a..fdd6f6a7d77 100644
--- a/gcc/fortran/arith.c
+++ b/gcc/fortran/arith.c
@@ -1,5 +1,5 @@
/* Compiler arithmetic
- Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+ Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Andy Vaught
diff --git a/gcc/fortran/arith.h b/gcc/fortran/arith.h
index 67d73617a74..f370c1cbce8 100644
--- a/gcc/fortran/arith.h
+++ b/gcc/fortran/arith.h
@@ -1,5 +1,5 @@
/* Compiler arithmetic header.
- Copyright (C) 2000, 2001, 2002, 2004, 2005, 2006, 2007
+ Copyright (C) 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Steven Bosscher
diff --git a/gcc/fortran/array.c b/gcc/fortran/array.c
index 75f80edc3b5..adc3f3f6bfb 100644
--- a/gcc/fortran/array.c
+++ b/gcc/fortran/array.c
@@ -1,5 +1,5 @@
/* Array things
- Copyright (C) 2000, 2001, 2002, 2004, 2005, 2006, 2007
+ Copyright (C) 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Andy Vaught
diff --git a/gcc/fortran/bbt.c b/gcc/fortran/bbt.c
index 4fd00fb0232..e89eb57fd8d 100644
--- a/gcc/fortran/bbt.c
+++ b/gcc/fortran/bbt.c
@@ -1,5 +1,5 @@
/* Balanced binary trees using treaps.
- Copyright (C) 2000, 2002, 2003, 2007
+ Copyright (C) 2000, 2002, 2003, 2007, 2008
Free Software Foundation, Inc.
Contributed by Andy Vaught
diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c
index 8727862022a..5c7353d1168 100644
--- a/gcc/fortran/check.c
+++ b/gcc/fortran/check.c
@@ -1,5 +1,5 @@
/* Check functions
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007
+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Andy Vaught & Katherine Holcomb
diff --git a/gcc/fortran/convert.c b/gcc/fortran/convert.c
index b4716c14216..1e7d090cbf1 100644
--- a/gcc/fortran/convert.c
+++ b/gcc/fortran/convert.c
@@ -1,5 +1,5 @@
/* Language-level data type conversion for GNU C.
- Copyright (C) 1987, 1988, 1991, 1998, 2002, 2007
+ Copyright (C) 1987, 1988, 1991, 1998, 2002, 2007, 2008
Free Software Foundation, Inc.
This file is part of GCC.
@@ -89,7 +89,7 @@ convert (tree type, tree expr)
return error_mark_node;
}
if (code == VOID_TYPE)
- return build1 (CONVERT_EXPR, type, e);
+ return fold_build1 (CONVERT_EXPR, type, e);
#if 0
/* This is incorrect. A truncation can't be stripped this way.
Extensions will be stripped by the use of get_unwidened. */
diff --git a/gcc/fortran/data.c b/gcc/fortran/data.c
index 654c4384de6..1fe2ee51f9d 100644
--- a/gcc/fortran/data.c
+++ b/gcc/fortran/data.c
@@ -1,5 +1,5 @@
/* Supporting functions for resolving DATA statement.
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007
+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Lifang Zeng <zlf605@hotmail.com>
diff --git a/gcc/fortran/data.h b/gcc/fortran/data.h
index 5f89d981f7e..a677a86e0e3 100644
--- a/gcc/fortran/data.h
+++ b/gcc/fortran/data.h
@@ -1,5 +1,5 @@
/* Header for functions resolving DATA statements.
- Copyright (C) 2007 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2008 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c
index 06c1df3c4fa..d8306879d56 100644
--- a/gcc/fortran/decl.c
+++ b/gcc/fortran/decl.c
@@ -1,5 +1,5 @@
/* Declaration statement matcher
- Copyright (C) 2002, 2004, 2005, 2006, 2007
+ Copyright (C) 2002, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Andy Vaught
diff --git a/gcc/fortran/dependency.c b/gcc/fortran/dependency.c
index 29a5237e6eb..8e7e34332ce 100644
--- a/gcc/fortran/dependency.c
+++ b/gcc/fortran/dependency.c
@@ -1,5 +1,5 @@
/* Dependency analysis
- Copyright (C) 2000, 2001, 2002, 2005, 2006, 2007
+ Copyright (C) 2000, 2001, 2002, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Paul Brook <paul@nowt.org>
diff --git a/gcc/fortran/dependency.h b/gcc/fortran/dependency.h
index 9c856af094f..041b0d53b45 100644
--- a/gcc/fortran/dependency.h
+++ b/gcc/fortran/dependency.h
@@ -1,5 +1,5 @@
/* Header for dependency analysis
- Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+ Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Paul Brook
diff --git a/gcc/fortran/dump-parse-tree.c b/gcc/fortran/dump-parse-tree.c
index ea83da76cff..4f4a77c0450 100644
--- a/gcc/fortran/dump-parse-tree.c
+++ b/gcc/fortran/dump-parse-tree.c
@@ -1,5 +1,5 @@
/* Parse tree dumper
- Copyright (C) 2003, 2004, 2005, 2006, 2007
+ Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Steven Bosscher
diff --git a/gcc/fortran/error.c b/gcc/fortran/error.c
index fa1a505c3f3..0718e5af5b5 100644
--- a/gcc/fortran/error.c
+++ b/gcc/fortran/error.c
@@ -1,5 +1,5 @@
/* Handle errors.
- Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+ Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Andy Vaught & Niels Kristian Bech Jensen
diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c
index bfb61fdf6a8..0b0fd0936a3 100644
--- a/gcc/fortran/expr.c
+++ b/gcc/fortran/expr.c
@@ -1,5 +1,5 @@
/* Routines for manipulation of expression nodes.
- Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+ Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Andy Vaught
diff --git a/gcc/fortran/f95-lang.c b/gcc/fortran/f95-lang.c
index dcc64b9c38d..ea795b24f74 100644
--- a/gcc/fortran/f95-lang.c
+++ b/gcc/fortran/f95-lang.c
@@ -1,5 +1,5 @@
/* gfortran backend interface
- Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+ Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Paul Brook.
@@ -220,16 +220,17 @@ gfc_truthvalue_conversion (tree expr)
return expr;
}
else if (TREE_CODE (expr) == NOP_EXPR)
- return build1 (NOP_EXPR, boolean_type_node, TREE_OPERAND (expr, 0));
+ return fold_build1 (NOP_EXPR,
+ boolean_type_node, TREE_OPERAND (expr, 0));
else
- return build1 (NOP_EXPR, boolean_type_node, expr);
+ return fold_build1 (NOP_EXPR, boolean_type_node, expr);
case INTEGER_TYPE:
if (TREE_CODE (expr) == INTEGER_CST)
return integer_zerop (expr) ? boolean_false_node : boolean_true_node;
else
- return build2 (NE_EXPR, boolean_type_node, expr,
- build_int_cst (TREE_TYPE (expr), 0));
+ return fold_build2 (NE_EXPR, boolean_type_node, expr,
+ build_int_cst (TREE_TYPE (expr), 0));
default:
internal_error ("Unexpected type in truthvalue_conversion");
@@ -942,6 +943,12 @@ gfc_init_builtin_functions (void)
BUILT_IN_POW, "pow", true);
gfc_define_builtin ("__builtin_powf", mfunc_float[1],
BUILT_IN_POWF, "powf", true);
+ gfc_define_builtin ("__builtin_cpowl", mfunc_clongdouble[1],
+ BUILT_IN_CPOWL, "cpowl", true);
+ gfc_define_builtin ("__builtin_cpow", mfunc_cdouble[1],
+ BUILT_IN_CPOW, "cpow", true);
+ gfc_define_builtin ("__builtin_cpowf", mfunc_cfloat[1],
+ BUILT_IN_CPOWF, "cpowf", true);
gfc_define_builtin ("__builtin_powil", mfunc_longdouble[2],
BUILT_IN_POWIL, "powil", true);
gfc_define_builtin ("__builtin_powi", mfunc_double[2],
diff --git a/gcc/fortran/gfc-internals.texi b/gcc/fortran/gfc-internals.texi
index d61b87e3b38..f693aa9a72d 100644
--- a/gcc/fortran/gfc-internals.texi
+++ b/gcc/fortran/gfc-internals.texi
@@ -1,7 +1,7 @@
\input texinfo @c -*-texinfo-*-
@c %**start of header
@setfilename gfc-internals.info
-@set copyrights-gfortran 2007
+@set copyrights-gfortran 2007-2008
@include gcc-common.texi
@@ -307,7 +307,7 @@ last in a block, @code{here} points to the statement label of the
current statement.
If the current statement is one of @code{IF}, @code{DO}, @code{SELECT}
-it starts a block, i.e. a nested level in the program. In order to
+it starts a block, i.e.@: a nested level in the program. In order to
represent this, the @code{block} member is set to point to a
@code{gfc_code} structure whose @code{block} member points to the
block in question. The @code{SELECT} and @code{IF} statements may
@@ -359,13 +359,13 @@ Versioning - Ulrich Depper}
@item
@uref{http://people.redhat.com/drepper/dsohowto.pdf, How to Write Shared
-Libraries - Ulrich Depper (see Chapter 3)}
+Libraries - Ulrich Drepper (see Chapter 3)}
@end itemize
If one adds a new symbol to a library that should be exported, the new
symbol should be mentioned in the map file and a new version node
-defined, e.g. if one adds a new symbols @code{foo} and @code{bar} to
+defined, e.g., if one adds a new symbols @code{foo} and @code{bar} to
libgfortran for the next GCC release, the following should be added to
the map file:
@smallexample
diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h
index 5cd99c415f9..5aef5bf1158 100644
--- a/gcc/fortran/gfortran.h
+++ b/gcc/fortran/gfortran.h
@@ -1,5 +1,5 @@
/* gfortran header file
- Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+ Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Andy Vaught
diff --git a/gcc/fortran/gfortran.texi b/gcc/fortran/gfortran.texi
index 87be7e8c3aa..098f1f05bd9 100644
--- a/gcc/fortran/gfortran.texi
+++ b/gcc/fortran/gfortran.texi
@@ -1,7 +1,7 @@
\input texinfo @c -*-texinfo-*-
@c %**start of header
@setfilename gfortran.info
-@set copyrights-gfortran 1999-2007
+@set copyrights-gfortran 1999-2008
@include gcc-common.texi
@@ -616,7 +616,7 @@ This is the default.
@section @env{GFORTRAN_UNBUFFERED_PRECONNECTED}---Don't buffer I/O on preconnected units
The environment variable named @env{GFORTRAN_UNBUFFERED_PRECONNECTED} controls
-whether I/O on a preconnected unit (i.e STDOUT or STDERR) is unbuffered. If
+whether I/O on a preconnected unit (i.e.@: STDOUT or STDERR) is unbuffered. If
the first letter is @samp{y}, @samp{Y} or @samp{1}, I/O is unbuffered. This
will slow down small sequential reads and writes. If the first letter
is @samp{n}, @samp{N} or @samp{0}, I/O is buffered. This is the default.
@@ -1457,7 +1457,7 @@ END SUBROUTINE A1
Please note:
@itemize
@item
-@option{-fopenmp} implies @option{-frecursive}, i.e. all local arrays
+@option{-fopenmp} implies @option{-frecursive}, i.e., all local arrays
will be allocated on the stack. When porting existing code to OpenMP,
this may lead to surprising results, especially to segmentation faults
if the stacksize is limited.
diff --git a/gcc/fortran/gfortranspec.c b/gcc/fortran/gfortranspec.c
index be9830386f7..c8263ad49df 100644
--- a/gcc/fortran/gfortranspec.c
+++ b/gcc/fortran/gfortranspec.c
@@ -1,5 +1,6 @@
/* Specific flags and argument handling of the Fortran front-end.
- Copyright (C) 1997, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+ Copyright (C) 1997, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2007, 2008
Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/fortran/interface.c b/gcc/fortran/interface.c
index 8b73adcf3c8..e72b97b1dce 100644
--- a/gcc/fortran/interface.c
+++ b/gcc/fortran/interface.c
@@ -1,5 +1,5 @@
/* Deal with interfaces.
- Copyright (C) 2000, 2001, 2002, 2004, 2005, 2006, 2007
+ Copyright (C) 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Andy Vaught
diff --git a/gcc/fortran/intrinsic.c b/gcc/fortran/intrinsic.c
index 227c5ec1c6e..96bf62ba0b9 100644
--- a/gcc/fortran/intrinsic.c
+++ b/gcc/fortran/intrinsic.c
@@ -1,6 +1,6 @@
/* Build up a list of intrinsic subroutines and functions for the
name-resolution stage.
- Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+ Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Andy Vaught & Katherine Holcomb
diff --git a/gcc/fortran/intrinsic.h b/gcc/fortran/intrinsic.h
index dc544890e49..55fe6452bf7 100644
--- a/gcc/fortran/intrinsic.h
+++ b/gcc/fortran/intrinsic.h
@@ -1,6 +1,6 @@
/* Header file for intrinsics check, resolve and simplify function
prototypes.
- Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+ Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Andy Vaught & Katherine Holcomb
diff --git a/gcc/fortran/intrinsic.texi b/gcc/fortran/intrinsic.texi
index 03cae503d8a..0b5e65f0eec 100644
--- a/gcc/fortran/intrinsic.texi
+++ b/gcc/fortran/intrinsic.texi
@@ -1,5 +1,5 @@
@ignore
-Copyright (C) 2005, 2006, 2007
+Copyright (C) 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
This is part of the GNU Fortran manual.
For copying conditions, see the file gfortran.texi.
@@ -1855,7 +1855,7 @@ end program test_btest
@table @asis
@item @emph{Description}:
-@code{C_ASSOICATED(c_prt1[, c_ptr2])} determines the status of the C pointer @var{c_ptr1}
+@code{C_ASSOCIATED(c_prt1[, c_ptr2])} determines the status of the C pointer @var{c_ptr1}
or if @var{c_ptr1} is associated with the target @var{c_ptr2}.
@item @emph{Standard}:
@@ -1865,7 +1865,7 @@ F2003 and later
Inquiry function
@item @emph{Syntax}:
-@code{RESULT = C_ASSOICATED(c_prt1[, c_ptr2])}
+@code{RESULT = C_ASSOCIATED(c_prt1[, c_ptr2])}
@item @emph{Arguments}:
@multitable @columnfractions .15 .70
@@ -3332,7 +3332,7 @@ become, negative, or numerically less than previous values, during a single
run of the compiled program.
Please note, that this implementation is thread safe if used within OpenMP
-directives, i. e. its state will be consistent while called from multiple
+directives, i.e., its state will be consistent while called from multiple
threads. However, if @code{DTIME} is called from multiple threads, the result
is still the time since the last invocation. This may not give the intended
results. If possible, use @code{CPU_TIME} instead.
@@ -6414,7 +6414,7 @@ The return value is of type @code{INTEGER} and of kind @var{KIND}. If
@table @asis
@item @emph{Description}:
-@code{GAMMA(X)} computes the natural logrithm of the absolute value of the
+@code{GAMMA(X)} computes the natural logarithm of the absolute value of the
Gamma (@math{\Gamma}) function.
@item @emph{Standard}:
@@ -7720,7 +7720,7 @@ cases, the result is of the same type and kind as @var{ARRAY}.
@table @asis
@item @emph{Description}:
-@code{MOD(A,P)} computes the remainder of the division of A by P. It is
+@code{MOD(A,P)} computes the remainder of the division of A by P@. It is
calculated as @code{A - (INT(A/P) * P)}.
@item @emph{Standard}:
@@ -8566,7 +8566,7 @@ with a period of @math{2^{32}},
The overall period exceeds @math{2^{123}}.
Please note, this RNG is thread safe if used within OpenMP directives,
-i. e. its state will be consistent while called from multiple threads.
+i.e., its state will be consistent while called from multiple threads.
However, the KISS generator does not create random numbers in parallel
from multiple sources, but in sequence from a single source. If an
OpenMP-enabled application heavily relies on random numbers, one should
@@ -10519,7 +10519,7 @@ Transformational function
@end multitable
@item @emph{Return value}:
-The result has the the same type as @var{MATRIX}, and has shape
+The result has the same type as @var{MATRIX}, and has shape
@code{(/ m, n /)} if @var{MATRIX} has shape @code{(/ n, m /)}.
@end table
@@ -10752,7 +10752,7 @@ Transformational function
@item @var{VECTOR} @tab Shall be an array of any type and rank one. It
shall have at least as many elements as @var{MASK} has @code{TRUE} values.
@item @var{MASK} @tab Shall be an array of type @code{LOGICAL}.
-@item @var{FIELD} @tab Shall be of the sam type as @var{VECTOR} and have
+@item @var{FIELD} @tab Shall be of the same type as @var{VECTOR} and have
the same shape as @var{MASK}.
@end multitable
@@ -10903,13 +10903,13 @@ named constants:
Size in bits of the character storage unit.
@item @code{ERROR_UNIT}:
-Indentifies the preconnected unit used for error reporting.
+Identifies the preconnected unit used for error reporting.
@item @code{FILE_STORAGE_SIZE}:
Size in bits of the file-storage unit.
@item @code{INPUT_UNIT}:
-Indentifies the preconnected unit indentified by the asterisk
+Identifies the preconnected unit identified by the asterisk
(@code{*}) in @code{READ} statement.
@item @code{IOSTAT_END}:
@@ -10924,7 +10924,7 @@ an input/output statement if an end-of-record condition occurred.
The size in bits of the numeric storage unit.
@item @code{OUTPUT_UNIT}:
-Indentifies the preconnected unit indentified by the asterisk
+Identifies the preconnected unit identified by the asterisk
(@code{*}) in @code{WRITE} statement.
@end table
@@ -10950,7 +10950,7 @@ manual.
The @code{ISO_C_BINDING} module provides the following named constants of the
type integer, which can be used as KIND type parameter. Note that GNU
Fortran currently does not support the @code{C_INT_FAST...} KIND type
-parameters (marked by an asterix (@code{*}) in the list below).
+parameters (marked by an asterisk (@code{*}) in the list below).
The @code{C_INT_FAST...} parameters have therefore the value @math{-2}
and cannot be used as KIND type parameter of the @code{INTEGER} type.
diff --git a/gcc/fortran/invoke.texi b/gcc/fortran/invoke.texi
index 0a67785d299..06d36b96e89 100644
--- a/gcc/fortran/invoke.texi
+++ b/gcc/fortran/invoke.texi
@@ -1,4 +1,4 @@
-@c Copyright (C) 2004, 2005, 2006, 2007
+@c Copyright (C) 2004, 2005, 2006, 2007, 2008
@c Free Software Foundation, Inc.
@c This is part of the GNU Fortran manual.
@c For copying conditions, see the file gfortran.texi.
diff --git a/gcc/fortran/io.c b/gcc/fortran/io.c
index 0bff511db06..decd8193070 100644
--- a/gcc/fortran/io.c
+++ b/gcc/fortran/io.c
@@ -1,5 +1,5 @@
/* Deal with I/O statements & related stuff.
- Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+ Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Andy Vaught
diff --git a/gcc/fortran/iresolve.c b/gcc/fortran/iresolve.c
index 79b46e2501c..3bc07fe633b 100644
--- a/gcc/fortran/iresolve.c
+++ b/gcc/fortran/iresolve.c
@@ -1,5 +1,5 @@
/* Intrinsic function resolution.
- Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+ Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Andy Vaught & Katherine Holcomb
@@ -89,6 +89,7 @@ resolve_mask_arg (gfc_expr *mask)
{
gfc_typespec ts;
+ gfc_clear_ts (&ts);
if (mask->rank == 0)
{
@@ -220,6 +221,7 @@ void
gfc_resolve_aint (gfc_expr *f, gfc_expr *a, gfc_expr *kind)
{
gfc_typespec ts;
+ gfc_clear_ts (&ts);
f->ts.type = a->ts.type;
f->ts.kind = (kind == NULL) ? a->ts.kind : mpz_get_si (kind->value.integer);
@@ -266,6 +268,7 @@ void
gfc_resolve_anint (gfc_expr *f, gfc_expr *a, gfc_expr *kind)
{
gfc_typespec ts;
+ gfc_clear_ts (&ts);
f->ts.type = a->ts.type;
f->ts.kind = (kind == NULL) ? a->ts.kind : mpz_get_si (kind->value.integer);
@@ -360,6 +363,7 @@ void
gfc_resolve_besn (gfc_expr *f, gfc_expr *n, gfc_expr *x)
{
gfc_typespec ts;
+ gfc_clear_ts (&ts);
f->ts = x->ts;
if (n->ts.kind != gfc_c_int_kind)
@@ -585,6 +589,7 @@ gfc_resolve_cshift (gfc_expr *f, gfc_expr *array, gfc_expr *shift,
if (shift->ts.kind < m)
{
gfc_typespec ts;
+ gfc_clear_ts (&ts);
ts.type = BT_INTEGER;
ts.kind = m;
gfc_convert_type_warn (shift, &ts, 2, 0);
@@ -616,6 +621,7 @@ void
gfc_resolve_ctime (gfc_expr *f, gfc_expr *time)
{
gfc_typespec ts;
+ gfc_clear_ts (&ts);
f->ts.type = BT_CHARACTER;
f->ts.kind = gfc_default_character_kind;
@@ -723,6 +729,7 @@ gfc_resolve_eoshift (gfc_expr *f, gfc_expr *array, gfc_expr *shift,
if (shift->ts.kind < m)
{
gfc_typespec ts;
+ gfc_clear_ts (&ts);
ts.type = BT_INTEGER;
ts.kind = m;
gfc_convert_type_warn (shift, &ts, 2, 0);
@@ -1000,6 +1007,7 @@ gfc_resolve_index_func (gfc_expr *f, gfc_expr *str,
gfc_expr *kind)
{
gfc_typespec ts;
+ gfc_clear_ts (&ts);
f->ts.type = BT_INTEGER;
if (kind)
@@ -1070,6 +1078,7 @@ void
gfc_resolve_isatty (gfc_expr *f, gfc_expr *u)
{
gfc_typespec ts;
+ gfc_clear_ts (&ts);
f->ts.type = BT_LOGICAL;
f->ts.kind = gfc_default_integer_kind;
@@ -1251,6 +1260,7 @@ gfc_resolve_malloc (gfc_expr *f, gfc_expr *size)
if (size->ts.kind < gfc_index_integer_kind)
{
gfc_typespec ts;
+ gfc_clear_ts (&ts);
ts.type = BT_INTEGER;
ts.kind = gfc_index_integer_kind;
@@ -1859,6 +1869,7 @@ gfc_resolve_rrspacing (gfc_expr *f, gfc_expr *x)
if (prec->expr->ts.kind != gfc_c_int_kind)
{
gfc_typespec ts;
+ gfc_clear_ts (&ts);
ts.type = BT_INTEGER;
ts.kind = gfc_c_int_kind;
gfc_convert_type (prec->expr, &ts, 2);
@@ -1877,6 +1888,7 @@ gfc_resolve_scale (gfc_expr *f, gfc_expr *x, gfc_expr *i)
if (i->ts.kind != gfc_c_int_kind)
{
gfc_typespec ts;
+ gfc_clear_ts (&ts);
ts.type = BT_INTEGER;
ts.kind = gfc_c_int_kind;
gfc_convert_type_warn (i, &ts, 2, 0);
@@ -1919,6 +1931,7 @@ gfc_resolve_set_exponent (gfc_expr *f, gfc_expr *x, gfc_expr *i)
if (i->ts.kind != gfc_c_int_kind)
{
gfc_typespec ts;
+ gfc_clear_ts (&ts);
ts.type = BT_INTEGER;
ts.kind = gfc_c_int_kind;
gfc_convert_type_warn (i, &ts, 2, 0);
@@ -2033,6 +2046,7 @@ gfc_resolve_spacing (gfc_expr *f, gfc_expr *x)
if (emin_1->expr->ts.kind != gfc_c_int_kind)
{
gfc_typespec ts;
+ gfc_clear_ts (&ts);
ts.type = BT_INTEGER;
ts.kind = gfc_c_int_kind;
gfc_convert_type (emin_1->expr, &ts, 2);
@@ -2047,6 +2061,7 @@ gfc_resolve_spacing (gfc_expr *f, gfc_expr *x)
if (prec->expr->ts.kind != gfc_c_int_kind)
{
gfc_typespec ts;
+ gfc_clear_ts (&ts);
ts.type = BT_INTEGER;
ts.kind = gfc_c_int_kind;
gfc_convert_type (prec->expr, &ts, 2);
@@ -2146,6 +2161,7 @@ void
gfc_resolve_fgetc (gfc_expr *f, gfc_expr *u, gfc_expr *c ATTRIBUTE_UNUSED)
{
gfc_typespec ts;
+ gfc_clear_ts (&ts);
f->ts.type = BT_INTEGER;
f->ts.kind = gfc_c_int_kind;
@@ -2175,6 +2191,7 @@ void
gfc_resolve_fputc (gfc_expr *f, gfc_expr *u, gfc_expr *c ATTRIBUTE_UNUSED)
{
gfc_typespec ts;
+ gfc_clear_ts (&ts);
f->ts.type = BT_INTEGER;
f->ts.kind = gfc_c_int_kind;
@@ -2204,6 +2221,7 @@ void
gfc_resolve_ftell (gfc_expr *f, gfc_expr *u)
{
gfc_typespec ts;
+ gfc_clear_ts (&ts);
f->ts.type = BT_INTEGER;
f->ts.kind = gfc_index_integer_kind;
@@ -2451,6 +2469,7 @@ void
gfc_resolve_ttynam (gfc_expr *f, gfc_expr *unit)
{
gfc_typespec ts;
+ gfc_clear_ts (&ts);
f->ts.type = BT_CHARACTER;
f->ts.kind = gfc_default_character_kind;
@@ -2526,6 +2545,7 @@ gfc_resolve_alarm_sub (gfc_code *c)
const char *name;
gfc_expr *seconds, *handler, *status;
gfc_typespec ts;
+ gfc_clear_ts (&ts);
seconds = c->ext.actual->expr;
handler = c->ext.actual->next->expr;
@@ -2567,6 +2587,7 @@ gfc_resolve_mvbits (gfc_code *c)
{
const char *name;
gfc_typespec ts;
+ gfc_clear_ts (&ts);
/* FROMPOS, LEN and TOPOS are restricted to small values. As such,
they will be converted so that they fit into a C int. */
@@ -2780,6 +2801,7 @@ gfc_resolve_getarg (gfc_code *c)
if (c->ext.actual->expr->ts.kind != gfc_default_integer_kind)
{
gfc_typespec ts;
+ gfc_clear_ts (&ts);
ts.type = BT_INTEGER;
ts.kind = gfc_default_integer_kind;
@@ -2855,6 +2877,7 @@ gfc_resolve_signal_sub (gfc_code *c)
const char *name;
gfc_expr *number, *handler, *status;
gfc_typespec ts;
+ gfc_clear_ts (&ts);
number = c->ext.actual->expr;
handler = c->ext.actual->next->expr;
@@ -2922,6 +2945,7 @@ gfc_resolve_exit (gfc_code *c)
const char *name;
gfc_typespec ts;
gfc_expr *n;
+ gfc_clear_ts (&ts);
/* The STATUS argument has to be of default kind. If it is not,
we convert it. */
@@ -2944,6 +2968,7 @@ gfc_resolve_flush (gfc_code *c)
const char *name;
gfc_typespec ts;
gfc_expr *n;
+ gfc_clear_ts (&ts);
ts.type = BT_INTEGER;
ts.kind = gfc_default_integer_kind;
@@ -2961,6 +2986,7 @@ gfc_resolve_free (gfc_code *c)
{
gfc_typespec ts;
gfc_expr *n;
+ gfc_clear_ts (&ts);
ts.type = BT_INTEGER;
ts.kind = gfc_index_integer_kind;
@@ -2976,6 +3002,7 @@ void
gfc_resolve_ctime_sub (gfc_code *c)
{
gfc_typespec ts;
+ gfc_clear_ts (&ts);
/* ctime TIME argument is a INTEGER(KIND=8), says the doc */
if (c->ext.actual->expr->ts.kind != 8)
@@ -3076,6 +3103,7 @@ gfc_resolve_fgetc_sub (gfc_code *c)
const char *name;
gfc_typespec ts;
gfc_expr *u, *st;
+ gfc_clear_ts (&ts);
u = c->ext.actual->expr;
st = c->ext.actual->next->next->expr;
@@ -3120,6 +3148,7 @@ gfc_resolve_fputc_sub (gfc_code *c)
const char *name;
gfc_typespec ts;
gfc_expr *u, *st;
+ gfc_clear_ts (&ts);
u = c->ext.actual->expr;
st = c->ext.actual->next->next->expr;
@@ -3166,6 +3195,7 @@ gfc_resolve_fseek_sub (gfc_code *c)
gfc_expr *whence;
gfc_expr *status;
gfc_typespec ts;
+ gfc_clear_ts (&ts);
unit = c->ext.actual->expr;
offset = c->ext.actual->next->expr;
@@ -3209,6 +3239,7 @@ gfc_resolve_ftell_sub (gfc_code *c)
gfc_expr *unit;
gfc_expr *offset;
gfc_typespec ts;
+ gfc_clear_ts (&ts);
unit = c->ext.actual->expr;
offset = c->ext.actual->next->expr;
@@ -3231,6 +3262,7 @@ void
gfc_resolve_ttynam_sub (gfc_code *c)
{
gfc_typespec ts;
+ gfc_clear_ts (&ts);
if (c->ext.actual->expr->ts.kind != gfc_c_int_kind)
{
diff --git a/gcc/fortran/iso-c-binding.def b/gcc/fortran/iso-c-binding.def
index 5c277a86751..c41870d4998 100644
--- a/gcc/fortran/iso-c-binding.def
+++ b/gcc/fortran/iso-c-binding.def
@@ -1,4 +1,4 @@
-/* Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2006, 2007, 2008 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/fortran/iso-fortran-env.def b/gcc/fortran/iso-fortran-env.def
index 8ef5597d3b2..dba2d3521ad 100644
--- a/gcc/fortran/iso-fortran-env.def
+++ b/gcc/fortran/iso-fortran-env.def
@@ -1,4 +1,4 @@
-/* Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2006, 2007, 2008 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/fortran/lang-specs.h b/gcc/fortran/lang-specs.h
index 4f752ec657f..e49b073aca3 100644
--- a/gcc/fortran/lang-specs.h
+++ b/gcc/fortran/lang-specs.h
@@ -1,6 +1,6 @@
/* Contribution to the specs for the GNU Compiler Collection
from GNU Fortran 95 compiler.
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007
+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
This file is free software; you can redistribute it and/or modify
diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt
index bc48e78bd3a..967f634de94 100644
--- a/gcc/fortran/lang.opt
+++ b/gcc/fortran/lang.opt
@@ -1,5 +1,6 @@
; Options for the Fortran 95 front end.
-; Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008
+; Free Software Foundation, Inc.
;
; This file is part of GCC.
;
diff --git a/gcc/fortran/libgfortran.h b/gcc/fortran/libgfortran.h
index d9bfa05e80a..be9716e0e9b 100644
--- a/gcc/fortran/libgfortran.h
+++ b/gcc/fortran/libgfortran.h
@@ -1,5 +1,5 @@
/* Header file to the Fortran front-end and runtime library
- Copyright (C) 2007 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2008 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c
index 324e52ecee0..25edd4aca4c 100644
--- a/gcc/fortran/match.c
+++ b/gcc/fortran/match.c
@@ -1,5 +1,5 @@
/* Matching subroutines in all sizes, shapes and colors.
- Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+ Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Andy Vaught
@@ -519,6 +519,13 @@ gfc_match_name (char *buffer)
}
while (ISALNUM (c) || c == '_' || (gfc_option.flag_dollar_ok && c == '$'));
+ if (c == '$' && !gfc_option.flag_dollar_ok)
+ {
+ gfc_error ("Invalid character '$' at %C. Use -fdollar-ok to allow it as an extension");
+ return MATCH_ERROR;
+ }
+
+
buffer[i] = '\0';
gfc_current_locus = old_loc;
diff --git a/gcc/fortran/match.h b/gcc/fortran/match.h
index eac543308f4..34f1af1738d 100644
--- a/gcc/fortran/match.h
+++ b/gcc/fortran/match.h
@@ -1,5 +1,5 @@
/* All matcher functions.
- Copyright (C) 2003, 2005, 2007
+ Copyright (C) 2003, 2005, 2007, 2008
Free Software Foundation, Inc.
Contributed by Steven Bosscher
diff --git a/gcc/fortran/matchexp.c b/gcc/fortran/matchexp.c
index 0bc567f3cec..a9e90c99454 100644
--- a/gcc/fortran/matchexp.c
+++ b/gcc/fortran/matchexp.c
@@ -1,5 +1,5 @@
/* Expression parser.
- Copyright (C) 2000, 2001, 2002, 2004, 2005, 2006, 2007
+ Copyright (C) 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Andy Vaught
diff --git a/gcc/fortran/misc.c b/gcc/fortran/misc.c
index 5ee5434baee..0d76926b267 100644
--- a/gcc/fortran/misc.c
+++ b/gcc/fortran/misc.c
@@ -1,5 +1,5 @@
/* Miscellaneous stuff that doesn't fit anywhere else.
- Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+ Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Andy Vaught
diff --git a/gcc/fortran/module.c b/gcc/fortran/module.c
index b478d3eda91..e9303a4f367 100644
--- a/gcc/fortran/module.c
+++ b/gcc/fortran/module.c
@@ -1,6 +1,6 @@
/* Handle modules, which amounts to loading and saving symbols and
their attendant structures.
- Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+ Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Andy Vaught
diff --git a/gcc/fortran/openmp.c b/gcc/fortran/openmp.c
index 5c45343007c..8c2d2577440 100644
--- a/gcc/fortran/openmp.c
+++ b/gcc/fortran/openmp.c
@@ -1,5 +1,5 @@
/* OpenMP directive matching and resolving.
- Copyright (C) 2005, 2006, 2007
+ Copyright (C) 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Jakub Jelinek
diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c
index 16e9079f6e6..7d35fb704ce 100644
--- a/gcc/fortran/options.c
+++ b/gcc/fortran/options.c
@@ -1,5 +1,5 @@
/* Parse and display command line options.
- Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+ Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Andy Vaught
diff --git a/gcc/fortran/parse.c b/gcc/fortran/parse.c
index 8d30beeca11..67f4cc775c5 100644
--- a/gcc/fortran/parse.c
+++ b/gcc/fortran/parse.c
@@ -1,5 +1,5 @@
/* Main parser.
- Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+ Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Andy Vaught
diff --git a/gcc/fortran/parse.h b/gcc/fortran/parse.h
index be885bb013b..196b9f736a5 100644
--- a/gcc/fortran/parse.h
+++ b/gcc/fortran/parse.h
@@ -1,5 +1,6 @@
/* Parser header
- Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008
+ Free Software Foundation, Inc.
Contributed by Steven Bosscher
This file is part of GCC.
diff --git a/gcc/fortran/primary.c b/gcc/fortran/primary.c
index 8385cb5788e..f6b163503b3 100644
--- a/gcc/fortran/primary.c
+++ b/gcc/fortran/primary.c
@@ -1,5 +1,5 @@
/* Primary expression subroutines
- Copyright (C) 2000, 2001, 2002, 2004, 2005, 2006, 2007
+ Copyright (C) 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Andy Vaught
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index 5a3f7829341..3df9791c876 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -1,5 +1,5 @@
/* Perform type resolution on the various stuctures.
- Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
+ Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Andy Vaught
diff --git a/gcc/fortran/scanner.c b/gcc/fortran/scanner.c
index 9bbb06581c9..ad3b5158334 100644
--- a/gcc/fortran/scanner.c
+++ b/gcc/fortran/scanner.c
@@ -1,5 +1,5 @@
/* Character scanner.
- Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+ Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Andy Vaught
diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c
index 1b5b23e2c0f..264f689b96b 100644
--- a/gcc/fortran/simplify.c
+++ b/gcc/fortran/simplify.c
@@ -1,5 +1,5 @@
/* Simplify intrinsic functions at compile-time.
- Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+ Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Andy Vaught & Katherine Holcomb
@@ -779,6 +779,7 @@ simplify_cmplx (const char *name, gfc_expr *x, gfc_expr *y, int kind)
if (x->is_boz)
{
gfc_typespec ts;
+ gfc_clear_ts (&ts);
ts.kind = result->ts.kind;
ts.type = BT_REAL;
if (!gfc_convert_boz (x, &ts))
@@ -789,6 +790,7 @@ simplify_cmplx (const char *name, gfc_expr *x, gfc_expr *y, int kind)
if (y && y->is_boz)
{
gfc_typespec ts;
+ gfc_clear_ts (&ts);
ts.kind = result->ts.kind;
ts.type = BT_REAL;
if (!gfc_convert_boz (y, &ts))
@@ -960,6 +962,7 @@ gfc_simplify_dble (gfc_expr *e)
if (e->ts.type == BT_INTEGER && e->is_boz)
{
gfc_typespec ts;
+ gfc_clear_ts (&ts);
ts.type = BT_REAL;
ts.kind = gfc_default_double_kind;
result = gfc_copy_expr (e);
@@ -1148,6 +1151,7 @@ gfc_simplify_float (gfc_expr *a)
if (a->is_boz)
{
gfc_typespec ts;
+ gfc_clear_ts (&ts);
ts.type = BT_REAL;
ts.kind = gfc_default_real_kind;
@@ -1359,7 +1363,7 @@ gfc_simplify_ibclr (gfc_expr *x, gfc_expr *y)
convert_mpz_to_signed (result->value.integer,
gfc_integer_kinds[k].bit_size);
- return range_check (result, "IBCLR");
+ return result;
}
@@ -1400,6 +1404,8 @@ gfc_simplify_ibits (gfc_expr *x, gfc_expr *y, gfc_expr *z)
}
result = gfc_constant_result (x->ts.type, x->ts.kind, &x->where);
+ convert_mpz_to_unsigned (result->value.integer,
+ gfc_integer_kinds[k].bit_size);
bits = gfc_getmem (bitsize * sizeof (int));
@@ -1421,7 +1427,10 @@ gfc_simplify_ibits (gfc_expr *x, gfc_expr *y, gfc_expr *z)
gfc_free (bits);
- return range_check (result, "IBITS");
+ convert_mpz_to_signed (result->value.integer,
+ gfc_integer_kinds[k].bit_size);
+
+ return result;
}
@@ -1459,7 +1468,7 @@ gfc_simplify_ibset (gfc_expr *x, gfc_expr *y)
convert_mpz_to_signed (result->value.integer,
gfc_integer_kinds[k].bit_size);
- return range_check (result, "IBSET");
+ return result;
}
@@ -3020,6 +3029,7 @@ gfc_simplify_real (gfc_expr *e, gfc_expr *k)
if (e->ts.type == BT_INTEGER && e->is_boz)
{
gfc_typespec ts;
+ gfc_clear_ts (&ts);
ts.type = BT_REAL;
ts.kind = kind;
result = gfc_copy_expr (e);
diff --git a/gcc/fortran/st.c b/gcc/fortran/st.c
index 777e4eb8a25..5f65846fb0d 100644
--- a/gcc/fortran/st.c
+++ b/gcc/fortran/st.c
@@ -1,5 +1,5 @@
/* Build executable statement trees.
- Copyright (C) 2000, 2001, 2002, 2004, 2005, 2006, 2007
+ Copyright (C) 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Andy Vaught
diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c
index e97684fc1cc..c86fa9ae40e 100644
--- a/gcc/fortran/symbol.c
+++ b/gcc/fortran/symbol.c
@@ -1,5 +1,5 @@
/* Maintain binary trees of symbols.
- Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+ Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Andy Vaught
diff --git a/gcc/fortran/target-memory.c b/gcc/fortran/target-memory.c
index 76258776743..e16c163ceaa 100644
--- a/gcc/fortran/target-memory.c
+++ b/gcc/fortran/target-memory.c
@@ -1,5 +1,5 @@
/* Simulate storage of variables into target memory.
- Copyright (C) 2007
+ Copyright (C) 2007, 2008
Free Software Foundation, Inc.
Contributed by Paul Thomas and Brooks Moses
diff --git a/gcc/fortran/target-memory.h b/gcc/fortran/target-memory.h
index a693563bc9b..04b9c780085 100644
--- a/gcc/fortran/target-memory.h
+++ b/gcc/fortran/target-memory.h
@@ -1,5 +1,5 @@
/* Simulate storage of variables into target memory, header.
- Copyright (C) 2007
+ Copyright (C) 2007, 2008
Free Software Foundation, Inc.
Contributed by Paul Thomas and Brooks Moses
diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c
index 41f01b848f2..07b0f60c86d 100644
--- a/gcc/fortran/trans-array.c
+++ b/gcc/fortran/trans-array.c
@@ -1,5 +1,5 @@
/* Array translation routines
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007
+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Paul Brook <paul@nowt.org>
and Steven Bosscher <s.bosscher@student.tudelft.nl>
@@ -149,7 +149,7 @@ gfc_conv_descriptor_data_get (tree desc)
field = TYPE_FIELDS (type);
gcc_assert (DATA_FIELD == 0);
- t = build3 (COMPONENT_REF, TREE_TYPE (field), desc, field, NULL_TREE);
+ t = fold_build3 (COMPONENT_REF, TREE_TYPE (field), desc, field, NULL_TREE);
t = fold_convert (GFC_TYPE_ARRAY_DATAPTR_TYPE (type), t);
return t;
@@ -176,7 +176,7 @@ gfc_conv_descriptor_data_set_internal (stmtblock_t *block,
field = TYPE_FIELDS (type);
gcc_assert (DATA_FIELD == 0);
- t = build3 (COMPONENT_REF, TREE_TYPE (field), desc, field, NULL_TREE);
+ t = fold_build3 (COMPONENT_REF, TREE_TYPE (field), desc, field, NULL_TREE);
gfc_add_modify (block, t, fold_convert (TREE_TYPE (field), value), tuples_p);
}
@@ -195,7 +195,7 @@ gfc_conv_descriptor_data_addr (tree desc)
field = TYPE_FIELDS (type);
gcc_assert (DATA_FIELD == 0);
- t = build3 (COMPONENT_REF, TREE_TYPE (field), desc, field, NULL_TREE);
+ t = fold_build3 (COMPONENT_REF, TREE_TYPE (field), desc, field, NULL_TREE);
return build_fold_addr_expr (t);
}
@@ -211,7 +211,8 @@ gfc_conv_descriptor_offset (tree desc)
field = gfc_advance_chain (TYPE_FIELDS (type), OFFSET_FIELD);
gcc_assert (field != NULL_TREE && TREE_TYPE (field) == gfc_array_index_type);
- return build3 (COMPONENT_REF, TREE_TYPE (field), desc, field, NULL_TREE);
+ return fold_build3 (COMPONENT_REF, TREE_TYPE (field),
+ desc, field, NULL_TREE);
}
tree
@@ -226,7 +227,8 @@ gfc_conv_descriptor_dtype (tree desc)
field = gfc_advance_chain (TYPE_FIELDS (type), DTYPE_FIELD);
gcc_assert (field != NULL_TREE && TREE_TYPE (field) == gfc_array_index_type);
- return build3 (COMPONENT_REF, TREE_TYPE (field), desc, field, NULL_TREE);
+ return fold_build3 (COMPONENT_REF, TREE_TYPE (field),
+ desc, field, NULL_TREE);
}
static tree
@@ -244,7 +246,8 @@ gfc_conv_descriptor_dimension (tree desc, tree dim)
&& TREE_CODE (TREE_TYPE (field)) == ARRAY_TYPE
&& TREE_CODE (TREE_TYPE (TREE_TYPE (field))) == RECORD_TYPE);
- tmp = build3 (COMPONENT_REF, TREE_TYPE (field), desc, field, NULL_TREE);
+ tmp = fold_build3 (COMPONENT_REF, TREE_TYPE (field),
+ desc, field, NULL_TREE);
tmp = gfc_build_array_ref (tmp, dim, NULL);
return tmp;
}
@@ -260,7 +263,8 @@ gfc_conv_descriptor_stride (tree desc, tree dim)
field = gfc_advance_chain (field, STRIDE_SUBFIELD);
gcc_assert (field != NULL_TREE && TREE_TYPE (field) == gfc_array_index_type);
- tmp = build3 (COMPONENT_REF, TREE_TYPE (field), tmp, field, NULL_TREE);
+ tmp = fold_build3 (COMPONENT_REF, TREE_TYPE (field),
+ tmp, field, NULL_TREE);
return tmp;
}
@@ -275,7 +279,8 @@ gfc_conv_descriptor_lbound (tree desc, tree dim)
field = gfc_advance_chain (field, LBOUND_SUBFIELD);
gcc_assert (field != NULL_TREE && TREE_TYPE (field) == gfc_array_index_type);
- tmp = build3 (COMPONENT_REF, TREE_TYPE (field), tmp, field, NULL_TREE);
+ tmp = fold_build3 (COMPONENT_REF, TREE_TYPE (field),
+ tmp, field, NULL_TREE);
return tmp;
}
@@ -290,7 +295,8 @@ gfc_conv_descriptor_ubound (tree desc, tree dim)
field = gfc_advance_chain (field, UBOUND_SUBFIELD);
gcc_assert (field != NULL_TREE && TREE_TYPE (field) == gfc_array_index_type);
- tmp = build3 (COMPONENT_REF, TREE_TYPE (field), tmp, field, NULL_TREE);
+ tmp = fold_build3 (COMPONENT_REF, TREE_TYPE (field),
+ tmp, field, NULL_TREE);
return tmp;
}
@@ -641,9 +647,10 @@ gfc_trans_create_temp_array (stmtblock_t * pre, stmtblock_t * post,
{
/* For a callee allocated array express the loop bounds in terms
of the descriptor fields. */
- tmp = build2 (MINUS_EXPR, gfc_array_index_type,
- gfc_conv_descriptor_ubound (desc, gfc_rank_cst[n]),
- gfc_conv_descriptor_lbound (desc, gfc_rank_cst[n]));
+ tmp =
+ fold_build2 (MINUS_EXPR, gfc_array_index_type,
+ gfc_conv_descriptor_ubound (desc, gfc_rank_cst[n]),
+ gfc_conv_descriptor_lbound (desc, gfc_rank_cst[n]));
loop->to[n] = tmp;
size = NULL_TREE;
continue;
@@ -774,9 +781,10 @@ gfc_conv_array_transpose (gfc_se * se, gfc_expr * expr)
if (!loop->to[n])
{
gcc_assert (integer_zerop (loop->from[n]));
- loop->to[n] = build2 (MINUS_EXPR, gfc_array_index_type,
- gfc_conv_descriptor_ubound (dest, dest_index),
- gfc_conv_descriptor_lbound (dest, dest_index));
+ loop->to[n] =
+ fold_build2 (MINUS_EXPR, gfc_array_index_type,
+ gfc_conv_descriptor_ubound (dest, dest_index),
+ gfc_conv_descriptor_lbound (dest, dest_index));
}
}
@@ -835,7 +843,7 @@ gfc_grow_array (stmtblock_t * pblock, tree desc, tree extra)
ubound = gfc_conv_descriptor_ubound (desc, gfc_rank_cst[0]);
/* Add EXTRA to the upper bound. */
- tmp = build2 (PLUS_EXPR, gfc_array_index_type, ubound, extra);
+ tmp = fold_build2 (PLUS_EXPR, gfc_array_index_type, ubound, extra);
gfc_add_modify_expr (pblock, ubound, tmp);
/* Get the value of the current data pointer. */
@@ -843,9 +851,11 @@ gfc_grow_array (stmtblock_t * pblock, tree desc, tree extra)
/* Calculate the new array size. */
size = TYPE_SIZE_UNIT (gfc_get_element_type (TREE_TYPE (desc)));
- tmp = build2 (PLUS_EXPR, gfc_array_index_type, ubound, gfc_index_one_node);
- arg1 = build2 (MULT_EXPR, size_type_node, fold_convert (size_type_node, tmp),
- fold_convert (size_type_node, size));
+ tmp = fold_build2 (PLUS_EXPR, gfc_array_index_type,
+ ubound, gfc_index_one_node);
+ arg1 = fold_build2 (MULT_EXPR, size_type_node,
+ fold_convert (size_type_node, tmp),
+ fold_convert (size_type_node, size));
/* Call the realloc() function. */
tmp = gfc_call_realloc (pblock, arg0, arg1);
@@ -1084,7 +1094,8 @@ gfc_trans_array_constructor_subarray (stmtblock_t * pblock,
gcc_assert (se.ss == gfc_ss_terminator);
/* Increment the offset. */
- tmp = build2 (PLUS_EXPR, gfc_array_index_type, *poffset, gfc_index_one_node);
+ tmp = fold_build2 (PLUS_EXPR, gfc_array_index_type,
+ *poffset, gfc_index_one_node);
gfc_add_modify_expr (&body, *poffset, tmp);
/* Finish the loop. */
@@ -1317,10 +1328,10 @@ gfc_trans_array_constructor_value (stmtblock_t * pblock, tree type,
tmp = fold_build2 (GT_EXPR, boolean_type_node, step,
build_int_cst (TREE_TYPE (step), 0));
cond = fold_build3 (COND_EXPR, boolean_type_node, tmp,
- build2 (GT_EXPR, boolean_type_node,
- loopvar, end),
- build2 (LT_EXPR, boolean_type_node,
- loopvar, end));
+ fold_build2 (GT_EXPR, boolean_type_node,
+ loopvar, end),
+ fold_build2 (LT_EXPR, boolean_type_node,
+ loopvar, end));
tmp = build1_v (GOTO_EXPR, exit_label);
TREE_USED (exit_label) = 1;
tmp = build3_v (COND_EXPR, cond, tmp, build_empty_stmt ());
@@ -1330,7 +1341,7 @@ gfc_trans_array_constructor_value (stmtblock_t * pblock, tree type,
gfc_add_expr_to_block (&body, loopbody);
/* Increase loop variable by step. */
- tmp = build2 (PLUS_EXPR, TREE_TYPE (loopvar), loopvar, step);
+ tmp = fold_build2 (PLUS_EXPR, TREE_TYPE (loopvar), loopvar, step);
gfc_add_modify_expr (&body, loopvar, tmp);
/* Finish the loop. */
@@ -2568,7 +2579,8 @@ gfc_trans_scalarized_loop_end (gfc_loopinfo * loop, int n,
gfc_init_block (&block);
/* The exit condition. */
- cond = build2 (GT_EXPR, boolean_type_node, loop->loopvar[n], loop->to[n]);
+ cond = fold_build2 (GT_EXPR, boolean_type_node,
+ loop->loopvar[n], loop->to[n]);
tmp = build1_v (GOTO_EXPR, exit_label);
TREE_USED (exit_label) = 1;
tmp = build3_v (COND_EXPR, cond, tmp, build_empty_stmt ());
@@ -2578,8 +2590,8 @@ gfc_trans_scalarized_loop_end (gfc_loopinfo * loop, int n,
gfc_add_expr_to_block (&block, loopbody);
/* Increment the loopvar. */
- tmp = build2 (PLUS_EXPR, gfc_array_index_type,
- loop->loopvar[n], gfc_index_one_node);
+ tmp = fold_build2 (PLUS_EXPR, gfc_array_index_type,
+ loop->loopvar[n], gfc_index_one_node);
gfc_add_modify_expr (&block, loop->loopvar[n], tmp);
/* Build the loop. */
@@ -3563,8 +3575,8 @@ gfc_array_init_size (tree descriptor, int rank, tree * poffset,
offset = fold_build2 (MINUS_EXPR, gfc_array_index_type, offset, tmp);
/* Start the calculation for the size of this dimension. */
- size = build2 (MINUS_EXPR, gfc_array_index_type,
- gfc_index_one_node, se.expr);
+ size = fold_build2 (MINUS_EXPR, gfc_array_index_type,
+ gfc_index_one_node, se.expr);
/* Set upper bound. */
gfc_init_se (&se, NULL);
@@ -3700,7 +3712,7 @@ gfc_array_allocate (gfc_se * se, gfc_expr * expr, tree pstat)
tmp = gfc_allocate_array_with_status (&se->pre, pointer, size, pstat);
else
tmp = gfc_allocate_with_status (&se->pre, size, pstat);
- tmp = build2 (MODIFY_EXPR, void_type_node, pointer, tmp);
+ tmp = fold_build2 (MODIFY_EXPR, void_type_node, pointer, tmp);
gfc_add_expr_to_block (&se->pre, tmp);
tmp = gfc_conv_descriptor_offset (se->expr);
@@ -3739,8 +3751,8 @@ gfc_array_deallocate (tree descriptor, tree pstat)
gfc_add_expr_to_block (&block, tmp);
/* Zero the data pointer. */
- tmp = build2 (MODIFY_EXPR, void_type_node,
- var, build_int_cst (TREE_TYPE (var), 0));
+ tmp = fold_build2 (MODIFY_EXPR, void_type_node,
+ var, build_int_cst (TREE_TYPE (var), 0));
gfc_add_expr_to_block (&block, tmp);
return gfc_finish_block (&block);
@@ -3825,7 +3837,7 @@ gfc_conv_array_initializer (tree type, gfc_expr * expr)
else
tmp1 = gfc_conv_mpz_to_tree (c->n.offset, gfc_index_integer_kind);
- range = build2 (RANGE_EXPR, integer_type_node, tmp1, tmp2);
+ range = fold_build2 (RANGE_EXPR, integer_type_node, tmp1, tmp2);
}
else
range = NULL;
@@ -3937,10 +3949,10 @@ gfc_trans_array_bounds (tree type, gfc_symbol * sym, tree * poffset,
/* Make sure that negative size arrays are translated
to being zero size. */
- tmp = build2 (GE_EXPR, boolean_type_node,
- stride, gfc_index_zero_node);
- tmp = build3 (COND_EXPR, gfc_array_index_type, tmp,
- stride, gfc_index_zero_node);
+ tmp = fold_build2 (GE_EXPR, boolean_type_node,
+ stride, gfc_index_zero_node);
+ tmp = fold_build3 (COND_EXPR, gfc_array_index_type, tmp,
+ stride, gfc_index_zero_node);
gfc_add_modify_expr (pblock, stride, tmp);
}
@@ -3988,7 +4000,7 @@ gfc_trans_auto_array_allocation (tree decl, gfc_symbol * sym, tree fnbody)
/* Emit a DECL_EXPR for this variable, which will cause the
gimplifier to allocate storage, and all that good stuff. */
- tmp = build1 (DECL_EXPR, TREE_TYPE (decl), decl);
+ tmp = fold_build1 (DECL_EXPR, TREE_TYPE (decl), decl);
gfc_add_expr_to_block (&block, tmp);
}
@@ -4195,9 +4207,10 @@ gfc_trans_dummy_array_bias (gfc_symbol * sym, tree tmpdesc, tree body)
stride = gfc_conv_descriptor_stride (dumdesc, gfc_rank_cst[0]);
stride = gfc_evaluate_now (stride, &block);
- tmp = build2 (EQ_EXPR, boolean_type_node, stride, gfc_index_zero_node);
- tmp = build3 (COND_EXPR, gfc_array_index_type, tmp,
- gfc_index_one_node, stride);
+ tmp = fold_build2 (EQ_EXPR, boolean_type_node,
+ stride, gfc_index_zero_node);
+ tmp = fold_build3 (COND_EXPR, gfc_array_index_type, tmp,
+ gfc_index_one_node, stride);
stride = GFC_TYPE_ARRAY_STRIDE (type, 0);
gfc_add_modify_expr (&block, stride, tmp);
@@ -4225,8 +4238,8 @@ gfc_trans_dummy_array_bias (gfc_symbol * sym, tree tmpdesc, tree body)
if (stmt_packed != NULL_TREE && stmt_unpacked != NULL_TREE)
{
/* Don't repack unknown shape arrays when the first stride is 1. */
- tmp = build3 (COND_EXPR, TREE_TYPE (stmt_packed), partial,
- stmt_packed, stmt_unpacked);
+ tmp = fold_build3 (COND_EXPR, TREE_TYPE (stmt_packed),
+ partial, stmt_packed, stmt_unpacked);
}
else
tmp = stmt_packed != NULL_TREE ? stmt_packed : stmt_unpacked;
@@ -4282,8 +4295,8 @@ gfc_trans_dummy_array_bias (gfc_symbol * sym, tree tmpdesc, tree body)
tmp = fold_build2 (MINUS_EXPR, gfc_array_index_type,
ubound, lbound);
- stride2 = build2 (MINUS_EXPR, gfc_array_index_type,
- dubound, dlbound);
+ stride2 = fold_build2 (MINUS_EXPR, gfc_array_index_type,
+ dubound, dlbound);
tmp = fold_build2 (NE_EXPR, gfc_array_index_type, tmp, stride2);
asprintf (&msg, "%s for dimension %d of array '%s'",
gfc_msg_bounds, n+1, sym->name);
@@ -4295,7 +4308,8 @@ gfc_trans_dummy_array_bias (gfc_symbol * sym, tree tmpdesc, tree body)
{
/* For assumed shape arrays move the upper bound by the same amount
as the lower bound. */
- tmp = build2 (MINUS_EXPR, gfc_array_index_type, dubound, dlbound);
+ tmp = fold_build2 (MINUS_EXPR, gfc_array_index_type,
+ dubound, dlbound);
tmp = fold_build2 (PLUS_EXPR, gfc_array_index_type, tmp, lbound);
gfc_add_modify_expr (&block, ubound, tmp);
}
@@ -4333,8 +4347,8 @@ gfc_trans_dummy_array_bias (gfc_symbol * sym, tree tmpdesc, tree body)
/* Assign the stride. */
if (stmt_packed != NULL_TREE && stmt_unpacked != NULL_TREE)
- tmp = build3 (COND_EXPR, gfc_array_index_type, partial,
- stmt_unpacked, stmt_packed);
+ tmp = fold_build3 (COND_EXPR, gfc_array_index_type, partial,
+ stmt_unpacked, stmt_packed);
else
tmp = (stmt_packed != NULL_TREE) ? stmt_packed : stmt_unpacked;
gfc_add_modify_expr (&block, stride, tmp);
@@ -4404,7 +4418,7 @@ gfc_trans_dummy_array_bias (gfc_symbol * sym, tree tmpdesc, tree body)
/* Only do the cleanup if the array was repacked. */
tmp = build_fold_indirect_ref (dumdesc);
tmp = gfc_conv_descriptor_data_get (tmp);
- tmp = build2 (NE_EXPR, boolean_type_node, tmp, tmpdesc);
+ tmp = fold_build2 (NE_EXPR, boolean_type_node, tmp, tmpdesc);
stmt = build3_v (COND_EXPR, tmp, stmt, build_empty_stmt ());
if (optional_arg)
@@ -4468,7 +4482,8 @@ gfc_get_dataptr_offset (stmtblock_t *block, tree parm, tree desc, tree offset,
case REF_COMPONENT:
field = ref->u.c.component->backend_decl;
gcc_assert (field && TREE_CODE (field) == FIELD_DECL);
- tmp = build3 (COMPONENT_REF, TREE_TYPE (field), tmp, field, NULL_TREE);
+ tmp = fold_build3 (COMPONENT_REF, TREE_TYPE (field),
+ tmp, field, NULL_TREE);
break;
case REF_SUBSTRING:
@@ -5151,8 +5166,8 @@ gfc_conv_array_parameter (gfc_se * se, gfc_expr * expr, gfc_ss * ss, int g77)
loop cleanup code. */
tmp = build_fold_indirect_ref (desc);
tmp = gfc_conv_array_data (tmp);
- tmp = build2 (NE_EXPR, boolean_type_node,
- fold_convert (TREE_TYPE (tmp), ptr), tmp);
+ tmp = fold_build2 (NE_EXPR, boolean_type_node,
+ fold_convert (TREE_TYPE (tmp), ptr), tmp);
tmp = build3_v (COND_EXPR, tmp, stmt, build_empty_stmt ());
gfc_add_expr_to_block (&block, tmp);
@@ -5185,8 +5200,8 @@ gfc_trans_dealloc_allocated (tree descriptor)
gfc_add_expr_to_block (&block, tmp);
/* Zero the data pointer. */
- tmp = build2 (MODIFY_EXPR, void_type_node,
- var, build_int_cst (TREE_TYPE (var), 0));
+ tmp = fold_build2 (MODIFY_EXPR, void_type_node,
+ var, build_int_cst (TREE_TYPE (var), 0));
gfc_add_expr_to_block (&block, tmp);
return gfc_finish_block (&block);
@@ -5204,13 +5219,13 @@ get_full_array_size (stmtblock_t *block, tree decl, int rank)
idx = gfc_rank_cst[rank - 1];
nelems = gfc_conv_descriptor_ubound (decl, idx);
tmp = gfc_conv_descriptor_lbound (decl, idx);
- tmp = build2 (MINUS_EXPR, gfc_array_index_type, nelems, tmp);
- tmp = build2 (PLUS_EXPR, gfc_array_index_type,
- tmp, gfc_index_one_node);
+ tmp = fold_build2 (MINUS_EXPR, gfc_array_index_type, nelems, tmp);
+ tmp = fold_build2 (PLUS_EXPR, gfc_array_index_type,
+ tmp, gfc_index_one_node);
tmp = gfc_evaluate_now (tmp, block);
nelems = gfc_conv_descriptor_stride (decl, idx);
- tmp = build2 (MULT_EXPR, gfc_array_index_type, nelems, tmp);
+ tmp = fold_build2 (MULT_EXPR, gfc_array_index_type, nelems, tmp);
return gfc_evaluate_now (tmp, block);
}
@@ -5256,8 +5271,8 @@ gfc_duplicate_allocatable(tree dest, tree src, tree type, int rank)
the allocate and copy. */
null_cond = gfc_conv_descriptor_data_get (src);
null_cond = convert (pvoid_type_node, null_cond);
- null_cond = build2 (NE_EXPR, boolean_type_node, null_cond,
- null_pointer_node);
+ null_cond = fold_build2 (NE_EXPR, boolean_type_node,
+ null_cond, null_pointer_node);
return build3_v (COND_EXPR, null_cond, tmp, null_data);
}
@@ -5307,12 +5322,12 @@ structure_alloc_comps (gfc_symbol * der_type, tree decl,
is a full array reference, we only need the descriptor
information from dimension = rank. */
tmp = get_full_array_size (&fnblock, decl, rank);
- tmp = build2 (MINUS_EXPR, gfc_array_index_type,
- tmp, gfc_index_one_node);
+ tmp = fold_build2 (MINUS_EXPR, gfc_array_index_type,
+ tmp, gfc_index_one_node);
null_cond = gfc_conv_descriptor_data_get (decl);
- null_cond = build2 (NE_EXPR, boolean_type_node, null_cond,
- build_int_cst (TREE_TYPE (null_cond), 0));
+ null_cond = fold_build2 (NE_EXPR, boolean_type_node, null_cond,
+ build_int_cst (TREE_TYPE (null_cond), 0));
}
else
{
@@ -5376,7 +5391,8 @@ structure_alloc_comps (gfc_symbol * der_type, tree decl,
components. */
if (cmp_has_alloc_comps && !c->pointer)
{
- comp = build3 (COMPONENT_REF, ctype, decl, cdecl, NULL_TREE);
+ comp = fold_build3 (COMPONENT_REF, ctype,
+ decl, cdecl, NULL_TREE);
rank = c->as ? c->as->rank : 0;
tmp = structure_alloc_comps (c->ts.derived, comp, NULL_TREE,
rank, purpose);
@@ -5385,7 +5401,8 @@ structure_alloc_comps (gfc_symbol * der_type, tree decl,
if (c->allocatable)
{
- comp = build3 (COMPONENT_REF, ctype, decl, cdecl, NULL_TREE);
+ comp = fold_build3 (COMPONENT_REF, ctype,
+ decl, cdecl, NULL_TREE);
tmp = gfc_trans_dealloc_allocated (comp);
gfc_add_expr_to_block (&fnblock, tmp);
}
@@ -5396,12 +5413,14 @@ structure_alloc_comps (gfc_symbol * der_type, tree decl,
continue;
else if (c->allocatable)
{
- comp = build3 (COMPONENT_REF, ctype, decl, cdecl, NULL_TREE);
+ comp = fold_build3 (COMPONENT_REF, ctype,
+ decl, cdecl, NULL_TREE);
gfc_conv_descriptor_data_set (&fnblock, comp, null_pointer_node);
}
else if (cmp_has_alloc_comps)
{
- comp = build3 (COMPONENT_REF, ctype, decl, cdecl, NULL_TREE);
+ comp = fold_build3 (COMPONENT_REF, ctype,
+ decl, cdecl, NULL_TREE);
rank = c->as ? c->as->rank : 0;
tmp = structure_alloc_comps (c->ts.derived, comp, NULL_TREE,
rank, purpose);
@@ -5414,8 +5433,8 @@ structure_alloc_comps (gfc_symbol * der_type, tree decl,
continue;
/* We need source and destination components. */
- comp = build3 (COMPONENT_REF, ctype, decl, cdecl, NULL_TREE);
- dcmp = build3 (COMPONENT_REF, ctype, dest, cdecl, NULL_TREE);
+ comp = fold_build3 (COMPONENT_REF, ctype, decl, cdecl, NULL_TREE);
+ dcmp = fold_build3 (COMPONENT_REF, ctype, dest, cdecl, NULL_TREE);
dcmp = fold_convert (TREE_TYPE (comp), dcmp);
if (c->allocatable && !cmp_has_alloc_comps)
diff --git a/gcc/fortran/trans-array.h b/gcc/fortran/trans-array.h
index 98b6fb1a349..511f04bcbbb 100644
--- a/gcc/fortran/trans-array.h
+++ b/gcc/fortran/trans-array.h
@@ -1,6 +1,6 @@
/* Header for array handling functions
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software
- Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008
+ Free Software Foundation, Inc.
Contributed by Paul Brook
This file is part of GCC.
diff --git a/gcc/fortran/trans-common.c b/gcc/fortran/trans-common.c
index a8e1126bdf2..7086a6ceabd 100644
--- a/gcc/fortran/trans-common.c
+++ b/gcc/fortran/trans-common.c
@@ -1,5 +1,5 @@
/* Common block and equivalence list handling
- Copyright (C) 2000, 2003, 2004, 2005, 2006, 2007
+ Copyright (C) 2000, 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Canqun Yang <canqun@nudt.edu.cn>
@@ -693,8 +693,8 @@ create_common (gfc_common_head *com, segment_info *head, bool saw_equiv)
gfc_add_decl_to_function (var_decl);
SET_DECL_VALUE_EXPR (var_decl,
- build3 (COMPONENT_REF, TREE_TYPE (s->field),
- decl, s->field, NULL_TREE));
+ fold_build3 (COMPONENT_REF, TREE_TYPE (s->field),
+ decl, s->field, NULL_TREE));
DECL_HAS_VALUE_EXPR_P (var_decl) = 1;
GFC_DECL_COMMON_OR_EQUIV (var_decl) = 1;
diff --git a/gcc/fortran/trans-const.c b/gcc/fortran/trans-const.c
index 92e83762fc2..37251eff6db 100644
--- a/gcc/fortran/trans-const.c
+++ b/gcc/fortran/trans-const.c
@@ -1,5 +1,5 @@
/* Translation of constants
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software
+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software
Foundation, Inc.
Contributed by Paul Brook
@@ -82,14 +82,22 @@ gfc_build_string_const (int length, const char *s)
}
/* Build a Fortran character constant from a zero-terminated string.
- Since this is mainly used for error messages, the string will get
- translated. */
+ There a two version of this function, one that translates the string
+ and one that doesn't. */
tree
-gfc_build_cstring_const (const char *msgid)
+gfc_build_cstring_const (const char *string)
{
- return gfc_build_string_const (strlen (msgid) + 1, _(msgid));
+ return gfc_build_string_const (strlen (string) + 1, string);
}
+tree
+gfc_build_localized_cstring_const (const char *msgid)
+{
+ const char *localized = _(msgid);
+ return gfc_build_string_const (strlen (localized) + 1, localized);
+}
+
+
/* Return a string constant with the given length. Used for static
initializers. The constant will be padded or truncated to match
length. */
@@ -215,38 +223,38 @@ gfc_conv_constant_to_tree (gfc_expr * expr)
{
case BT_INTEGER:
if (expr->representation.string)
- return build1 (VIEW_CONVERT_EXPR,
- gfc_get_int_type (expr->ts.kind),
- gfc_build_string_const (expr->representation.length,
- expr->representation.string));
+ return fold_build1 (VIEW_CONVERT_EXPR,
+ gfc_get_int_type (expr->ts.kind),
+ gfc_build_string_const (expr->representation.length,
+ expr->representation.string));
else
return gfc_conv_mpz_to_tree (expr->value.integer, expr->ts.kind);
case BT_REAL:
if (expr->representation.string)
- return build1 (VIEW_CONVERT_EXPR,
- gfc_get_real_type (expr->ts.kind),
- gfc_build_string_const (expr->representation.length,
- expr->representation.string));
+ return fold_build1 (VIEW_CONVERT_EXPR,
+ gfc_get_real_type (expr->ts.kind),
+ gfc_build_string_const (expr->representation.length,
+ expr->representation.string));
else
return gfc_conv_mpfr_to_tree (expr->value.real, expr->ts.kind);
case BT_LOGICAL:
if (expr->representation.string)
- return build1 (VIEW_CONVERT_EXPR,
- gfc_get_logical_type (expr->ts.kind),
- gfc_build_string_const (expr->representation.length,
- expr->representation.string));
+ return fold_build1 (VIEW_CONVERT_EXPR,
+ gfc_get_logical_type (expr->ts.kind),
+ gfc_build_string_const (expr->representation.length,
+ expr->representation.string));
else
return build_int_cst (gfc_get_logical_type (expr->ts.kind),
expr->value.logical);
case BT_COMPLEX:
if (expr->representation.string)
- return build1 (VIEW_CONVERT_EXPR,
- gfc_get_complex_type (expr->ts.kind),
- gfc_build_string_const (expr->representation.length,
- expr->representation.string));
+ return fold_build1 (VIEW_CONVERT_EXPR,
+ gfc_get_complex_type (expr->ts.kind),
+ gfc_build_string_const (expr->representation.length,
+ expr->representation.string));
else
{
tree real = gfc_conv_mpfr_to_tree (expr->value.complex.r,
diff --git a/gcc/fortran/trans-const.h b/gcc/fortran/trans-const.h
index 6633f869531..808a1a5d6af 100644
--- a/gcc/fortran/trans-const.h
+++ b/gcc/fortran/trans-const.h
@@ -1,5 +1,5 @@
/* Header for code constant translation functions
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007
+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Paul Brook
@@ -38,6 +38,7 @@ void gfc_conv_constant (gfc_se *, gfc_expr *);
tree gfc_build_string_const (int, const char *);
tree gfc_build_cstring_const (const char *);
+tree gfc_build_localized_cstring_const (const char *);
/* Translate a string constant for a static initializer. */
tree gfc_conv_string_init (tree, gfc_expr *);
diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c
index 79a3e8b8c31..52393b46bf2 100644
--- a/gcc/fortran/trans-decl.c
+++ b/gcc/fortran/trans-decl.c
@@ -1,5 +1,5 @@
/* Backend function setup
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software
+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software
Foundation, Inc.
Contributed by Paul Brook
@@ -99,10 +99,6 @@ tree gfor_fndecl_associated;
trans-intrinsic.c. */
gfc_powdecl_list gfor_fndecl_math_powi[4][3];
-tree gfor_fndecl_math_cpowf;
-tree gfor_fndecl_math_cpow;
-tree gfor_fndecl_math_cpowl10;
-tree gfor_fndecl_math_cpowl16;
tree gfor_fndecl_math_ishftc4;
tree gfor_fndecl_math_ishftc8;
tree gfor_fndecl_math_ishftc16;
@@ -693,8 +689,8 @@ gfc_build_qualified_array (tree decl, gfc_symbol * sym)
{
tree size, range;
- size = build2 (MINUS_EXPR, gfc_array_index_type,
- GFC_TYPE_ARRAY_SIZE (type), gfc_index_one_node);
+ size = fold_build2 (MINUS_EXPR, gfc_array_index_type,
+ GFC_TYPE_ARRAY_SIZE (type), gfc_index_one_node);
range = build_range_type (gfc_array_index_type, gfc_index_zero_node,
size);
TYPE_DOMAIN (type) = range;
@@ -1733,9 +1729,8 @@ build_entry_thunks (gfc_namespace * ns)
pushdecl (union_decl);
DECL_CONTEXT (union_decl) = current_function_decl;
- tmp = build2 (MODIFY_EXPR,
- TREE_TYPE (union_decl),
- union_decl, tmp);
+ tmp = fold_build2 (MODIFY_EXPR, TREE_TYPE (union_decl),
+ union_decl, tmp);
gfc_add_expr_to_block (&body, tmp);
for (field = TYPE_FIELDS (TREE_TYPE (union_decl));
@@ -1744,19 +1739,19 @@ build_entry_thunks (gfc_namespace * ns)
thunk_sym->result->name) == 0)
break;
gcc_assert (field != NULL_TREE);
- tmp = build3 (COMPONENT_REF, TREE_TYPE (field), union_decl, field,
- NULL_TREE);
- tmp = build2 (MODIFY_EXPR,
- TREE_TYPE (DECL_RESULT (current_function_decl)),
- DECL_RESULT (current_function_decl), tmp);
+ tmp = fold_build3 (COMPONENT_REF, TREE_TYPE (field),
+ union_decl, field, NULL_TREE);
+ tmp = fold_build2 (MODIFY_EXPR,
+ TREE_TYPE (DECL_RESULT (current_function_decl)),
+ DECL_RESULT (current_function_decl), tmp);
tmp = build1_v (RETURN_EXPR, tmp);
}
else if (TREE_TYPE (DECL_RESULT (current_function_decl))
!= void_type_node)
{
- tmp = build2 (MODIFY_EXPR,
- TREE_TYPE (DECL_RESULT (current_function_decl)),
- DECL_RESULT (current_function_decl), tmp);
+ tmp = fold_build2 (MODIFY_EXPR,
+ TREE_TYPE (DECL_RESULT (current_function_decl)),
+ DECL_RESULT (current_function_decl), tmp);
tmp = build1_v (RETURN_EXPR, tmp);
}
gfc_add_expr_to_block (&body, tmp);
@@ -1878,8 +1873,8 @@ gfc_get_fake_result_decl (gfc_symbol * sym, int parent_flag)
break;
gcc_assert (field != NULL_TREE);
- decl = build3 (COMPONENT_REF, TREE_TYPE (field), decl, field,
- NULL_TREE);
+ decl = fold_build3 (COMPONENT_REF, TREE_TYPE (field),
+ decl, field, NULL_TREE);
}
var = create_tmp_var_raw (TREE_TYPE (decl), sym->name);
@@ -2024,10 +2019,6 @@ gfc_build_intrinsic_function_decls (void)
tree gfc_real8_type_node = gfc_get_real_type (8);
tree gfc_real10_type_node = gfc_get_real_type (10);
tree gfc_real16_type_node = gfc_get_real_type (16);
- tree gfc_complex4_type_node = gfc_get_complex_type (4);
- tree gfc_complex8_type_node = gfc_get_complex_type (8);
- tree gfc_complex10_type_node = gfc_get_complex_type (10);
- tree gfc_complex16_type_node = gfc_get_complex_type (16);
/* String functions. */
gfor_fndecl_compare_string =
@@ -2195,25 +2186,6 @@ gfc_build_intrinsic_function_decls (void)
#undef NRKINDS
}
- gfor_fndecl_math_cpowf =
- gfc_build_library_function_decl (get_identifier ("cpowf"),
- gfc_complex4_type_node,
- 1, gfc_complex4_type_node);
- gfor_fndecl_math_cpow =
- gfc_build_library_function_decl (get_identifier ("cpow"),
- gfc_complex8_type_node,
- 1, gfc_complex8_type_node);
- if (gfc_complex10_type_node)
- gfor_fndecl_math_cpowl10 =
- gfc_build_library_function_decl (get_identifier ("cpowl"),
- gfc_complex10_type_node, 1,
- gfc_complex10_type_node);
- if (gfc_complex16_type_node)
- gfor_fndecl_math_cpowl16 =
- gfc_build_library_function_decl (get_identifier ("cpowl"),
- gfc_complex16_type_node, 1,
- gfc_complex16_type_node);
-
gfor_fndecl_math_ishftc4 =
gfc_build_library_function_decl (get_identifier (PREFIX("ishftc4")),
gfc_int4_type_node,
@@ -2457,7 +2429,7 @@ gfc_trans_auto_character_variable (gfc_symbol * sym, tree fnbody)
/* Emit a DECL_EXPR for this variable, which will cause the
gimplifier to allocate storage, and all that good stuff. */
- tmp = build1 (DECL_EXPR, TREE_TYPE (decl), decl);
+ tmp = fold_build1 (DECL_EXPR, TREE_TYPE (decl), decl);
gfc_add_expr_to_block (&body, tmp);
gfc_add_expr_to_block (&body, fnbody);
@@ -3345,8 +3317,8 @@ gfc_generate_function_code (gfc_namespace * ns)
types may be different for scalar default REAL functions
with -ff2c, therefore we have to convert. */
tmp = convert (TREE_TYPE (DECL_RESULT (fndecl)), result);
- tmp = build2 (MODIFY_EXPR, TREE_TYPE (tmp),
- DECL_RESULT (fndecl), tmp);
+ tmp = fold_build2 (MODIFY_EXPR, TREE_TYPE (tmp),
+ DECL_RESULT (fndecl), tmp);
tmp = build1_v (RETURN_EXPR, tmp);
gfc_add_expr_to_block (&block, tmp);
}
diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c
index 4866d8c9658..471f168357a 100644
--- a/gcc/fortran/trans-expr.c
+++ b/gcc/fortran/trans-expr.c
@@ -1,5 +1,5 @@
/* Expression translation
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software
+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software
Foundation, Inc.
Contributed by Paul Brook <paul@nowt.org>
and Steven Bosscher <s.bosscher@student.tudelft.nl>
@@ -139,8 +139,8 @@ gfc_conv_expr_present (gfc_symbol * sym)
|| GFC_ARRAY_TYPE_P (TREE_TYPE (decl)));
decl = GFC_DECL_SAVED_DESCRIPTOR (decl);
}
- return build2 (NE_EXPR, boolean_type_node, decl,
- fold_convert (TREE_TYPE (decl), null_pointer_node));
+ return fold_build2 (NE_EXPR, boolean_type_node, decl,
+ fold_convert (TREE_TYPE (decl), null_pointer_node));
}
@@ -176,8 +176,8 @@ gfc_conv_missing_dummy (gfc_se * se, gfc_expr * arg, gfc_typespec ts, int kind)
if (ts.type == BT_CHARACTER)
{
tmp = build_int_cst (gfc_charlen_type_node, 0);
- tmp = build3 (COND_EXPR, gfc_charlen_type_node, present,
- se->string_length, tmp);
+ tmp = fold_build3 (COND_EXPR, gfc_charlen_type_node,
+ present, se->string_length, tmp);
tmp = gfc_evaluate_now (tmp, &se->pre);
se->string_length = tmp;
}
@@ -378,7 +378,7 @@ gfc_conv_component_ref (gfc_se * se, gfc_ref * ref)
field = c->backend_decl;
gcc_assert (TREE_CODE (field) == FIELD_DECL);
decl = se->expr;
- tmp = build3 (COMPONENT_REF, TREE_TYPE (field), decl, field, NULL_TREE);
+ tmp = fold_build3 (COMPONENT_REF, TREE_TYPE (field), decl, field, NULL_TREE);
se->expr = tmp;
@@ -607,10 +607,10 @@ gfc_conv_unary_op (enum tree_code code, gfc_se * se, gfc_expr * expr)
We must convert it to a compare to 0 (e.g. EQ_EXPR (op1, 0)).
All other unary operators have an equivalent GIMPLE unary operator. */
if (code == TRUTH_NOT_EXPR)
- se->expr = build2 (EQ_EXPR, type, operand.expr,
- build_int_cst (type, 0));
+ se->expr = fold_build2 (EQ_EXPR, type, operand.expr,
+ build_int_cst (type, 0));
else
- se->expr = build1 (code, type, operand.expr);
+ se->expr = fold_build1 (code, type, operand.expr);
}
@@ -748,25 +748,27 @@ gfc_conv_cst_int_power (gfc_se * se, tree lhs, tree rhs)
/* If rhs < 0 and lhs is an integer, the result is -1, 0 or 1. */
if ((sgn == -1) && (TREE_CODE (type) == INTEGER_TYPE))
{
- tmp = build2 (EQ_EXPR, boolean_type_node, lhs,
- build_int_cst (TREE_TYPE (lhs), -1));
- cond = build2 (EQ_EXPR, boolean_type_node, lhs,
- build_int_cst (TREE_TYPE (lhs), 1));
+ tmp = fold_build2 (EQ_EXPR, boolean_type_node,
+ lhs, build_int_cst (TREE_TYPE (lhs), -1));
+ cond = fold_build2 (EQ_EXPR, boolean_type_node,
+ lhs, build_int_cst (TREE_TYPE (lhs), 1));
/* If rhs is even,
result = (lhs == 1 || lhs == -1) ? 1 : 0. */
if ((n & 1) == 0)
{
- tmp = build2 (TRUTH_OR_EXPR, boolean_type_node, tmp, cond);
- se->expr = build3 (COND_EXPR, type, tmp, build_int_cst (type, 1),
- build_int_cst (type, 0));
+ tmp = fold_build2 (TRUTH_OR_EXPR, boolean_type_node, tmp, cond);
+ se->expr = fold_build3 (COND_EXPR, type,
+ tmp, build_int_cst (type, 1),
+ build_int_cst (type, 0));
return 1;
}
/* If rhs is odd,
result = (lhs == 1) ? 1 : (lhs == -1) ? -1 : 0. */
- tmp = build3 (COND_EXPR, type, tmp, build_int_cst (type, -1),
- build_int_cst (type, 0));
- se->expr = build3 (COND_EXPR, type, cond, build_int_cst (type, 1), tmp);
+ tmp = fold_build3 (COND_EXPR, type, tmp, build_int_cst (type, -1),
+ build_int_cst (type, 0));
+ se->expr = fold_build3 (COND_EXPR, type,
+ cond, build_int_cst (type, 1), tmp);
return 1;
}
@@ -775,7 +777,7 @@ gfc_conv_cst_int_power (gfc_se * se, tree lhs, tree rhs)
if (sgn == -1)
{
tmp = gfc_build_const (type, integer_one_node);
- vartmp[1] = build2 (RDIV_EXPR, type, tmp, vartmp[1]);
+ vartmp[1] = fold_build2 (RDIV_EXPR, type, tmp, vartmp[1]);
}
se->expr = gfc_conv_powi (se, n, vartmp);
@@ -935,16 +937,14 @@ gfc_conv_power_op (gfc_se * se, gfc_expr * expr)
switch (kind)
{
case 4:
- fndecl = gfor_fndecl_math_cpowf;
+ fndecl = built_in_decls[BUILT_IN_CPOWF];
break;
case 8:
- fndecl = gfor_fndecl_math_cpow;
+ fndecl = built_in_decls[BUILT_IN_CPOW];
break;
case 10:
- fndecl = gfor_fndecl_math_cpowl10;
- break;
case 16:
- fndecl = gfor_fndecl_math_cpowl16;
+ fndecl = built_in_decls[BUILT_IN_CPOWL];
break;
default:
gcc_unreachable ();
@@ -1071,8 +1071,17 @@ gfc_conv_expr_op (gfc_se * se, gfc_expr * expr)
lop = 0;
switch (expr->value.op.operator)
{
- case INTRINSIC_UPLUS:
case INTRINSIC_PARENTHESES:
+ if (expr->ts.type == BT_REAL
+ || expr->ts.type == BT_COMPLEX)
+ {
+ gfc_conv_unary_op (PAREN_EXPR, se, expr);
+ gcc_assert (FLOAT_TYPE_P (TREE_TYPE (se->expr)));
+ return;
+ }
+
+ /* Fallthrough. */
+ case INTRINSIC_UPLUS:
gfc_conv_expr (se, expr->value.op.op1);
return;
@@ -2299,9 +2308,9 @@ gfc_conv_function_call (gfc_se * se, gfc_symbol * sym,
if (arg->next == NULL)
/* Only given one arg so generate a null and do a
not-equal comparison against the first arg. */
- se->expr = build2 (NE_EXPR, boolean_type_node, arg1se.expr,
- fold_convert (TREE_TYPE (arg1se.expr),
- null_pointer_node));
+ se->expr = fold_build2 (NE_EXPR, boolean_type_node, arg1se.expr,
+ fold_convert (TREE_TYPE (arg1se.expr),
+ null_pointer_node));
else
{
tree eq_expr;
@@ -2314,16 +2323,16 @@ gfc_conv_function_call (gfc_se * se, gfc_symbol * sym,
gfc_add_block_to_block (&se->post, &arg2se.post);
/* Generate test to compare that the two args are equal. */
- eq_expr = build2 (EQ_EXPR, boolean_type_node, arg1se.expr,
- arg2se.expr);
+ eq_expr = fold_build2 (EQ_EXPR, boolean_type_node,
+ arg1se.expr, arg2se.expr);
/* Generate test to ensure that the first arg is not null. */
- not_null_expr = build2 (NE_EXPR, boolean_type_node, arg1se.expr,
- null_pointer_node);
+ not_null_expr = fold_build2 (NE_EXPR, boolean_type_node,
+ arg1se.expr, null_pointer_node);
/* Finally, the generated test must check that both arg1 is not
NULL and that it is equal to the second arg. */
- se->expr = build2 (TRUTH_AND_EXPR, boolean_type_node,
- not_null_expr, eq_expr);
+ se->expr = fold_build2 (TRUTH_AND_EXPR, boolean_type_node,
+ not_null_expr, eq_expr);
}
return 0;
@@ -3411,7 +3420,8 @@ gfc_trans_structure_assign (tree dest, gfc_expr * expr)
}
field = cm->backend_decl;
- tmp = build3 (COMPONENT_REF, TREE_TYPE (field), dest, field, NULL_TREE);
+ tmp = fold_build3 (COMPONENT_REF, TREE_TYPE (field),
+ dest, field, NULL_TREE);
tmp = gfc_trans_subcomponent_assign (tmp, cm, c->expr);
gfc_add_expr_to_block (&block, tmp);
}
diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c
index c10d44a1410..6591b97a316 100644
--- a/gcc/fortran/trans-intrinsic.c
+++ b/gcc/fortran/trans-intrinsic.c
@@ -1,5 +1,5 @@
/* Intrinsic translation
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007
+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Paul Brook <paul@nowt.org>
and Steven Bosscher <s.bosscher@student.tudelft.nl>
@@ -274,7 +274,7 @@ gfc_conv_intrinsic_conversion (gfc_se * se, gfc_expr * expr)
tree artype;
artype = TREE_TYPE (TREE_TYPE (args[0]));
- args[0] = build1 (REALPART_EXPR, artype, args[0]);
+ args[0] = fold_build1 (REALPART_EXPR, artype, args[0]);
}
se->expr = convert (type, args[0]);
@@ -300,11 +300,11 @@ build_fixbound_expr (stmtblock_t * pblock, tree arg, tree type, int up)
intval = gfc_evaluate_now (intval, pblock);
tmp = convert (argtype, intval);
- cond = build2 (up ? GE_EXPR : LE_EXPR, boolean_type_node, tmp, arg);
+ cond = fold_build2 (up ? GE_EXPR : LE_EXPR, boolean_type_node, tmp, arg);
- tmp = build2 (up ? PLUS_EXPR : MINUS_EXPR, type, intval,
- build_int_cst (type, 1));
- tmp = build3 (COND_EXPR, type, cond, intval, tmp);
+ tmp = fold_build2 (up ? PLUS_EXPR : MINUS_EXPR, type, intval,
+ build_int_cst (type, 1));
+ tmp = fold_build3 (COND_EXPR, type, cond, intval, tmp);
return tmp;
}
@@ -370,7 +370,7 @@ build_fix_expr (stmtblock_t * pblock, tree arg, tree type,
break;
case RND_TRUNC:
- return build1 (FIX_TRUNC_EXPR, type, arg);
+ return fold_build1 (FIX_TRUNC_EXPR, type, arg);
break;
default:
@@ -470,17 +470,17 @@ gfc_conv_intrinsic_aint (gfc_se * se, gfc_expr * expr, enum rounding_mode op)
n = gfc_validate_kind (BT_INTEGER, kind, false);
mpfr_set_z (huge, gfc_integer_kinds[n].huge, GFC_RND_MODE);
tmp = gfc_conv_mpfr_to_tree (huge, kind);
- cond = build2 (LT_EXPR, boolean_type_node, arg[0], tmp);
+ cond = fold_build2 (LT_EXPR, boolean_type_node, arg[0], tmp);
mpfr_neg (huge, huge, GFC_RND_MODE);
tmp = gfc_conv_mpfr_to_tree (huge, kind);
- tmp = build2 (GT_EXPR, boolean_type_node, arg[0], tmp);
- cond = build2 (TRUTH_AND_EXPR, boolean_type_node, cond, tmp);
+ tmp = fold_build2 (GT_EXPR, boolean_type_node, arg[0], tmp);
+ cond = fold_build2 (TRUTH_AND_EXPR, boolean_type_node, cond, tmp);
itype = gfc_get_int_type (kind);
tmp = build_fix_expr (&se->pre, arg[0], itype, op);
tmp = convert (type, tmp);
- se->expr = build3 (COND_EXPR, type, cond, tmp, arg[0]);
+ se->expr = fold_build3 (COND_EXPR, type, cond, tmp, arg[0]);
mpfr_clear (huge);
}
@@ -518,7 +518,7 @@ gfc_conv_intrinsic_int (gfc_se * se, gfc_expr * expr, enum rounding_mode op)
tree artype;
artype = TREE_TYPE (TREE_TYPE (args[0]));
- args[0] = build1 (REALPART_EXPR, artype, args[0]);
+ args[0] = fold_build1 (REALPART_EXPR, artype, args[0]);
}
se->expr = build_fix_expr (&se->pre, args[0], type, op);
@@ -534,7 +534,7 @@ gfc_conv_intrinsic_imagpart (gfc_se * se, gfc_expr * expr)
tree arg;
gfc_conv_intrinsic_function_args (se, expr, &arg, 1);
- se->expr = build1 (IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (arg)), arg);
+ se->expr = fold_build1 (IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (arg)), arg);
}
@@ -546,7 +546,7 @@ gfc_conv_intrinsic_conjg (gfc_se * se, gfc_expr * expr)
tree arg;
gfc_conv_intrinsic_function_args (se, expr, &arg, 1);
- se->expr = build1 (CONJ_EXPR, TREE_TYPE (arg), arg);
+ se->expr = fold_build1 (CONJ_EXPR, TREE_TYPE (arg), arg);
}
@@ -971,7 +971,7 @@ gfc_conv_intrinsic_abs (gfc_se * se, gfc_expr * expr)
{
case BT_INTEGER:
case BT_REAL:
- se->expr = build1 (ABS_EXPR, TREE_TYPE (arg), arg);
+ se->expr = fold_build1 (ABS_EXPR, TREE_TYPE (arg), arg);
break;
case BT_COMPLEX:
@@ -1020,7 +1020,8 @@ gfc_conv_intrinsic_cmplx (gfc_se * se, gfc_expr * expr, int both)
imag = convert (TREE_TYPE (type), args[1]);
else if (TREE_CODE (TREE_TYPE (args[0])) == COMPLEX_TYPE)
{
- imag = build1 (IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (args[0])), args[0]);
+ imag = fold_build1 (IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (args[0])),
+ args[0]);
imag = convert (TREE_TYPE (type), imag);
}
else
@@ -1054,9 +1055,9 @@ gfc_conv_intrinsic_mod (gfc_se * se, gfc_expr * expr, int modulo)
type = TREE_TYPE (args[0]);
if (modulo)
- se->expr = build2 (FLOOR_MOD_EXPR, type, args[0], args[1]);
+ se->expr = fold_build2 (FLOOR_MOD_EXPR, type, args[0], args[1]);
else
- se->expr = build2 (TRUNC_MOD_EXPR, type, args[0], args[1]);
+ se->expr = fold_build2 (TRUNC_MOD_EXPR, type, args[0], args[1]);
break;
case BT_REAL:
@@ -1107,20 +1108,21 @@ gfc_conv_intrinsic_mod (gfc_se * se, gfc_expr * expr, int modulo)
{
tree zero = gfc_build_const (type, integer_zero_node);
tmp = gfc_evaluate_now (se->expr, &se->pre);
- test = build2 (LT_EXPR, boolean_type_node, args[0], zero);
- test2 = build2 (LT_EXPR, boolean_type_node, args[1], zero);
- test2 = build2 (TRUTH_XOR_EXPR, boolean_type_node, test, test2);
- test = build2 (NE_EXPR, boolean_type_node, tmp, zero);
- test = build2 (TRUTH_AND_EXPR, boolean_type_node, test, test2);
+ test = fold_build2 (LT_EXPR, boolean_type_node, args[0], zero);
+ test2 = fold_build2 (LT_EXPR, boolean_type_node, args[1], zero);
+ test2 = fold_build2 (TRUTH_XOR_EXPR, boolean_type_node, test, test2);
+ test = fold_build2 (NE_EXPR, boolean_type_node, tmp, zero);
+ test = fold_build2 (TRUTH_AND_EXPR, boolean_type_node, test, test2);
test = gfc_evaluate_now (test, &se->pre);
- se->expr = build3 (COND_EXPR, type, test,
- build2 (PLUS_EXPR, type, tmp, args[1]), tmp);
+ se->expr = fold_build3 (COND_EXPR, type, test,
+ fold_build2 (PLUS_EXPR, type, tmp, args[1]),
+ tmp);
return;
}
/* If we do not have a built_in fmod, the calculation is going to
have to be done longhand. */
- tmp = build2 (RDIV_EXPR, type, args[0], args[1]);
+ tmp = fold_build2 (RDIV_EXPR, type, args[0], args[1]);
/* Test if the value is too large to handle sensibly. */
gfc_set_model_kind (expr->ts.kind);
@@ -1134,12 +1136,12 @@ gfc_conv_intrinsic_mod (gfc_se * se, gfc_expr * expr, int modulo)
}
mpfr_set_z (huge, gfc_integer_kinds[n].huge, GFC_RND_MODE);
test = gfc_conv_mpfr_to_tree (huge, expr->ts.kind);
- test2 = build2 (LT_EXPR, boolean_type_node, tmp, test);
+ test2 = fold_build2 (LT_EXPR, boolean_type_node, tmp, test);
mpfr_neg (huge, huge, GFC_RND_MODE);
test = gfc_conv_mpfr_to_tree (huge, expr->ts.kind);
- test = build2 (GT_EXPR, boolean_type_node, tmp, test);
- test2 = build2 (TRUTH_AND_EXPR, boolean_type_node, test, test2);
+ test = fold_build2 (GT_EXPR, boolean_type_node, tmp, test);
+ test2 = fold_build2 (TRUTH_AND_EXPR, boolean_type_node, test, test2);
itype = gfc_get_int_type (ikind);
if (modulo)
@@ -1147,9 +1149,9 @@ gfc_conv_intrinsic_mod (gfc_se * se, gfc_expr * expr, int modulo)
else
tmp = build_fix_expr (&se->pre, tmp, itype, RND_TRUNC);
tmp = convert (type, tmp);
- tmp = build3 (COND_EXPR, type, test2, tmp, args[0]);
- tmp = build2 (MULT_EXPR, type, tmp, args[1]);
- se->expr = build2 (MINUS_EXPR, type, args[0], tmp);
+ tmp = fold_build3 (COND_EXPR, type, test2, tmp, args[0]);
+ tmp = fold_build2 (MULT_EXPR, type, tmp, args[1]);
+ se->expr = fold_build2 (MINUS_EXPR, type, args[0], tmp);
mpfr_clear (huge);
break;
@@ -1172,12 +1174,12 @@ gfc_conv_intrinsic_dim (gfc_se * se, gfc_expr * expr)
gfc_conv_intrinsic_function_args (se, expr, args, 2);
type = TREE_TYPE (args[0]);
- val = build2 (MINUS_EXPR, type, args[0], args[1]);
+ val = fold_build2 (MINUS_EXPR, type, args[0], args[1]);
val = gfc_evaluate_now (val, &se->pre);
zero = gfc_build_const (type, integer_zero_node);
- tmp = build2 (LE_EXPR, boolean_type_node, val, zero);
- se->expr = build3 (COND_EXPR, type, tmp, zero, val);
+ tmp = fold_build2 (LE_EXPR, boolean_type_node, val, zero);
+ se->expr = fold_build3 (COND_EXPR, type, tmp, zero, val);
}
@@ -1266,7 +1268,7 @@ gfc_conv_intrinsic_dprod (gfc_se * se, gfc_expr * expr)
type = gfc_typenode_for_spec (&expr->ts);
args[0] = convert (type, args[0]);
args[1] = convert (type, args[1]);
- se->expr = build2 (MULT_EXPR, type, args[0], args[1]);
+ se->expr = fold_build2 (MULT_EXPR, type, args[0], args[1]);
}
@@ -1323,8 +1325,8 @@ gfc_conv_intrinsic_ctime (gfc_se * se, gfc_expr * expr)
gfc_add_expr_to_block (&se->pre, tmp);
/* Free the temporary afterwards, if necessary. */
- cond = build2 (GT_EXPR, boolean_type_node, len,
- build_int_cst (TREE_TYPE (len), 0));
+ cond = fold_build2 (GT_EXPR, boolean_type_node,
+ len, build_int_cst (TREE_TYPE (len), 0));
tmp = gfc_call_free (var);
tmp = build3_v (COND_EXPR, cond, tmp, build_empty_stmt ());
gfc_add_expr_to_block (&se->post, tmp);
@@ -1364,8 +1366,8 @@ gfc_conv_intrinsic_fdate (gfc_se * se, gfc_expr * expr)
gfc_add_expr_to_block (&se->pre, tmp);
/* Free the temporary afterwards, if necessary. */
- cond = build2 (GT_EXPR, boolean_type_node, len,
- build_int_cst (TREE_TYPE (len), 0));
+ cond = fold_build2 (GT_EXPR, boolean_type_node,
+ len, build_int_cst (TREE_TYPE (len), 0));
tmp = gfc_call_free (var);
tmp = build3_v (COND_EXPR, cond, tmp, build_empty_stmt ());
gfc_add_expr_to_block (&se->post, tmp);
@@ -1407,8 +1409,8 @@ gfc_conv_intrinsic_ttynam (gfc_se * se, gfc_expr * expr)
gfc_add_expr_to_block (&se->pre, tmp);
/* Free the temporary afterwards, if necessary. */
- cond = build2 (GT_EXPR, boolean_type_node, len,
- build_int_cst (TREE_TYPE (len), 0));
+ cond = fold_build2 (GT_EXPR, boolean_type_node,
+ len, build_int_cst (TREE_TYPE (len), 0));
tmp = gfc_call_free (var);
tmp = build3_v (COND_EXPR, cond, tmp, build_empty_stmt ());
gfc_add_expr_to_block (&se->post, tmp);
@@ -1470,8 +1472,9 @@ gfc_conv_intrinsic_minmax (gfc_se * se, gfc_expr * expr, int op)
if (argexpr->expr->expr_type == EXPR_VARIABLE
&& argexpr->expr->symtree->n.sym->attr.optional
&& TREE_CODE (val) == INDIRECT_REF)
- cond = build2 (NE_EXPR, boolean_type_node, TREE_OPERAND (val, 0),
- build_int_cst (TREE_TYPE (TREE_OPERAND (val, 0)), 0));
+ cond = fold_build2
+ (NE_EXPR, boolean_type_node, TREE_OPERAND (val, 0),
+ build_int_cst (TREE_TYPE (TREE_OPERAND (val, 0)), 0));
else
{
cond = NULL_TREE;
@@ -1483,7 +1486,7 @@ gfc_conv_intrinsic_minmax (gfc_se * se, gfc_expr * expr, int op)
thencase = build2_v (MODIFY_EXPR, mvar, convert (type, val));
- tmp = build2 (op, boolean_type_node, convert (type, val), mvar);
+ tmp = fold_build2 (op, boolean_type_node, convert (type, val), mvar);
/* FIXME: When the IEEE_ARITHMETIC module is implemented, the call to
__builtin_isnan might be made dependent on that module being loaded,
@@ -1534,8 +1537,8 @@ gfc_conv_intrinsic_minmax_char (gfc_se * se, gfc_expr * expr, int op)
gfc_add_expr_to_block (&se->pre, tmp);
/* Free the temporary afterwards, if necessary. */
- cond = build2 (GT_EXPR, boolean_type_node, len,
- build_int_cst (TREE_TYPE (len), 0));
+ cond = fold_build2 (GT_EXPR, boolean_type_node,
+ len, build_int_cst (TREE_TYPE (len), 0));
tmp = gfc_call_free (var);
tmp = build3_v (COND_EXPR, cond, tmp, build_empty_stmt ());
gfc_add_expr_to_block (&se->post, tmp);
@@ -1792,8 +1795,8 @@ gfc_conv_intrinsic_count (gfc_se * se, gfc_expr * expr)
/* Generate the loop body. */
gfc_start_scalarized_body (&loop, &body);
- tmp = build2 (PLUS_EXPR, TREE_TYPE (resvar), resvar,
- build_int_cst (TREE_TYPE (resvar), 1));
+ tmp = fold_build2 (PLUS_EXPR, TREE_TYPE (resvar),
+ resvar, build_int_cst (TREE_TYPE (resvar), 1));
tmp = build2_v (MODIFY_EXPR, resvar, tmp);
gfc_init_se (&arrayse, NULL);
@@ -1903,7 +1906,7 @@ gfc_conv_intrinsic_arith (gfc_se * se, gfc_expr * expr, int op)
gfc_conv_expr_val (&arrayse, arrayexpr);
gfc_add_block_to_block (&block, &arrayse.pre);
- tmp = build2 (op, type, resvar, arrayse.expr);
+ tmp = fold_build2 (op, type, resvar, arrayse.expr);
gfc_add_modify_expr (&block, resvar, tmp);
gfc_add_block_to_block (&block, &arrayse.post);
@@ -2007,7 +2010,7 @@ gfc_conv_intrinsic_dot_product (gfc_se * se, gfc_expr * expr)
arrayse1.ss = arrayss1;
gfc_conv_expr_val (&arrayse1, arrayexpr1);
if (expr->ts.type == BT_COMPLEX)
- arrayse1.expr = build1 (CONJ_EXPR, type, arrayse1.expr);
+ arrayse1.expr = fold_build1 (CONJ_EXPR, type, arrayse1.expr);
gfc_add_block_to_block (&block, &arrayse1.pre);
/* Make the tree expression for array2. */
@@ -2020,13 +2023,13 @@ gfc_conv_intrinsic_dot_product (gfc_se * se, gfc_expr * expr)
/* Do the actual product and sum. */
if (expr->ts.type == BT_LOGICAL)
{
- tmp = build2 (TRUTH_AND_EXPR, type, arrayse1.expr, arrayse2.expr);
- tmp = build2 (TRUTH_OR_EXPR, type, resvar, tmp);
+ tmp = fold_build2 (TRUTH_AND_EXPR, type, arrayse1.expr, arrayse2.expr);
+ tmp = fold_build2 (TRUTH_OR_EXPR, type, resvar, tmp);
}
else
{
- tmp = build2 (MULT_EXPR, type, arrayse1.expr, arrayse2.expr);
- tmp = build2 (PLUS_EXPR, type, resvar, tmp);
+ tmp = fold_build2 (MULT_EXPR, type, arrayse1.expr, arrayse2.expr);
+ tmp = fold_build2 (PLUS_EXPR, type, resvar, tmp);
}
gfc_add_modify_expr (&block, resvar, tmp);
@@ -2121,8 +2124,8 @@ gfc_conv_intrinsic_minmaxloc (gfc_se * se, gfc_expr * expr, int op)
gfc_add_modify_expr (&se->pre, limit, tmp);
if (op == GT_EXPR && expr->ts.type == BT_INTEGER)
- tmp = build2 (MINUS_EXPR, TREE_TYPE (tmp), tmp,
- build_int_cst (type, 1));
+ tmp = fold_build2 (MINUS_EXPR, TREE_TYPE (tmp), tmp,
+ build_int_cst (type, 1));
/* Initialize the scalarizer. */
gfc_init_loopinfo (&loop);
@@ -2183,19 +2186,22 @@ gfc_conv_intrinsic_minmaxloc (gfc_se * se, gfc_expr * expr, int op)
gfc_index_one_node, loop.from[0]);
gfc_add_modify_expr (&block, offset, tmp);
- tmp = build2 (PLUS_EXPR, TREE_TYPE (pos),
- loop.loopvar[0], offset);
+ tmp = fold_build2 (PLUS_EXPR, TREE_TYPE (pos),
+ loop.loopvar[0], offset);
gfc_add_modify_expr (&ifblock, pos, tmp);
ifbody = gfc_finish_block (&ifblock);
/* If it is a more extreme value or pos is still zero and the value
equal to the limit. */
- tmp = build2 (TRUTH_AND_EXPR, boolean_type_node,
- build2 (EQ_EXPR, boolean_type_node, pos, gfc_index_zero_node),
- build2 (EQ_EXPR, boolean_type_node, arrayse.expr, limit));
- tmp = build2 (TRUTH_OR_EXPR, boolean_type_node,
- build2 (op, boolean_type_node, arrayse.expr, limit), tmp);
+ tmp = fold_build2 (TRUTH_AND_EXPR, boolean_type_node,
+ fold_build2 (EQ_EXPR, boolean_type_node,
+ pos, gfc_index_zero_node),
+ fold_build2 (EQ_EXPR, boolean_type_node,
+ arrayse.expr, limit));
+ tmp = fold_build2 (TRUTH_OR_EXPR, boolean_type_node,
+ fold_build2 (op, boolean_type_node,
+ arrayse.expr, limit), tmp);
tmp = build3_v (COND_EXPR, tmp, ifbody, build_empty_stmt ());
gfc_add_expr_to_block (&block, tmp);
@@ -2294,8 +2300,8 @@ gfc_conv_intrinsic_minmaxval (gfc_se * se, gfc_expr * expr, int op)
tmp = fold_build1 (NEGATE_EXPR, TREE_TYPE (tmp), tmp);
if (op == GT_EXPR && expr->ts.type == BT_INTEGER)
- tmp = build2 (MINUS_EXPR, TREE_TYPE (tmp), tmp,
- build_int_cst (type, 1));
+ tmp = fold_build2 (MINUS_EXPR, TREE_TYPE (tmp),
+ tmp, build_int_cst (type, 1));
gfc_add_modify_expr (&se->pre, limit, tmp);
@@ -2357,7 +2363,7 @@ gfc_conv_intrinsic_minmaxval (gfc_se * se, gfc_expr * expr, int op)
ifbody = build2_v (MODIFY_EXPR, limit, arrayse.expr);
/* If it is a more extreme value. */
- tmp = build2 (op, boolean_type_node, arrayse.expr, limit);
+ tmp = fold_build2 (op, boolean_type_node, arrayse.expr, limit);
tmp = build3_v (COND_EXPR, tmp, ifbody, build_empty_stmt ());
gfc_add_expr_to_block (&block, tmp);
gfc_add_block_to_block (&block, &arrayse.post);
@@ -2406,8 +2412,8 @@ gfc_conv_intrinsic_btest (gfc_se * se, gfc_expr * expr)
gfc_conv_intrinsic_function_args (se, expr, args, 2);
type = TREE_TYPE (args[0]);
- tmp = build2 (LSHIFT_EXPR, type, build_int_cst (type, 1), args[1]);
- tmp = build2 (BIT_AND_EXPR, type, args[0], tmp);
+ tmp = fold_build2 (LSHIFT_EXPR, type, build_int_cst (type, 1), args[1]);
+ tmp = fold_build2 (BIT_AND_EXPR, type, args[0], tmp);
tmp = fold_build2 (NE_EXPR, boolean_type_node, tmp,
build_int_cst (type, 0));
type = gfc_typenode_for_spec (&expr->ts);
@@ -2431,7 +2437,7 @@ gfc_conv_intrinsic_not (gfc_se * se, gfc_expr * expr)
tree arg;
gfc_conv_intrinsic_function_args (se, expr, &arg, 1);
- se->expr = build1 (BIT_NOT_EXPR, TREE_TYPE (arg), arg);
+ se->expr = fold_build1 (BIT_NOT_EXPR, TREE_TYPE (arg), arg);
}
/* Set or clear a single bit. */
@@ -2471,10 +2477,10 @@ gfc_conv_intrinsic_ibits (gfc_se * se, gfc_expr * expr)
type = TREE_TYPE (args[0]);
mask = build_int_cst (type, -1);
- mask = build2 (LSHIFT_EXPR, type, mask, args[2]);
- mask = build1 (BIT_NOT_EXPR, type, mask);
+ mask = fold_build2 (LSHIFT_EXPR, type, mask, args[2]);
+ mask = fold_build1 (BIT_NOT_EXPR, type, mask);
- tmp = build2 (RSHIFT_EXPR, type, args[0], args[1]);
+ tmp = fold_build2 (RSHIFT_EXPR, type, args[0], args[1]);
se->expr = fold_build2 (BIT_AND_EXPR, type, tmp, mask);
}
@@ -2523,8 +2529,8 @@ gfc_conv_intrinsic_ishft (gfc_se * se, gfc_expr * expr)
The standard doesn't define the case of shifting negative
numbers, and we try to be compatible with other compilers, most
notably g77, here. */
- rshift = fold_convert (type, build2 (RSHIFT_EXPR, utype,
- convert (utype, args[0]), width));
+ rshift = fold_convert (type, fold_build2 (RSHIFT_EXPR, utype,
+ convert (utype, args[0]), width));
tmp = fold_build2 (GE_EXPR, boolean_type_node, args[1],
build_int_cst (TREE_TYPE (args[1]), 0));
@@ -2740,7 +2746,7 @@ gfc_conv_intrinsic_ichar (gfc_se * se, gfc_expr * expr)
gfc_conv_intrinsic_function_args (se, expr, args, 2);
gcc_assert (POINTER_TYPE_P (TREE_TYPE (args[1])));
- args[1] = build1 (NOP_EXPR, pchar_type_node, args[1]);
+ args[1] = fold_build1 (NOP_EXPR, pchar_type_node, args[1]);
type = gfc_typenode_for_spec (&expr->ts);
se->expr = build_fold_indirect_ref (args[1]);
@@ -2868,11 +2874,11 @@ gfc_conv_intrinsic_size (gfc_se * se, gfc_expr * expr)
argse.data_not_needed = 1;
gfc_conv_expr (&argse, actual->expr);
gfc_add_block_to_block (&se->pre, &argse.pre);
- tmp = build2 (NE_EXPR, boolean_type_node, argse.expr,
- null_pointer_node);
+ tmp = fold_build2 (NE_EXPR, boolean_type_node,
+ argse.expr, null_pointer_node);
tmp = gfc_evaluate_now (tmp, &se->pre);
- se->expr = build3 (COND_EXPR, pvoid_type_node,
- tmp, fncall1, fncall0);
+ se->expr = fold_build3 (COND_EXPR, pvoid_type_node,
+ tmp, fncall1, fncall0);
}
else
se->expr = fncall1;
@@ -3079,7 +3085,7 @@ gfc_conv_intrinsic_array_transfer (gfc_se * se, gfc_expr * expr)
/* Clean up if it was repacked. */
gfc_init_block (&block);
tmp = gfc_conv_array_data (argse.expr);
- tmp = build2 (NE_EXPR, boolean_type_node, source, tmp);
+ tmp = fold_build2 (NE_EXPR, boolean_type_node, source, tmp);
tmp = build3_v (COND_EXPR, tmp, stmt, build_empty_stmt ());
gfc_add_expr_to_block (&block, tmp);
gfc_add_block_to_block (&block, &se->post);
@@ -3284,7 +3290,7 @@ gfc_conv_intrinsic_transfer (gfc_se * se, gfc_expr * expr)
moldsize = size_in_bytes (type);
/* Use memcpy to do the transfer. */
- tmp = build1 (ADDR_EXPR, build_pointer_type (type), tmpdecl);
+ tmp = fold_build1 (ADDR_EXPR, build_pointer_type (type), tmpdecl);
tmp = build_call_expr (built_in_decls[BUILT_IN_MEMCPY], 3,
fold_convert (pvoid_type_node, tmp),
fold_convert (pvoid_type_node, ptr),
@@ -3314,8 +3320,8 @@ gfc_conv_allocated (gfc_se *se, gfc_expr *expr)
gfc_conv_expr_descriptor (&arg1se, arg1->expr, ss1);
tmp = gfc_conv_descriptor_data_get (arg1se.expr);
- tmp = build2 (NE_EXPR, boolean_type_node, tmp,
- fold_convert (TREE_TYPE (tmp), null_pointer_node));
+ tmp = fold_build2 (NE_EXPR, boolean_type_node,
+ tmp, fold_convert (TREE_TYPE (tmp), null_pointer_node));
se->expr = convert (gfc_typenode_for_spec (&expr->ts), tmp);
}
@@ -3363,8 +3369,8 @@ gfc_conv_associated (gfc_se *se, gfc_expr *expr)
}
gfc_add_block_to_block (&se->pre, &arg1se.pre);
gfc_add_block_to_block (&se->post, &arg1se.post);
- tmp = build2 (NE_EXPR, boolean_type_node, tmp2,
- fold_convert (TREE_TYPE (tmp2), null_pointer_node));
+ tmp = fold_build2 (NE_EXPR, boolean_type_node, tmp2,
+ fold_convert (TREE_TYPE (tmp2), null_pointer_node));
se->expr = tmp;
}
else
@@ -3374,9 +3380,9 @@ gfc_conv_associated (gfc_se *se, gfc_expr *expr)
nonzero_charlen = NULL_TREE;
if (arg1->expr->ts.type == BT_CHARACTER)
- nonzero_charlen = build2 (NE_EXPR, boolean_type_node,
- arg1->expr->ts.cl->backend_decl,
- integer_zero_node);
+ nonzero_charlen = fold_build2 (NE_EXPR, boolean_type_node,
+ arg1->expr->ts.cl->backend_decl,
+ integer_zero_node);
if (ss1 == gfc_ss_terminator)
{
@@ -3388,10 +3394,12 @@ gfc_conv_associated (gfc_se *se, gfc_expr *expr)
gfc_conv_expr (&arg2se, arg2->expr);
gfc_add_block_to_block (&se->pre, &arg1se.pre);
gfc_add_block_to_block (&se->post, &arg1se.post);
- tmp = build2 (EQ_EXPR, boolean_type_node, arg1se.expr, arg2se.expr);
- tmp2 = build2 (NE_EXPR, boolean_type_node, arg1se.expr,
- null_pointer_node);
- se->expr = build2 (TRUTH_AND_EXPR, boolean_type_node, tmp, tmp2);
+ tmp = fold_build2 (EQ_EXPR, boolean_type_node,
+ arg1se.expr, arg2se.expr);
+ tmp2 = fold_build2 (NE_EXPR, boolean_type_node,
+ arg1se.expr, null_pointer_node);
+ se->expr = fold_build2 (TRUTH_AND_EXPR, boolean_type_node,
+ tmp, tmp2);
}
else
{
@@ -3401,8 +3409,8 @@ gfc_conv_associated (gfc_se *se, gfc_expr *expr)
gfc_conv_expr_lhs (&arg1se, arg1->expr);
tmp = gfc_conv_descriptor_stride (arg1se.expr,
gfc_rank_cst[arg1->expr->rank - 1]);
- nonzero_arraylen = build2 (NE_EXPR, boolean_type_node,
- tmp, build_int_cst (TREE_TYPE (tmp), 0));
+ nonzero_arraylen = fold_build2 (NE_EXPR, boolean_type_node, tmp,
+ build_int_cst (TREE_TYPE (tmp), 0));
/* A pointer to an array, call library function _gfor_associated. */
gcc_assert (ss2 != gfc_ss_terminator);
@@ -3416,15 +3424,15 @@ gfc_conv_associated (gfc_se *se, gfc_expr *expr)
se->expr = build_call_expr (gfor_fndecl_associated, 2,
arg1se.expr, arg2se.expr);
se->expr = convert (boolean_type_node, se->expr);
- se->expr = build2 (TRUTH_AND_EXPR, boolean_type_node,
- se->expr, nonzero_arraylen);
+ se->expr = fold_build2 (TRUTH_AND_EXPR, boolean_type_node,
+ se->expr, nonzero_arraylen);
}
/* If target is present zero character length pointers cannot
be associated. */
if (nonzero_charlen != NULL_TREE)
- se->expr = build2 (TRUTH_AND_EXPR, boolean_type_node,
- se->expr, nonzero_charlen);
+ se->expr = fold_build2 (TRUTH_AND_EXPR, boolean_type_node,
+ se->expr, nonzero_charlen);
}
se->expr = convert (gfc_typenode_for_spec (&expr->ts), se->expr);
@@ -3527,8 +3535,8 @@ gfc_conv_intrinsic_trim (gfc_se * se, gfc_expr * expr)
gfc_add_expr_to_block (&se->pre, tmp);
/* Free the temporary afterwards, if necessary. */
- cond = build2 (GT_EXPR, boolean_type_node, len,
- build_int_cst (TREE_TYPE (len), 0));
+ cond = fold_build2 (GT_EXPR, boolean_type_node,
+ len, build_int_cst (TREE_TYPE (len), 0));
tmp = gfc_call_free (var);
tmp = build3_v (COND_EXPR, cond, tmp, build_empty_stmt ());
gfc_add_expr_to_block (&se->post, tmp);
@@ -3632,8 +3640,8 @@ gfc_conv_intrinsic_repeat (gfc_se * se, gfc_expr * expr)
gfc_add_expr_to_block (&body, tmp);
/* Increment count. */
- tmp = build2 (PLUS_EXPR, ncopies_type, count,
- build_int_cst (TREE_TYPE (count), 1));
+ tmp = fold_build2 (PLUS_EXPR, ncopies_type,
+ count, build_int_cst (TREE_TYPE (count), 1));
gfc_add_modify_expr (&body, count, tmp);
/* Build the loop. */
diff --git a/gcc/fortran/trans-io.c b/gcc/fortran/trans-io.c
index 1e124154a4a..d0af3429db4 100644
--- a/gcc/fortran/trans-io.c
+++ b/gcc/fortran/trans-io.c
@@ -1,5 +1,5 @@
/* IO Code translation/library interface
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software
+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software
Foundation, Inc.
Contributed by Paul Brook
@@ -240,7 +240,8 @@ gfc_trans_io_runtime_check (tree cond, tree var, int error_code,
arg2 = build_int_cst (integer_type_node, error_code),
asprintf (&message, "%s", _(msgid));
- arg3 = gfc_build_addr_expr (pchar_type_node, gfc_build_cstring_const(message));
+ arg3 = gfc_build_addr_expr (pchar_type_node,
+ gfc_build_localized_cstring_const (message));
gfc_free(message);
tmp = build_call_expr (gfor_fndecl_generate_error, 3, arg1, arg2, arg3);
@@ -429,10 +430,10 @@ set_parameter_const (stmtblock_t *block, tree var, enum iofield type,
gfc_st_parameter_field *p = &st_parameter_field[type];
if (p->param_type == IOPARM_ptype_common)
- var = build3 (COMPONENT_REF, st_parameter[IOPARM_ptype_common].type,
- var, TYPE_FIELDS (TREE_TYPE (var)), NULL_TREE);
- tmp = build3 (COMPONENT_REF, TREE_TYPE (p->field), var, p->field,
- NULL_TREE);
+ var = fold_build3 (COMPONENT_REF, st_parameter[IOPARM_ptype_common].type,
+ var, TYPE_FIELDS (TREE_TYPE (var)), NULL_TREE);
+ tmp = fold_build3 (COMPONENT_REF, TREE_TYPE (p->field), var, p->field,
+ NULL_TREE);
gfc_add_modify_expr (block, tmp, build_int_cst (TREE_TYPE (p->field), val));
return p->mask;
}
@@ -484,10 +485,10 @@ set_parameter_value (stmtblock_t *block, tree var, enum iofield type,
gfc_add_block_to_block (block, &se.pre);
if (p->param_type == IOPARM_ptype_common)
- var = build3 (COMPONENT_REF, st_parameter[IOPARM_ptype_common].type,
- var, TYPE_FIELDS (TREE_TYPE (var)), NULL_TREE);
+ var = fold_build3 (COMPONENT_REF, st_parameter[IOPARM_ptype_common].type,
+ var, TYPE_FIELDS (TREE_TYPE (var)), NULL_TREE);
- tmp = build3 (COMPONENT_REF, dest_type, var, p->field, NULL_TREE);
+ tmp = fold_build3 (COMPONENT_REF, dest_type, var, p->field, NULL_TREE);
gfc_add_modify_expr (block, tmp, se.expr);
return p->mask;
}
@@ -542,10 +543,10 @@ set_parameter_ref (stmtblock_t *block, stmtblock_t *postblock,
}
if (p->param_type == IOPARM_ptype_common)
- var = build3 (COMPONENT_REF, st_parameter[IOPARM_ptype_common].type,
- var, TYPE_FIELDS (TREE_TYPE (var)), NULL_TREE);
- tmp = build3 (COMPONENT_REF, TREE_TYPE (p->field), var, p->field,
- NULL_TREE);
+ var = fold_build3 (COMPONENT_REF, st_parameter[IOPARM_ptype_common].type,
+ var, TYPE_FIELDS (TREE_TYPE (var)), NULL_TREE);
+ tmp = fold_build3 (COMPONENT_REF, TREE_TYPE (p->field),
+ var, p->field, NULL_TREE);
gfc_add_modify_expr (block, tmp, addr);
return p->mask;
}
@@ -631,12 +632,12 @@ set_string (stmtblock_t * block, stmtblock_t * postblock, tree var,
gfc_init_se (&se, NULL);
if (p->param_type == IOPARM_ptype_common)
- var = build3 (COMPONENT_REF, st_parameter[IOPARM_ptype_common].type,
- var, TYPE_FIELDS (TREE_TYPE (var)), NULL_TREE);
- io = build3 (COMPONENT_REF, TREE_TYPE (p->field), var, p->field,
- NULL_TREE);
- len = build3 (COMPONENT_REF, TREE_TYPE (p->field_len), var, p->field_len,
- NULL_TREE);
+ var = fold_build3 (COMPONENT_REF, st_parameter[IOPARM_ptype_common].type,
+ var, TYPE_FIELDS (TREE_TYPE (var)), NULL_TREE);
+ io = fold_build3 (COMPONENT_REF, TREE_TYPE (p->field),
+ var, p->field, NULL_TREE);
+ len = fold_build3 (COMPONENT_REF, TREE_TYPE (p->field_len),
+ var, p->field_len, NULL_TREE);
/* Integer variable assigned a format label. */
if (e->ts.type == BT_INTEGER && e->symtree->n.sym->attr.assign == 1)
@@ -700,13 +701,13 @@ set_internal_unit (stmtblock_t * block, stmtblock_t * post_block,
p = &st_parameter_field[IOPARM_dt_internal_unit];
mask = p->mask;
- io = build3 (COMPONENT_REF, TREE_TYPE (p->field), var, p->field,
- NULL_TREE);
- len = build3 (COMPONENT_REF, TREE_TYPE (p->field_len), var, p->field_len,
- NULL_TREE);
+ io = fold_build3 (COMPONENT_REF, TREE_TYPE (p->field),
+ var, p->field, NULL_TREE);
+ len = fold_build3 (COMPONENT_REF, TREE_TYPE (p->field_len),
+ var, p->field_len, NULL_TREE);
p = &st_parameter_field[IOPARM_dt_internal_unit_desc];
- desc = build3 (COMPONENT_REF, TREE_TYPE (p->field), var, p->field,
- NULL_TREE);
+ desc = fold_build3 (COMPONENT_REF, TREE_TYPE (p->field),
+ var, p->field, NULL_TREE);
gcc_assert (e->ts.type == BT_CHARACTER);
@@ -814,12 +815,13 @@ io_result (stmtblock_t * block, tree var, gfc_st_label * err_label,
tmp = gfc_finish_block (&body);
- var = build3 (COMPONENT_REF, st_parameter[IOPARM_ptype_common].type,
- var, TYPE_FIELDS (TREE_TYPE (var)), NULL_TREE);
- rc = build3 (COMPONENT_REF, TREE_TYPE (p->field), var, p->field,
- NULL_TREE);
- rc = build2 (BIT_AND_EXPR, TREE_TYPE (rc), rc,
- build_int_cst (TREE_TYPE (rc), IOPARM_common_libreturn_mask));
+ var = fold_build3 (COMPONENT_REF, st_parameter[IOPARM_ptype_common].type,
+ var, TYPE_FIELDS (TREE_TYPE (var)), NULL_TREE);
+ rc = fold_build3 (COMPONENT_REF, TREE_TYPE (p->field),
+ var, p->field, NULL_TREE);
+ rc = fold_build2 (BIT_AND_EXPR, TREE_TYPE (rc),
+ rc, build_int_cst (TREE_TYPE (rc),
+ IOPARM_common_libreturn_mask));
tmp = build3_v (SWITCH_EXPR, rc, tmp, NULL_TREE);
@@ -838,10 +840,11 @@ set_error_locus (stmtblock_t * block, tree var, locus * where)
int line;
gfc_st_parameter_field *p = &st_parameter_field[IOPARM_common_filename];
- locus_file = build3 (COMPONENT_REF, st_parameter[IOPARM_ptype_common].type,
- var, TYPE_FIELDS (TREE_TYPE (var)), NULL_TREE);
- locus_file = build3 (COMPONENT_REF, TREE_TYPE (p->field), locus_file,
- p->field, NULL_TREE);
+ locus_file = fold_build3 (COMPONENT_REF,
+ st_parameter[IOPARM_ptype_common].type,
+ var, TYPE_FIELDS (TREE_TYPE (var)), NULL_TREE);
+ locus_file = fold_build3 (COMPONENT_REF, TREE_TYPE (p->field),
+ locus_file, p->field, NULL_TREE);
f = where->lb->file;
str = gfc_build_cstring_const (f->filename);
@@ -1357,8 +1360,8 @@ nml_get_addr_expr (gfc_symbol * sym, gfc_component * c,
the derived type. */
if (TREE_CODE (decl) == FIELD_DECL)
- tmp = build3 (COMPONENT_REF, TREE_TYPE (tmp),
- base_addr, tmp, NULL_TREE);
+ tmp = fold_build3 (COMPONENT_REF, TREE_TYPE (tmp),
+ base_addr, tmp, NULL_TREE);
/* If we have a derived type component, a reference to the first
element of the array is built. This is done so that base_addr,
@@ -1908,8 +1911,8 @@ transfer_expr (gfc_se * se, gfc_typespec * ts, tree addr_expr, gfc_code * code)
field = c->backend_decl;
gcc_assert (field && TREE_CODE (field) == FIELD_DECL);
- tmp = build3 (COMPONENT_REF, TREE_TYPE (field), expr, field,
- NULL_TREE);
+ tmp = fold_build3 (COMPONENT_REF, TREE_TYPE (field),
+ expr, field, NULL_TREE);
if (c->dimension)
{
diff --git a/gcc/fortran/trans-openmp.c b/gcc/fortran/trans-openmp.c
index ea595a0f70f..d1188a168d4 100644
--- a/gcc/fortran/trans-openmp.c
+++ b/gcc/fortran/trans-openmp.c
@@ -1,5 +1,5 @@
/* OpenMP directive translation -- generate GCC trees from gfc_code.
- Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
Contributed by Jakub Jelinek <jakub@redhat.com>
This file is part of GCC.
@@ -863,7 +863,7 @@ gfc_trans_omp_atomic (gfc_code *code)
if (TREE_CODE (TREE_TYPE (rhs)) == COMPLEX_TYPE
&& TREE_CODE (type) != COMPLEX_TYPE)
- x = build1 (REALPART_EXPR, TREE_TYPE (TREE_TYPE (rhs)), x);
+ x = fold_build1 (REALPART_EXPR, TREE_TYPE (TREE_TYPE (rhs)), x);
x = build2_v (OMP_ATOMIC, lhsaddr, convert (type, x));
gfc_add_expr_to_block (&block, x);
@@ -961,8 +961,8 @@ gfc_trans_omp_do (gfc_code *code, stmtblock_t *pblock,
if (simple)
{
init = build2_v (GIMPLE_MODIFY_STMT, dovar, from);
- cond = build2 (simple > 0 ? LE_EXPR : GE_EXPR, boolean_type_node,
- dovar, to);
+ cond = fold_build2 (simple > 0 ? LE_EXPR : GE_EXPR, boolean_type_node,
+ dovar, to);
incr = fold_build2 (PLUS_EXPR, type, dovar, step);
incr = fold_build2 (GIMPLE_MODIFY_STMT, type, dovar, incr);
if (pblock != &block)
@@ -987,7 +987,7 @@ gfc_trans_omp_do (gfc_code *code, stmtblock_t *pblock,
tmp = gfc_evaluate_now (tmp, pblock);
count = gfc_create_var (type, "count");
init = build2_v (GIMPLE_MODIFY_STMT, count, build_int_cst (type, 0));
- cond = build2 (LT_EXPR, boolean_type_node, count, tmp);
+ cond = fold_build2 (LT_EXPR, boolean_type_node, count, tmp);
incr = fold_build2 (PLUS_EXPR, type, count, build_int_cst (type, 1));
incr = fold_build2 (GIMPLE_MODIFY_STMT, type, count, incr);
@@ -1000,7 +1000,7 @@ gfc_trans_omp_do (gfc_code *code, stmtblock_t *pblock,
/* Initialize DOVAR. */
tmp = fold_build2 (MULT_EXPR, type, count, step);
- tmp = build2 (PLUS_EXPR, type, from, tmp);
+ tmp = fold_build2 (PLUS_EXPR, type, from, tmp);
gfc_add_modify_stmt (&body, dovar, tmp);
}
diff --git a/gcc/fortran/trans-stmt.c b/gcc/fortran/trans-stmt.c
index 667866fdf05..e3f4cd456e8 100644
--- a/gcc/fortran/trans-stmt.c
+++ b/gcc/fortran/trans-stmt.c
@@ -1,5 +1,5 @@
/* Statement translation -- generate GCC trees from gfc_code.
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007
+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Paul Brook <paul@nowt.org>
and Steven Bosscher <s.bosscher@student.tudelft.nl>
@@ -161,7 +161,7 @@ gfc_trans_goto (gfc_code * code)
code = code->block;
if (code == NULL)
{
- target = build1 (GOTO_EXPR, void_type_node, assigned_goto);
+ target = fold_build1 (GOTO_EXPR, void_type_node, assigned_goto);
gfc_add_expr_to_block (&se.pre, target);
return gfc_finish_block (&se.pre);
}
@@ -171,9 +171,9 @@ gfc_trans_goto (gfc_code * code)
{
target = gfc_get_label_decl (code->label);
tmp = gfc_build_addr_expr (pvoid_type_node, target);
- tmp = build2 (EQ_EXPR, boolean_type_node, tmp, assigned_goto);
+ tmp = fold_build2 (EQ_EXPR, boolean_type_node, tmp, assigned_goto);
tmp = build3_v (COND_EXPR, tmp,
- build1 (GOTO_EXPR, void_type_node, target),
+ fold_build1 (GOTO_EXPR, void_type_node, target),
build_empty_stmt ());
gfc_add_expr_to_block (&se.pre, tmp);
code = code->block;
@@ -444,8 +444,8 @@ gfc_trans_return (gfc_code * code ATTRIBUTE_UNUSED)
gfc_conv_expr (&se, code->expr);
- tmp = build2 (MODIFY_EXPR, TREE_TYPE (result), result,
- fold_convert (TREE_TYPE (result), se.expr));
+ tmp = fold_build2 (MODIFY_EXPR, TREE_TYPE (result), result,
+ fold_convert (TREE_TYPE (result), se.expr));
gfc_add_expr_to_block (&se.pre, tmp);
tmp = build1_v (GOTO_EXPR, gfc_get_return_label ());
@@ -946,7 +946,7 @@ gfc_trans_do (gfc_code * code)
}
/* Increment the loop variable. */
- tmp = build2 (PLUS_EXPR, type, dovar, step);
+ tmp = fold_build2 (PLUS_EXPR, type, dovar, step);
gfc_add_modify_expr (&body, dovar, tmp);
/* End with the loop condition. Loop until countm1 == 0. */
@@ -958,7 +958,7 @@ gfc_trans_do (gfc_code * code)
gfc_add_expr_to_block (&body, tmp);
/* Decrement the loop count. */
- tmp = build2 (MINUS_EXPR, utype, countm1, build_int_cst (utype, 1));
+ tmp = fold_build2 (MINUS_EXPR, utype, countm1, build_int_cst (utype, 1));
gfc_add_modify_expr (&body, countm1, tmp);
/* End of loop body. */
@@ -1181,7 +1181,8 @@ gfc_trans_integer_select (gfc_code * code)
/* Add this case label.
Add parameter 'label', make it match GCC backend. */
- tmp = build3 (CASE_LABEL_EXPR, void_type_node, low, high, label);
+ tmp = fold_build3 (CASE_LABEL_EXPR, void_type_node,
+ low, high, label);
gfc_add_expr_to_block (&body, tmp);
}
@@ -1373,9 +1374,9 @@ gfc_trans_character_select (gfc_code *code)
for (d = c->ext.case_list; d; d = d->next)
{
label = gfc_build_label_decl (NULL_TREE);
- tmp = build3 (CASE_LABEL_EXPR, void_type_node,
- build_int_cst (NULL_TREE, d->n),
- build_int_cst (NULL_TREE, d->n), label);
+ tmp = fold_build3 (CASE_LABEL_EXPR, void_type_node,
+ build_int_cst (NULL_TREE, d->n),
+ build_int_cst (NULL_TREE, d->n), label);
gfc_add_expr_to_block (&body, tmp);
}
@@ -1775,7 +1776,7 @@ gfc_trans_forall_loop (forall_info *forall_tmp, tree body,
gfc_add_expr_to_block (&block, body);
/* Increment the loop variable. */
- tmp = build2 (PLUS_EXPR, TREE_TYPE (var), var, step);
+ tmp = fold_build2 (PLUS_EXPR, TREE_TYPE (var), var, step);
gfc_add_modify_expr (&block, var, tmp);
/* Advance to the next mask element. Only do this for the
@@ -1783,14 +1784,14 @@ gfc_trans_forall_loop (forall_info *forall_tmp, tree body,
if (n == 0 && mask_flag && forall_tmp->mask)
{
tree maskindex = forall_tmp->maskindex;
- tmp = build2 (PLUS_EXPR, gfc_array_index_type,
- maskindex, gfc_index_one_node);
+ tmp = fold_build2 (PLUS_EXPR, gfc_array_index_type,
+ maskindex, gfc_index_one_node);
gfc_add_modify_expr (&block, maskindex, tmp);
}
/* Decrement the loop counter. */
- tmp = build2 (MINUS_EXPR, TREE_TYPE (var), count,
- build_int_cst (TREE_TYPE (var), 1));
+ tmp = fold_build2 (MINUS_EXPR, TREE_TYPE (var), count,
+ build_int_cst (TREE_TYPE (var), 1));
gfc_add_modify_expr (&block, count, tmp);
body = gfc_finish_block (&block);
@@ -2241,8 +2242,8 @@ compute_overall_iter_number (forall_info *nested_forall_info, tree inner_size,
if (inner_size_body)
gfc_add_block_to_block (&body, inner_size_body);
if (forall_tmp)
- tmp = build2 (PLUS_EXPR, gfc_array_index_type, number,
- inner_size);
+ tmp = fold_build2 (PLUS_EXPR, gfc_array_index_type,
+ number, inner_size);
else
tmp = inner_size;
gfc_add_modify_expr (&body, number, tmp);
@@ -2817,8 +2818,8 @@ gfc_trans_forall_1 (gfc_code * code, forall_info * nested_forall_info)
gfc_add_modify_expr (&body, tmp, se.expr);
/* Advance to the next mask element. */
- tmp = build2 (PLUS_EXPR, gfc_array_index_type,
- maskindex, gfc_index_one_node);
+ tmp = fold_build2 (PLUS_EXPR, gfc_array_index_type,
+ maskindex, gfc_index_one_node);
gfc_add_modify_expr (&body, maskindex, tmp);
/* Generate the loops. */
@@ -3034,16 +3035,16 @@ gfc_evaluate_where_mask (gfc_expr * me, forall_info * nested_forall_info,
tmp1 = gfc_build_array_ref (cmask, count, NULL);
tmp = cond;
if (mask)
- tmp = build2 (TRUTH_AND_EXPR, mask_type, mtmp, tmp);
+ tmp = fold_build2 (TRUTH_AND_EXPR, mask_type, mtmp, tmp);
gfc_add_modify_expr (&body1, tmp1, tmp);
}
if (pmask)
{
tmp1 = gfc_build_array_ref (pmask, count, NULL);
- tmp = build1 (TRUTH_NOT_EXPR, mask_type, cond);
+ tmp = fold_build1 (TRUTH_NOT_EXPR, mask_type, cond);
if (mask)
- tmp = build2 (TRUTH_AND_EXPR, mask_type, mtmp, tmp);
+ tmp = fold_build2 (TRUTH_AND_EXPR, mask_type, mtmp, tmp);
gfc_add_modify_expr (&body1, tmp1, tmp);
}
@@ -3815,8 +3816,8 @@ gfc_trans_allocate (gfc_code * code)
tmp = se.string_length;
tmp = gfc_allocate_with_status (&se.pre, tmp, pstat);
- tmp = build2 (MODIFY_EXPR, void_type_node, se.expr,
- fold_convert (TREE_TYPE (se.expr), tmp));
+ tmp = fold_build2 (MODIFY_EXPR, void_type_node, se.expr,
+ fold_convert (TREE_TYPE (se.expr), tmp));
gfc_add_expr_to_block (&se.pre, tmp);
if (code->expr)
@@ -3944,8 +3945,8 @@ gfc_trans_deallocate (gfc_code * code)
tmp = gfc_deallocate_with_status (se.expr, pstat, false);
gfc_add_expr_to_block (&se.pre, tmp);
- tmp = build2 (MODIFY_EXPR, void_type_node,
- se.expr, build_int_cst (TREE_TYPE (se.expr), 0));
+ tmp = fold_build2 (MODIFY_EXPR, void_type_node,
+ se.expr, build_int_cst (TREE_TYPE (se.expr), 0));
}
gfc_add_expr_to_block (&se.pre, tmp);
@@ -3954,7 +3955,7 @@ gfc_trans_deallocate (gfc_code * code)
of the last deallocation to the running total. */
if (code->expr)
{
- apstat = build2 (PLUS_EXPR, TREE_TYPE (stat), astat, stat);
+ apstat = fold_build2 (PLUS_EXPR, TREE_TYPE (stat), astat, stat);
gfc_add_modify_expr (&se.pre, astat, apstat);
}
diff --git a/gcc/fortran/trans-stmt.h b/gcc/fortran/trans-stmt.h
index 66944fddf6c..f2b9b84f41a 100644
--- a/gcc/fortran/trans-stmt.h
+++ b/gcc/fortran/trans-stmt.h
@@ -1,5 +1,6 @@
/* Header for statement translation functions
- Copyright (C) 2002, 2003, 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2006, 2007, 2008
+ Free Software Foundation, Inc.
Contributed by Paul Brook
This file is part of GCC.
diff --git a/gcc/fortran/trans-types.c b/gcc/fortran/trans-types.c
index 67eaf041c23..6e98db7dbfa 100644
--- a/gcc/fortran/trans-types.c
+++ b/gcc/fortran/trans-types.c
@@ -1,6 +1,6 @@
/* Backend support for Fortran 95 basic types and derived types.
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software
- Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008
+ Free Software Foundation, Inc.
Contributed by Paul Brook <paul@nowt.org>
and Steven Bosscher <s.bosscher@student.tudelft.nl>
diff --git a/gcc/fortran/trans-types.h b/gcc/fortran/trans-types.h
index 87873060ac0..7b1da3e1113 100644
--- a/gcc/fortran/trans-types.h
+++ b/gcc/fortran/trans-types.h
@@ -1,6 +1,6 @@
/* Header for Fortran 95 types backend support.
- Copyright (C) 2002, 2003, 2004, 2005, 2007 Free Software Foundation,
- Inc.
+ Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008
+ Free Software Foundation, Inc.
Contributed by Paul Brook <paul@nowt.org>
and Steven Bosscher <s.bosscher@student.tudelft.nl>
diff --git a/gcc/fortran/trans.c b/gcc/fortran/trans.c
index 1232272762c..11ef0bf540c 100644
--- a/gcc/fortran/trans.c
+++ b/gcc/fortran/trans.c
@@ -1,5 +1,5 @@
/* Code translation -- generate GCC trees from gfc_code.
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software
+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software
Foundation, Inc.
Contributed by Paul Brook
@@ -278,8 +278,8 @@ gfc_build_addr_expr (tree type, tree t)
tree type_domain = TYPE_DOMAIN (base_type);
if (type_domain && TYPE_MIN_VALUE (type_domain))
min_val = TYPE_MIN_VALUE (type_domain);
- t = build4 (ARRAY_REF, TREE_TYPE (type), t, min_val,
- NULL_TREE, NULL_TREE);
+ t = fold (build4 (ARRAY_REF, TREE_TYPE (type),
+ t, min_val, NULL_TREE, NULL_TREE));
natural_type = type;
}
else
@@ -296,7 +296,7 @@ gfc_build_addr_expr (tree type, tree t)
{
if (DECL_P (t))
TREE_ADDRESSABLE (t) = 1;
- t = build1 (ADDR_EXPR, natural_type, t);
+ t = fold_build1 (ADDR_EXPR, natural_type, t);
}
if (type && natural_type != type)
@@ -394,11 +394,13 @@ gfc_trans_runtime_check (tree cond, stmtblock_t * pblock, locus * where,
asprintf (&message, "In file '%s', around line %d",
gfc_source_file, input_line + 1);
- arg = gfc_build_addr_expr (pchar_type_node, gfc_build_cstring_const(message));
+ arg = gfc_build_addr_expr (pchar_type_node,
+ gfc_build_localized_cstring_const (message));
gfc_free(message);
asprintf (&message, "%s", _(msgid));
- arg2 = gfc_build_addr_expr (pchar_type_node, gfc_build_cstring_const(message));
+ arg2 = gfc_build_addr_expr (pchar_type_node,
+ gfc_build_localized_cstring_const (message));
gfc_free(message);
/* Build the argument array. */
@@ -414,9 +416,9 @@ gfc_trans_runtime_check (tree cond, stmtblock_t * pblock, locus * where,
number of arguments, we can't use build_call_expr directly. */
fntype = TREE_TYPE (gfor_fndecl_runtime_error_at);
tmp = fold_builtin_call_array (TREE_TYPE (fntype),
- build1 (ADDR_EXPR,
- build_pointer_type (fntype),
- gfor_fndecl_runtime_error_at),
+ fold_build1 (ADDR_EXPR,
+ build_pointer_type (fntype),
+ gfor_fndecl_runtime_error_at),
nargs + 2, argarray);
gfc_add_expr_to_block (&block, tmp);
@@ -461,7 +463,7 @@ gfc_call_malloc (stmtblock_t * block, tree type, tree size)
/* size < 0 ? */
negative = fold_build2 (LT_EXPR, boolean_type_node, size,
build_int_cst (size_type_node, 0));
- msg = gfc_build_addr_expr (pchar_type_node, gfc_build_cstring_const
+ msg = gfc_build_addr_expr (pchar_type_node, gfc_build_localized_cstring_const
("Attempt to allocate a negative amount of memory."));
tmp = fold_build3 (COND_EXPR, void_type_node, negative,
build_call_expr (gfor_fndecl_runtime_error, 1, msg),
@@ -475,7 +477,7 @@ gfc_call_malloc (stmtblock_t * block, tree type, tree size)
size));
null_result = fold_build2 (EQ_EXPR, boolean_type_node, res,
build_int_cst (pvoid_type_node, 0));
- msg = gfc_build_addr_expr (pchar_type_node, gfc_build_cstring_const
+ msg = gfc_build_addr_expr (pchar_type_node, gfc_build_localized_cstring_const
("Memory allocation failed"));
tmp = fold_build3 (COND_EXPR, void_type_node, null_result,
build_call_expr (gfor_fndecl_os_error, 1, msg),
@@ -553,7 +555,7 @@ gfc_allocate_with_status (stmtblock_t * block, tree size, tree status)
if (status != NULL_TREE && !integer_zerop (status))
{
tmp = fold_build2 (MODIFY_EXPR, status_type,
- build1 (INDIRECT_REF, status_type, status),
+ fold_build1 (INDIRECT_REF, status_type, status),
build_int_cst (status_type, 0));
tmp = fold_build3 (COND_EXPR, void_type_node,
fold_build2 (NE_EXPR, boolean_type_node,
@@ -563,7 +565,7 @@ gfc_allocate_with_status (stmtblock_t * block, tree size, tree status)
}
/* Generate the block of code handling (size < 0). */
- msg = gfc_build_addr_expr (pchar_type_node, gfc_build_cstring_const
+ msg = gfc_build_addr_expr (pchar_type_node, gfc_build_localized_cstring_const
("Attempt to allocate negative amount of memory. "
"Possible integer overflow"));
error = build_call_expr (gfor_fndecl_runtime_error, 1, msg);
@@ -575,7 +577,7 @@ gfc_allocate_with_status (stmtblock_t * block, tree size, tree status)
gfc_start_block (&set_status_block);
gfc_add_modify_expr (&set_status_block,
- build1 (INDIRECT_REF, status_type, status),
+ fold_build1 (INDIRECT_REF, status_type, status),
build_int_cst (status_type, LIBERROR_ALLOCATION));
gfc_add_modify_expr (&set_status_block, res,
build_int_cst (pvoid_type_node, 0));
@@ -594,8 +596,8 @@ gfc_allocate_with_status (stmtblock_t * block, tree size, tree status)
size,
build_int_cst (size_type_node, 1))));
- msg = gfc_build_addr_expr (pchar_type_node,
- gfc_build_cstring_const ("Out of memory"));
+ msg = gfc_build_addr_expr (pchar_type_node, gfc_build_localized_cstring_const
+ ("Out of memory"));
tmp = build_call_expr (gfor_fndecl_os_error, 1, msg);
if (status != NULL_TREE && !integer_zerop (status))
@@ -606,7 +608,7 @@ gfc_allocate_with_status (stmtblock_t * block, tree size, tree status)
cond = fold_build2 (EQ_EXPR, boolean_type_node, status,
build_int_cst (status_type, 0));
tmp2 = fold_build2 (MODIFY_EXPR, status_type,
- build1 (INDIRECT_REF, status_type, status),
+ fold_build1 (INDIRECT_REF, status_type, status),
build_int_cst (status_type, LIBERROR_ALLOCATION));
tmp = fold_build3 (COND_EXPR, void_type_node, cond, tmp,
tmp2);
@@ -674,7 +676,7 @@ gfc_allocate_array_with_status (stmtblock_t * block, tree mem, tree size,
alloc = gfc_finish_block (&alloc_block);
/* Otherwise, we issue a runtime error or set the status variable. */
- msg = gfc_build_addr_expr (pchar_type_node, gfc_build_cstring_const
+ msg = gfc_build_addr_expr (pchar_type_node, gfc_build_localized_cstring_const
("Attempting to allocate already allocated array"));
error = build_call_expr (gfor_fndecl_runtime_error, 1, msg);
@@ -692,7 +694,7 @@ gfc_allocate_array_with_status (stmtblock_t * block, tree mem, tree size,
gfc_add_modify_expr (&set_status_block, res, fold_convert (type, tmp));
gfc_add_modify_expr (&set_status_block,
- build1 (INDIRECT_REF, status_type, status),
+ fold_build1 (INDIRECT_REF, status_type, status),
build_int_cst (status_type, LIBERROR_ALLOCATION));
tmp = fold_build2 (EQ_EXPR, boolean_type_node, status,
@@ -772,8 +774,9 @@ gfc_deallocate_with_status (tree pointer, tree status, bool can_fail)
gfc_start_block (&null);
if (!can_fail)
{
- msg = gfc_build_addr_expr (pchar_type_node, gfc_build_cstring_const
- ("Attempt to DEALLOCATE unallocated memory."));
+ msg = gfc_build_addr_expr (pchar_type_node,
+ gfc_build_localized_cstring_const
+ ("Attempt to DEALLOCATE unallocated memory."));
error = build_call_expr (gfor_fndecl_runtime_error, 1, msg);
}
else
@@ -787,7 +790,7 @@ gfc_deallocate_with_status (tree pointer, tree status, bool can_fail)
cond2 = fold_build2 (NE_EXPR, boolean_type_node, status,
build_int_cst (TREE_TYPE (status), 0));
tmp = fold_build2 (MODIFY_EXPR, status_type,
- build1 (INDIRECT_REF, status_type, status),
+ fold_build1 (INDIRECT_REF, status_type, status),
build_int_cst (status_type, 1));
error = fold_build3 (COND_EXPR, void_type_node, cond2, tmp, error);
}
@@ -809,7 +812,7 @@ gfc_deallocate_with_status (tree pointer, tree status, bool can_fail)
cond2 = fold_build2 (NE_EXPR, boolean_type_node, status,
build_int_cst (TREE_TYPE (status), 0));
tmp = fold_build2 (MODIFY_EXPR, status_type,
- build1 (INDIRECT_REF, status_type, status),
+ fold_build1 (INDIRECT_REF, status_type, status),
build_int_cst (status_type, 0));
tmp = fold_build3 (COND_EXPR, void_type_node, cond2, tmp,
build_empty_stmt ());
@@ -855,7 +858,7 @@ gfc_call_realloc (stmtblock_t * block, tree mem, tree size)
/* size < 0 ? */
negative = fold_build2 (LT_EXPR, boolean_type_node, size,
build_int_cst (size_type_node, 0));
- msg = gfc_build_addr_expr (pchar_type_node, gfc_build_cstring_const
+ msg = gfc_build_addr_expr (pchar_type_node, gfc_build_localized_cstring_const
("Attempt to allocate a negative amount of memory."));
tmp = fold_build3 (COND_EXPR, void_type_node, negative,
build_call_expr (gfor_fndecl_runtime_error, 1, msg),
@@ -872,8 +875,8 @@ gfc_call_realloc (stmtblock_t * block, tree mem, tree size)
build_int_cst (size_type_node, 0));
null_result = fold_build2 (TRUTH_AND_EXPR, boolean_type_node, null_result,
nonzero);
- msg = gfc_build_addr_expr (pchar_type_node,
- gfc_build_cstring_const ("Out of memory"));
+ msg = gfc_build_addr_expr (pchar_type_node, gfc_build_localized_cstring_const
+ ("Out of memory"));
tmp = fold_build3 (COND_EXPR, void_type_node, null_result,
build_call_expr (gfor_fndecl_os_error, 1, msg),
build_empty_stmt ());
diff --git a/gcc/fortran/trans.h b/gcc/fortran/trans.h
index 9ccf5713bee..72476888e6b 100644
--- a/gcc/fortran/trans.h
+++ b/gcc/fortran/trans.h
@@ -526,10 +526,6 @@ typedef struct gfc_powdecl_list GTY(())
gfc_powdecl_list;
extern GTY(()) gfc_powdecl_list gfor_fndecl_math_powi[4][3];
-extern GTY(()) tree gfor_fndecl_math_cpowf;
-extern GTY(()) tree gfor_fndecl_math_cpow;
-extern GTY(()) tree gfor_fndecl_math_cpowl10;
-extern GTY(()) tree gfor_fndecl_math_cpowl16;
extern GTY(()) tree gfor_fndecl_math_ishftc4;
extern GTY(()) tree gfor_fndecl_math_ishftc8;
extern GTY(()) tree gfor_fndecl_math_ishftc16;
diff --git a/gcc/fortran/types.def b/gcc/fortran/types.def
index ce23770c2db..22dcafd2397 100644
--- a/gcc/fortran/types.def
+++ b/gcc/fortran/types.def
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
+/* Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/modulo-sched.c b/gcc/modulo-sched.c
index 0fe180fac01..3d710ad6a43 100644
--- a/gcc/modulo-sched.c
+++ b/gcc/modulo-sched.c
@@ -1587,18 +1587,17 @@ get_sched_window (partial_schedule_ptr ps, int *nodes_order, int i,
/* Calculate MUST_PRECEDE/MUST_FOLLOW bitmaps of U_NODE; which is the
node currently been scheduled. At the end of the calculation
- MUST_PRECEDE/MUST_FOLLOW contains all predecessors/successors of U_NODE
- which are in SCHED_NODES (already scheduled nodes) and scheduled at
- the same row as the first/last row of U_NODE's scheduling window.
+ MUST_PRECEDE/MUST_FOLLOW contains all predecessors/successors of
+ U_NODE which are (1) already scheduled in the first/last row of
+ U_NODE's scheduling window, (2) whose dependence inequality with U
+ becomes an equality when U is scheduled in this same row, and (3)
+ whose dependence latency is zero.
+
The first and last rows are calculated using the following parameters:
START/END rows - The cycles that begins/ends the traversal on the window;
searching for an empty cycle to schedule U_NODE.
STEP - The direction in which we traverse the window.
- II - The initiation interval.
- TODO: We can add an insn to the must_precede/must_follow bitmap only
- if it has tight dependence to U and they are both scheduled in the
- same row. The current check is more conservative and content with
- the fact that both U and the insn are scheduled in the same row. */
+ II - The initiation interval. */
static void
calculate_must_precede_follow (ddg_node_ptr u_node, int start, int end,
@@ -1607,7 +1606,6 @@ calculate_must_precede_follow (ddg_node_ptr u_node, int start, int end,
{
ddg_edge_ptr e;
int first_cycle_in_window, last_cycle_in_window;
- int first_row_in_window, last_row_in_window;
gcc_assert (must_precede && must_follow);
@@ -1621,18 +1619,27 @@ calculate_must_precede_follow (ddg_node_ptr u_node, int start, int end,
first_cycle_in_window = (step == 1) ? start : end - step;
last_cycle_in_window = (step == 1) ? end - step : start;
- first_row_in_window = SMODULO (first_cycle_in_window, ii);
- last_row_in_window = SMODULO (last_cycle_in_window, ii);
-
sbitmap_zero (must_precede);
sbitmap_zero (must_follow);
if (dump_file)
fprintf (dump_file, "\nmust_precede: ");
+ /* Instead of checking if:
+ (SMODULO (SCHED_TIME (e->src), ii) == first_row_in_window)
+ && ((SCHED_TIME (e->src) + e->latency - (e->distance * ii)) ==
+ first_cycle_in_window)
+ && e->latency == 0
+ we use the fact that latency is non-negative:
+ SCHED_TIME (e->src) - (e->distance * ii) <=
+ SCHED_TIME (e->src) + e->latency - (e->distance * ii)) <=
+ first_cycle_in_window
+ and check only if
+ SCHED_TIME (e->src) - (e->distance * ii) == first_cycle_in_window */
for (e = u_node->in; e != 0; e = e->next_in)
if (TEST_BIT (sched_nodes, e->src->cuid)
- && (SMODULO (SCHED_TIME (e->src), ii) == first_row_in_window))
+ && ((SCHED_TIME (e->src) - (e->distance * ii)) ==
+ first_cycle_in_window))
{
if (dump_file)
fprintf (dump_file, "%d ", e->src->cuid);
@@ -1643,9 +1650,21 @@ calculate_must_precede_follow (ddg_node_ptr u_node, int start, int end,
if (dump_file)
fprintf (dump_file, "\nmust_follow: ");
+ /* Instead of checking if:
+ (SMODULO (SCHED_TIME (e->dest), ii) == last_row_in_window)
+ && ((SCHED_TIME (e->dest) - e->latency + (e->distance * ii)) ==
+ last_cycle_in_window)
+ && e->latency == 0
+ we use the fact that latency is non-negative:
+ SCHED_TIME (e->dest) + (e->distance * ii) >=
+ SCHED_TIME (e->dest) - e->latency + (e->distance * ii)) >=
+ last_cycle_in_window
+ and check only if
+ SCHED_TIME (e->dest) + (e->distance * ii) == last_cycle_in_window */
for (e = u_node->out; e != 0; e = e->next_out)
if (TEST_BIT (sched_nodes, e->dest->cuid)
- && (SMODULO (SCHED_TIME (e->dest), ii) == last_row_in_window))
+ && ((SCHED_TIME (e->dest) + (e->distance * ii)) ==
+ last_cycle_in_window))
{
if (dump_file)
fprintf (dump_file, "%d ", e->dest->cuid);
diff --git a/gcc/opts.c b/gcc/opts.c
index 96643ef48fa..8bee44b947a 100644
--- a/gcc/opts.c
+++ b/gcc/opts.c
@@ -58,6 +58,11 @@ bool extra_warnings;
bool warn_larger_than;
HOST_WIDE_INT larger_than_size;
+/* True to warn about any function whose frame size is larger
+ * than N bytes. */
+bool warn_frame_larger_than;
+HOST_WIDE_INT frame_larger_than_size;
+
/* Hack for cooperation between set_Wunused and set_Wextra. */
static bool maybe_warn_unused_parameter;
@@ -360,6 +365,12 @@ DEF_VEC_ALLOC_P(char_p,heap);
static VEC(char_p,heap) *flag_instrument_functions_exclude_functions;
static VEC(char_p,heap) *flag_instrument_functions_exclude_files;
+typedef const char *const_char_p; /* For DEF_VEC_P. */
+DEF_VEC_P(const_char_p);
+DEF_VEC_ALLOC_P(const_char_p,heap);
+
+static VEC(const_char_p,heap) *ignored_options;
+
/* Input file names. */
const char **in_fnames;
unsigned num_in_fnames;
@@ -438,6 +449,33 @@ complain_wrong_lang (const char *text, const struct cl_option *option,
free (bad_lang);
}
+/* Buffer the unknown option described by the string OPT. Currently,
+ we only complain about unknown -Wno-* options if they may have
+ prevented a diagnostic. Otherwise, we just ignore them. */
+
+static void postpone_unknown_option_error(const char *opt)
+{
+ VEC_safe_push (const_char_p, heap, ignored_options, opt);
+}
+
+/* Produce an error for each option previously buffered. */
+
+void print_ignored_options (void)
+{
+ location_t saved_loc = input_location;
+
+ input_location = 0;
+
+ while (!VEC_empty (const_char_p, ignored_options))
+ {
+ const char *opt;
+ opt = VEC_pop (const_char_p, ignored_options);
+ error ("unrecognized command line option \"%s\"", opt);
+ }
+
+ input_location = saved_loc;
+}
+
/* Handle the switch beginning at ARGV for the language indicated by
LANG_MASK. Returns the number of switches consumed. */
static unsigned int
@@ -467,6 +505,14 @@ handle_option (const char **argv, unsigned int lang_mask)
opt = dup;
value = 0;
opt_index = find_opt (opt + 1, lang_mask | CL_COMMON | CL_TARGET);
+ if (opt_index == cl_options_count)
+ {
+ /* We don't generate errors for unknown -Wno-* options
+ unless we issue diagnostics. */
+ postpone_unknown_option_error (argv[0]);
+ result = 1;
+ goto done;
+ }
}
if (opt_index == cl_options_count)
@@ -1498,6 +1544,11 @@ common_handle_option (size_t scode, const char *arg, int value,
warn_larger_than = value != -1;
break;
+ case OPT_Wframe_larger_than_:
+ frame_larger_than_size = value;
+ warn_frame_larger_than = value != -1;
+ break;
+
case OPT_Wstrict_aliasing:
set_Wstrict_aliasing (value);
break;
diff --git a/gcc/opts.h b/gcc/opts.h
index e6bee109e48..2f543407de0 100644
--- a/gcc/opts.h
+++ b/gcc/opts.h
@@ -105,4 +105,5 @@ extern bool get_option_state (int, struct cl_option_state *);
extern void enable_warning_as_error (const char *arg, int value,
unsigned int lang_mask);
+extern void print_ignored_options (void);
#endif
diff --git a/gcc/predict.c b/gcc/predict.c
index 472484822f3..cedb3d54818 100644
--- a/gcc/predict.c
+++ b/gcc/predict.c
@@ -1297,7 +1297,7 @@ tree_bb_level_predictions (void)
{
tree stmt = bsi_stmt (bsi);
tree decl;
- bool next = false;
+
switch (TREE_CODE (stmt))
{
case GIMPLE_MODIFY_STMT:
diff --git a/gcc/predict.def b/gcc/predict.def
index a4cfe6046f2..a858c016aa7 100644
--- a/gcc/predict.def
+++ b/gcc/predict.def
@@ -92,15 +92,15 @@ DEF_PREDICTOR (PRED_TREE_POINTER, "pointer (on trees)", HITRATE (85), 0)
DEF_PREDICTOR (PRED_OPCODE_POSITIVE, "opcode values positive", HITRATE (79), 0)
DEF_PREDICTOR (PRED_OPCODE_NONEQUAL, "opcode values nonequal", HITRATE (71), 0)
DEF_PREDICTOR (PRED_FPOPCODE, "fp_opcode", HITRATE (90), 0)
-DEF_PREDICTOR (PRED_TREE_OPCODE_POSITIVE, "opcode values positive (on trees)", HITRATE (70), 0)
-DEF_PREDICTOR (PRED_TREE_OPCODE_NONEQUAL, "opcode values nonequal (on trees)", HITRATE (69), 0)
+DEF_PREDICTOR (PRED_TREE_OPCODE_POSITIVE, "opcode values positive (on trees)", HITRATE (73), 0)
+DEF_PREDICTOR (PRED_TREE_OPCODE_NONEQUAL, "opcode values nonequal (on trees)", HITRATE (72), 0)
DEF_PREDICTOR (PRED_TREE_FPOPCODE, "fp_opcode (on trees)", HITRATE (90), 0)
/* Branch guarding call is probably taken. */
-DEF_PREDICTOR (PRED_CALL, "call", HITRATE (69), 0)
+DEF_PREDICTOR (PRED_CALL, "call", HITRATE (71), 0)
/* Branch causing function to terminate is probably not taken. */
-DEF_PREDICTOR (PRED_TREE_EARLY_RETURN, "early return (on trees)", HITRATE (54), 0)
+DEF_PREDICTOR (PRED_TREE_EARLY_RETURN, "early return (on trees)", HITRATE (61), 0)
/* Branch containing goto is probably not taken. */
DEF_PREDICTOR (PRED_GOTO, "goto", HITRATE (70), 0)
@@ -112,7 +112,7 @@ DEF_PREDICTOR (PRED_CONST_RETURN, "const return", HITRATE (67), 0)
DEF_PREDICTOR (PRED_NEGATIVE_RETURN, "negative return", HITRATE (96), 0)
/* Branch ending with return; is probably not taken */
-DEF_PREDICTOR (PRED_NULL_RETURN, "null return", HITRATE (96), 0)
+DEF_PREDICTOR (PRED_NULL_RETURN, "null return", HITRATE (90), 0)
/* Branches to a mudflap bounds check are extremely unlikely. */
DEF_PREDICTOR (PRED_MUDFLAP, "mudflap check", PROB_VERY_LIKELY, 0)
diff --git a/gcc/regclass.c b/gcc/regclass.c
index a4734f2c9bd..911a19aefe6 100644
--- a/gcc/regclass.c
+++ b/gcc/regclass.c
@@ -1,6 +1,6 @@
/* Compute register class preferences for pseudo-registers.
Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996
- 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+ 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
This file is part of GCC.
@@ -2323,8 +2323,6 @@ reg_scan (rtx f, unsigned int nregs ATTRIBUTE_UNUSED)
We should only record information for REGs with numbers
greater than or equal to MIN_REGNO. */
-extern struct tree_opt_pass *current_pass;
-
static void
reg_scan_mark_refs (rtx x, rtx insn)
{
diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c
index f8756040ce0..03fbc750dcf 100644
--- a/gcc/simplify-rtx.c
+++ b/gcc/simplify-rtx.c
@@ -2428,6 +2428,19 @@ simplify_binary_operation_1 (enum rtx_code code, enum machine_mode mode,
return simplify_gen_binary (code, mode, tem, op1);
}
}
+
+ /* (and X (ior (not X) Y) -> (and X Y) */
+ if (GET_CODE (op1) == IOR
+ && GET_CODE (XEXP (op1, 0)) == NOT
+ && op0 == XEXP (XEXP (op1, 0), 0))
+ return simplify_gen_binary (AND, mode, op0, XEXP (op1, 1));
+
+ /* (and (ior (not X) Y) X) -> (and X Y) */
+ if (GET_CODE (op0) == IOR
+ && GET_CODE (XEXP (op0, 0)) == NOT
+ && op1 == XEXP (XEXP (op0, 0), 0))
+ return simplify_gen_binary (AND, mode, op1, XEXP (op0, 1));
+
tem = simplify_associative_operation (code, mode, op0, op1);
if (tem)
return tem;
diff --git a/gcc/stor-layout.c b/gcc/stor-layout.c
index 1ae2db5ca00..a7bcd054400 100644
--- a/gcc/stor-layout.c
+++ b/gcc/stor-layout.c
@@ -388,13 +388,13 @@ layout_decl (tree decl, unsigned int known_align)
{
enum machine_mode xmode
= mode_for_size_tree (DECL_SIZE (decl), MODE_INT, 1);
+ unsigned int xalign = GET_MODE_ALIGNMENT (xmode);
if (xmode != BLKmode
- && (known_align == 0
- || known_align >= GET_MODE_ALIGNMENT (xmode)))
+ && !(xalign > BITS_PER_UNIT && DECL_PACKED (decl))
+ && (known_align == 0 || known_align >= xalign))
{
- DECL_ALIGN (decl) = MAX (GET_MODE_ALIGNMENT (xmode),
- DECL_ALIGN (decl));
+ DECL_ALIGN (decl) = MAX (xalign, DECL_ALIGN (decl));
DECL_MODE (decl) = xmode;
DECL_BIT_FIELD (decl) = 0;
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 48c47b2e072..b627135f100 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,258 @@
+2008-02-26 Paolo Carlini <pcarlini@suse.de>
+
+ PR c++/35323
+ * g++.dg/lookup/crash7.C: New.
+
+2008-02-26 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ * gcc.c-torture/execute/nest-align-1.c: Use the largest alignment.
+
+2008-02-25 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc.target/i386/pr25993.c: Skip on *-*-mingw*.
+
+2008-02-25 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc.dg/debug/dwarf2/aranges-fnsec-1.c: Add -w to dg-options.
+
+2008-02-25 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc.dg/builtins-config.h: Disable C99 runtime testing for
+ Windows.
+
+2008-02-25 Joseph Myers <joseph@codesourcery.com>
+
+ * lib/target-supports.exp (check_profiling_available): Report -p
+ unavailable on *-*-mingw*.
+
+2008-02-25 Joseph Myers <joseph@codesourcery.com>
+
+ * lib/target-supports.exp (check_effective_target_pthread_h): New.
+ * gcc.dg/pthread-init-1.c, gcc.dg/pthread-init-2.c: Use
+ dg-require-effective-target pthread_h.
+
+2008-02-26 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
+
+ * gcc.dg/Wswitch-enum-error.c: New.
+ * gcc.dg/Wswitch-error.c: New.
+ * gcc.dg/20011021-1.c: Use two directives to match two different
+ messages.
+
+2008-02-26 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
+
+ PR 28322
+ * gcc.dg/pr28322.c: New.
+ * gcc.dg/pr28322-2.c: New.
+ * lib/prune.exp: Ignore "At top level" even if there is no ':'
+ preceding it.
+
+2008-02-25 Paolo Carlini <pcarlini@suse.de>
+
+ PR c++/35333
+ * g++.dg/other/error26.C: New.
+
+2008-02-25 Paolo Carlini <pcarlini@suse.de>
+
+ PR c++/35338
+ * g++.dg/other/error25.C: New.
+
+2008-02-25 Andreas Krebbel <krebbel1@de.ibm.com>
+
+ PR target/35258
+ * gcc.dg/pr35258.c: New testcase.
+
+2008-02-25 Jan Beulich <jbeulich@novell.com>
+
+ * gcc.dg/20020426-2.c: Remove bogus workaround.
+ * g++.old-deja/g++.other/store-expr1.C: Likewise.
+ * gcc.target/i386/movq-2.c: Also permit use of movzbl.
+
+2008-02-25 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ * gfortran.dg/large_real_kind_3.F90: Xfail on ppc-darwin.
+
+2008-02-25 Uros Bizjak <ubizjak@gmail.com>
+
+ PR middle-end/19984
+ * gcc.dg/pr19984.c: New test.
+ * gcc.dg/dfp/compare-special.h: Use _nan instead of nan as the
+ name of the variable.
+
+2008-02-25 Uros Bizjak <ubizjak@gmail.com>
+
+ * gcc.dg/vect/vect-99.c: Include stdlib.h and tree-vect.h.
+ (main): Call check_vect and foo. Check array values after
+ the call to foo.
+ * gcc.dg/vect/vect-117.c: Call check_vect.
+ * gcc.dg/vect/no-vfa-pr29145.c: Ditto.
+
+2008-02-25 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ * gcc.dg/tree-ssa/ssa-pre-10.c: Use -fno-finite-math-only on
+ sh* targets.
+
+2008-02-24 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/35349
+ * gcc.c-torture/execute/20050604-1.x: New file.
+
+2008-02-24 Uros Bizjak <ubizjak@gmail.com>
+
+ * gcc.target/i386/pr22076.c: Update number of mov insns
+ for PIC targets.
+ * gcc.target/i386/pr34256.c: Ditto.
+
+2008-02-24 Diego Novillo <dnovillo@google.com>
+
+ http://gcc.gnu.org/ml/gcc-patches/2008-02/msg01094.html
+
+ PR 33738
+ * g++.dg/warn/pr33738.C: New.
+
+2008-02-24 Richard Sandiford <rsandifo@nildram.co.uk>
+
+ * gcc.c-torture/execute/nest-align-1.x: New file.
+
+2008-02-24 Danny Smith <dannysmith@users.sourceforge.net>
+
+ PR c++/34749
+ * g++.dg.ext/dllimport13.C: New test.
+
+2008-02-23 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ PR libfortran/24685
+ * gfortran.dg/large_real_kind_form_io_2.f90: XFAIL on
+ powerpc*-apple-darwin*.
+
+2008-02-23 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ * gfortran.dg/large_real_kind_2.F90: Split testing of ERF and
+ ERFC into gfortran.dg/large_real_kind_3.F90.
+ * gfortran.dg/large_real_kind_3.F90: New test.
+
+2008-02-23 Andrew Pinski <andrew_pinski@playstation.sony.com>
+
+ PR rtl-opt/33512
+ * gcc.dg/and-1.c: New test.
+
+2008-02-23 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * gcc.c-torture/execute/20080222-1.c: New test.
+
+2008-02-23 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/22076
+ PR target/34256
+ * gcc.target/i386/pr22076.c: New test.
+ * gcc.target/i386/pr34256.c: New test.
+ * gcc.target/i386/vecinit-5.c: New test.
+ * gcc.target/i386/vecinit-6.c: New test.
+ * gcc.target/i386/vecinit-[1-4].c: Check that no MMX register is used.
+
+ * g++.dg/compat/struct-layout-1.h: Do not include <mmintrin.h> and
+ <xmmintrin.h>, define __m64 and __m128 directly.
+ * g++.dg/compat/struct-layout-1_generate.c: Add -mno-mmx for x86.
+
+2008-02-22 Andrew Pinski <andrew_pinski@playstation.sony.com>
+
+ PR C++/34715
+ * g++.dg/ext/always_inline-1.C: New test.
+ * g++.dg/ext/always_inline-2.C: New test.
+ * g++.dg/ext/always_inline-3.C: New test.
+ * g++.dg/ext/always_inline-4.C: New test.
+
+2008-02-22 Hans-Peter Nilsson <hp@axis.com>
+
+ * gcc.target/cris/asm-b-1.c: New test.
+
+2008-02-22 Paolo Carlini <pcarlini@suse.de>
+
+ PR c++/35282
+ * g++.dg/template/nontype17.C: Add.
+
+2008-02-22 Paolo Carlini <pcarlini@suse.de>
+
+ PR c++/35282
+ Revert:
+ 2008-02-14 Paolo Carlini <pcarlini@suse.de>
+
+ PR c++/28743
+ * g++.dg/template/nontype17.C: New.
+ * g++.dg/template/nontype16.C: Add error.
+
+2008-02-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ PR c/19999
+ * gcc.dg/Wfloat-equal-1.c: New.
+ * g++.dg/warn/Wfloat-equal-1.C: New.
+
+2008-02-21 Michael Matz <matz@suse.de>
+
+ PR target/35264
+ * gcc.dg/pr35264.c: New testcase.
+
+2008-02-21 Richard Guenther <rguenther@suse.de>
+
+ * gfortran.dg/reassoc_1.f90: New testcase.
+ * gfortran.dg/reassoc_2.f90: Likewise.
+ * gfortran.dg/reassoc_3.f90: Likewise.
+
+2008-02-20 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libfortran/34974
+ * gfortran.dg/fmt_t_7.f: New test.
+
+ PR libfortran/35132
+ * gfortran.dg/streamio_15.f90: New test.
+
+2008-02-20 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libfortran/35036
+ * gfortran.dg/fmt_zero_digits.f90: Revise test.
+
+2008-02-20 Seongbae Park <seongbae.park@gmail.com>
+
+ * gcc.dg/Wframe-larger-than.c: New option test.
+
+2008-02-20 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/34997
+ * gfortran.dg/dollar_sym_1.f90: New.
+ * gfortran.dg/dollar_sym_2.f90: New.
+
+2008-02-20 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/35265
+ * gcc.dg/builtins-66.c: New testcase.
+
+2008-02-20 Richard Guenther <rguenther@suse.de>
+
+ * gcc.dg/fold-reassoc-1.c: New testcase.
+ * gcc.dg/tree-ssa/recip-3.c: Adjust to not compute d/d.
+
+2008-02-20 Richard Guenther <rguenther@suse.de>
+
+ * gcc.dg/tree-ssa/reassoc-13.c: New testcase.
+
+2008-02-20 Ira Rosen <irar@il.ibm.com>
+
+ * lib/target-supports.exp (check_effective_target_vect_unpack):
+ Return true for SPU.
+ (check_effective_target_vect_short_mult): Likewise.
+ * gcc.dg/vect/vect-reduc-dot-s16b.c: Expect vectorization of
+ the loop on targets that support vect_unpack.
+
+2008-02-20 Uros Bizjak <ubizjak@gmail.com>
+
+ * g++.dg/compat/struct-layout-1_generate.c (DG_OPTIONS): New define.
+ (switchfiles): Use DG_OPTIONS. Explicitly name arguments in fprintf
+ templates to reduce number of passed arguments.
+
+2008-02-19 Jason Merrill <jason@redhat.com>
+
+ PR c++/34950
+ * g++.dg/template/explicit-args1.C: New.
+
2008-02-19 Richard Guenther <rguenther@suse.de>
PR tree-optimization/34989
diff --git a/gcc/testsuite/g++.dg/compat/struct-layout-1.h b/gcc/testsuite/g++.dg/compat/struct-layout-1.h
index 69c490f7898..2b93a72c49d 100644
--- a/gcc/testsuite/g++.dg/compat/struct-layout-1.h
+++ b/gcc/testsuite/g++.dg/compat/struct-layout-1.h
@@ -44,12 +44,12 @@ typedef int u2df;
#endif
#if (defined __i386__ || defined __x86_64__) && !defined SKIP_ATTRIBUTE
# ifdef __MMX__
-# include <mmintrin.h>
+typedef int __m64 __attribute__ ((__vector_size__ (8)));
# else
typedef int __m64;
# endif
# ifdef __SSE__
-# include <xmmintrin.h>
+typedef float __m128 __attribute__ ((__vector_size__ (16)));
# else
typedef int __m128;
# endif
diff --git a/gcc/testsuite/g++.dg/compat/struct-layout-1_generate.c b/gcc/testsuite/g++.dg/compat/struct-layout-1_generate.c
index ec4f28a81e5..0bb70eacc6d 100644
--- a/gcc/testsuite/g++.dg/compat/struct-layout-1_generate.c
+++ b/gcc/testsuite/g++.dg/compat/struct-layout-1_generate.c
@@ -1,5 +1,5 @@
/* Structure layout test generator.
- Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
Contributed by Jakub Jelinek <jakub@redhat.com>.
This file is part of GCC.
@@ -42,6 +42,13 @@ along with GCC; see the file COPYING3. If not see
#define COMPAT_PRLL "ll"
#endif
+#define DG_OPTIONS "\
+/* { dg-options \"%1$s-I%2$s\" } */\n\
+/* { dg-options \"%1$s-I%2$s -mno-mmx\" { target i?86-*-* x86_64-*-* } } */\n\
+/* { dg-options \"%1$s-I%2$s -fno-common\" { target hppa*-*-hpux* } } */\n\
+/* { dg-options \"%1$s-I%2$s -mno-base-addresses\" { target mmix-*-* } } */\n\
+\n"
+
typedef unsigned int hashval_t;
enum TYPE
@@ -521,20 +528,17 @@ switchfiles (int fields)
fputs ("failed to create test files\n", stderr);
exit (1);
}
- fprintf (outfile, "\
-/* { dg-options \"-I%s\" } */\n\
-/* { dg-options \"-I%s -fno-common\" { target hppa*-*-hpux* } } */\n\
-/* { dg-options \"-I%s -mno-base-addresses\" { target mmix-*-* } } */\n\
+ fprintf (outfile, DG_OPTIONS "\
#include \"struct-layout-1.h\"\n\
\n\
#define TX(n, type, attrs, fields, ops) extern void test##n (void);\n\
-#include \"t%03d_test.h\"\n\
+#include \"t%3$03d_test.h\"\n\
#undef TX\n\
\n\
int main (void)\n\
{\n\
#define TX(n, type, attrs, fields, ops) test##n ();\n\
-#include \"t%03d_test.h\"\n\
+#include \"t%3$03d_test.h\"\n\
#undef TX\n\
if (fails)\n\
{\n\
@@ -542,33 +546,27 @@ int main (void)\n\
abort ();\n\
}\n\
exit (0);\n\
-}\n", srcdir, srcdir, srcdir, filecnt, filecnt);
+}\n", "", srcdir, filecnt);
fclose (outfile);
sprintf (destptr, "t%03d_x.C", filecnt);
outfile = fopen (destbuf, "w");
if (outfile == NULL)
goto fail;
- fprintf (outfile, "\
-/* { dg-options \"-w -I%s\" } */\n\
-/* { dg-options \"-w -I%s -fno-common\" { target hppa*-*-hpux* } } */\n\
-/* { dg-options \"-w -I%s -mno-base-addresses\" { target mmix-*-* } } */\n\
+ fprintf (outfile, DG_OPTIONS "\
#include \"struct-layout-1_x1.h\"\n\
-#include \"t%03d_test.h\"\n\
+#include \"t%3$03d_test.h\"\n\
#include \"struct-layout-1_x2.h\"\n\
-#include \"t%03d_test.h\"\n", srcdir, srcdir, srcdir, filecnt, filecnt);
+#include \"t%3$03d_test.h\"\n", "-w ", srcdir, filecnt);
fclose (outfile);
sprintf (destptr, "t%03d_y.C", filecnt);
outfile = fopen (destbuf, "w");
if (outfile == NULL)
goto fail;
- fprintf (outfile, "\
-/* { dg-options \"-w -I%s\" } */\n\
-/* { dg-options \"-w -I%s -fno-common\" { target hppa*-*-hpux* } } */\n\
-/* { dg-options \"-w -I%s -mno-base-addresses\" { target mmix-*-* } } */\n\
+ fprintf (outfile, DG_OPTIONS "\
#include \"struct-layout-1_y1.h\"\n\
-#include \"t%03d_test.h\"\n\
+#include \"t%3$03d_test.h\"\n\
#include \"struct-layout-1_y2.h\"\n\
-#include \"t%03d_test.h\"\n", srcdir, srcdir, srcdir, filecnt, filecnt);
+#include \"t%3$03d_test.h\"\n", "-w ", srcdir, filecnt);
fclose (outfile);
sprintf (destptr, "t%03d_test.h", filecnt);
outfile = fopen (destbuf, "w");
diff --git a/gcc/testsuite/g++.dg/lookup/strong-using-1.C b/gcc/testsuite/g++.dg/lookup/strong-using-1.C
index a16fd6a50b9..739dc936e40 100644
--- a/gcc/testsuite/g++.dg/lookup/strong-using-1.C
+++ b/gcc/testsuite/g++.dg/lookup/strong-using-1.C
@@ -3,10 +3,9 @@
// { dg-do compile }
namespace fool {
- namespace foo {
+ inline namespace foo {
template <class T> void swap(T, T);
}
- using namespace foo __attribute__((strong));
template <class T> void swap(T);
}
diff --git a/gcc/testsuite/g++.dg/lookup/strong-using-2.C b/gcc/testsuite/g++.dg/lookup/strong-using-2.C
index 21e47cba014..5c4b425fa8a 100644
--- a/gcc/testsuite/g++.dg/lookup/strong-using-2.C
+++ b/gcc/testsuite/g++.dg/lookup/strong-using-2.C
@@ -3,16 +3,14 @@
// { dg-do compile }
namespace foo {
- namespace foo_impl {
+ inline namespace foo_impl {
class T; // { dg-error "T" "" }
}
- using namespace foo_impl __attribute__((strong));
}
namespace bar {
- namespace bar_impl {
+ inline namespace bar_impl {
class T; // { dg-error "T" "" }
}
- using namespace bar_impl __attribute__((strong));
using namespace foo;
}
namespace baz {
diff --git a/gcc/testsuite/g++.dg/lookup/strong-using-3.C b/gcc/testsuite/g++.dg/lookup/strong-using-3.C
index 9b4d3c3ffea..17c50329df0 100644
--- a/gcc/testsuite/g++.dg/lookup/strong-using-3.C
+++ b/gcc/testsuite/g++.dg/lookup/strong-using-3.C
@@ -3,10 +3,9 @@
// { dg-do compile }
namespace bar {
- namespace foo {
+ inline namespace foo {
template <class T> void f(T, T);
}
- using namespace foo __attribute__((strong));
template <class T> void f(T);
}
diff --git a/gcc/testsuite/g++.dg/template/nontype16.C b/gcc/testsuite/g++.dg/template/nontype16.C
index 4b9f7602876..36d1e9564a0 100644
--- a/gcc/testsuite/g++.dg/template/nontype16.C
+++ b/gcc/testsuite/g++.dg/template/nontype16.C
@@ -5,5 +5,5 @@ template<int> struct A
template<typename> void foo();
};
-template<> template<struct T> void A<0>::foo() {} // { dg-error "not a valid type|match" }
+template<> template<struct T> void A<0>::foo() {} // { dg-error "not a valid type" }
diff --git a/gcc/testsuite/g++.dg/template/nontype17.C b/gcc/testsuite/g++.dg/template/nontype17.C
index c8f3404dea7..f3a4480c9e3 100644
--- a/gcc/testsuite/g++.dg/template/nontype17.C
+++ b/gcc/testsuite/g++.dg/template/nontype17.C
@@ -1,8 +1,8 @@
-// PR c++/28743
+// PR c++/35282
template<int> struct A
{
- template<typename> void foo();
+ template<int> void foo();
};
-template<int> template<typename> void A<0>::foo() {} // { dg-error "match" }
+template<> template<int> void A<0>::foo() {}
diff --git a/gcc/testsuite/g++.old-deja/g++.other/store-expr1.C b/gcc/testsuite/g++.old-deja/g++.other/store-expr1.C
index 5eb0d386431..72d30eba26e 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/store-expr1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/store-expr1.C
@@ -2,7 +2,6 @@
// { dg-require-effective-target ilp32 }
// { dg-require-effective-target fpic }
// { dg-options "-mtune=i686 -O2 -fpic" }
-// { dg-bogus "\[Uu\]nresolved symbol .(_GLOBAL_OFFSET_TABLE_|\[_.A-Za-z\]\[_.0-9A-Za-z\]*@(PLT|GOT|GOTOFF))|\[Bb\]ad fixup at .DATA.:" "PIC unsupported" { xfail *-*-netware* } 0 }
class G {};
struct N {
diff --git a/gcc/testsuite/gcc.c-torture/execute/nest-align-1.c b/gcc/testsuite/gcc.c-torture/execute/nest-align-1.c
index 6099a5001c9..548c8878dab 100644
--- a/gcc/testsuite/gcc.c-torture/execute/nest-align-1.c
+++ b/gcc/testsuite/gcc.c-torture/execute/nest-align-1.c
@@ -4,7 +4,7 @@
#include <stddef.h>
-typedef int aligned __attribute__((aligned(16)));
+typedef int aligned __attribute__((aligned));
extern void abort (void);
void
diff --git a/gcc/testsuite/gcc.dg/20011021-1.c b/gcc/testsuite/gcc.dg/20011021-1.c
index 821db47c2ed..dc998c8af61 100644
--- a/gcc/testsuite/gcc.dg/20011021-1.c
+++ b/gcc/testsuite/gcc.dg/20011021-1.c
@@ -27,7 +27,8 @@ struct multilevel
char *f;
};
-struct t T0 = { 1 }; /* { dg-warning "(missing|near) init" } */
+struct t T0 = { 1 }; /* { dg-warning "missing init" } */
+/* { dg-warning "near init" "near init" { target *-*-* } 30 } */
struct t T1 = { .a = 1 }; /* { dg-bogus "(missing|near) init" } */
union u U0 = { 1 }; /* { dg-warning "initialization of union" } */
@@ -36,8 +37,9 @@ union u U1 = { .i = 1 }; /* { dg-bogus "initialization of union" } */
struct multilevel M =
{
12,
- { .b = 3 }, /* { dg-bogus "(missing|near) init" } */
+ { .b = 3 }, /* { dg-bogus "missing init" } */
{ 4 }, /* { dg-warning "initialization of union" } */
{ .n = 9 }, /* { dg-bogus "initialization of union" } */
/* "string here" */
-}; /* { dg-warning "(missing|near) init" } */
+}; /* { dg-warning "missing init" } */
+/* { dg-warning "near init" "near init" { target *-*-* } 44 } */
diff --git a/gcc/testsuite/gcc.dg/20020426-2.c b/gcc/testsuite/gcc.dg/20020426-2.c
index 5ddb3487c19..3a892ed0a68 100644
--- a/gcc/testsuite/gcc.dg/20020426-2.c
+++ b/gcc/testsuite/gcc.dg/20020426-2.c
@@ -3,7 +3,6 @@
/* { dg-do run } */
/* { dg-options "-O2" } */
/* { dg-options "-O2 -frename-registers -fomit-frame-pointer -fPIC -mtune=i686" { target { { i?86-*-* x86_64-*-* } && { ilp32 && fpic } } } } */
-/* { dg-bogus "\[Uu\]nresolved symbol .(_GLOBAL_OFFSET_TABLE_|\[_.A-Za-z\]\[_.0-9A-Za-z\]*@(PLT|GOT|GOTOFF))" "PIC unsupported" { xfail *-*-netware* } 0 } */
extern void exit (int);
diff --git a/gcc/testsuite/gcc.dg/builtins-config.h b/gcc/testsuite/gcc.dg/builtins-config.h
index 060db4ffc18..a6d280ac509 100644
--- a/gcc/testsuite/gcc.dg/builtins-config.h
+++ b/gcc/testsuite/gcc.dg/builtins-config.h
@@ -19,6 +19,8 @@
/* NetWare doesn't have the entire C99 runtime. */
#elif defined(__vxworks)
/* VxWorks doesn't have a full C99 time. (cabs is missing, for example.) */
+#elif defined(_WIN32) && !defined(__CYGWIN__)
+/* Windows doesn't have the entire C99 runtime. */
#elif (defined(__APPLE__) && defined(__ppc__) \
&& ! defined (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__))
/* MacOS versions before 10.3 don't have many C99 functions.
diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/aranges-fnsec-1.c b/gcc/testsuite/gcc.dg/debug/dwarf2/aranges-fnsec-1.c
index c6aada4611c..8bd34b2fe29 100644
--- a/gcc/testsuite/gcc.dg/debug/dwarf2/aranges-fnsec-1.c
+++ b/gcc/testsuite/gcc.dg/debug/dwarf2/aranges-fnsec-1.c
@@ -2,7 +2,7 @@
section if nothing went in there. */
/* Origin: Joseph Myers <joseph@codesourcery.com> */
/* { dg-do compile } */
-/* { dg-options "-gdwarf-2 -ffunction-sections" } */
+/* { dg-options "-gdwarf-2 -ffunction-sections -w" } */
/* { dg-final { scan-assembler-not "\\.Letext0-\\.Ltext0" } } */
int
diff --git a/gcc/testsuite/gcc.dg/dfp/compare-special.h b/gcc/testsuite/gcc.dg/dfp/compare-special.h
index 1bd77e52156..c5bef234424 100644
--- a/gcc/testsuite/gcc.dg/dfp/compare-special.h
+++ b/gcc/testsuite/gcc.dg/dfp/compare-special.h
@@ -47,13 +47,13 @@ DTYPE zero = PASTE(0.0, SUFFIX);
DTYPE one = PASTE(1.0, SUFFIX);
DTYPE two = PASTE(2.0, SUFFIX);
-volatile DTYPE x, y, z, nan, inf, m_inf;
+volatile DTYPE x, y, z, _nan, inf, m_inf;
void
test_compares (void)
{
- nan = PASTE(__builtin_nan, SUFFIX2) ("");
- inf = PASTE(__builtin_inf, SUFFIX2) ();
+ _nan = PASTE(__builtin_nan, SUFFIX2) ("");
+ inf = PASTE(__builtin_inf, SUFFIX2) ();
m_inf = - PASTE(__builtin_inf, SUFFIX2) ();
x = PASTE(__builtin_nan, SUFFIX2) ("");
@@ -65,14 +65,14 @@ test_compares (void)
if (x <= two) FAILURE ("<=", "NaN")
if (x <= zero) FAILURE ("<=", "NaN")
if (x <= m_one) FAILURE ("<=", "NaN")
- if (x <= nan) FAILURE ("<=", "NaN")
+ if (x <= _nan) FAILURE ("<=", "NaN")
if (x <= inf) FAILURE ("<=", "NaN")
if (x <= m_inf) FAILURE ("<=", "NaN")
if (two <= x) FAILURE ("<=", "NaN")
if (zero <= x) FAILURE ("<=", "NaN")
if (m_one <= x) FAILURE ("<=", "NaN")
- if (nan <= x) FAILURE ("<=", "NaN")
+ if (_nan <= x) FAILURE ("<=", "NaN")
if (inf <= x) FAILURE ("<=", "NaN")
if (m_inf <= x) FAILURE ("<=", "NaN")
@@ -102,14 +102,14 @@ test_compares (void)
if (x < two) FAILURE ("<", "NaN")
if (x < zero) FAILURE ("<", "NaN")
if (x < m_one) FAILURE ("<", "NaN")
- if (x < nan) FAILURE ("<", "NaN")
+ if (x < _nan) FAILURE ("<", "NaN")
if (x < inf) FAILURE ("<", "NaN")
if (x < m_inf) FAILURE ("<", "NaN")
if (two < x) FAILURE ("<", "NaN")
if (zero < x) FAILURE ("<", "NaN")
if (m_one < x) FAILURE ("<", "NaN")
- if (nan < x) FAILURE ("<", "NaN")
+ if (_nan < x) FAILURE ("<", "NaN")
if (inf < x) FAILURE ("<", "NaN")
if (m_inf < x) FAILURE ("<", "NaN")
@@ -139,14 +139,14 @@ test_compares (void)
if (x >= two) FAILURE (">=", "NaN")
if (x >= zero) FAILURE (">=", "NaN")
if (x >= m_one) FAILURE (">=", "NaN")
- if (x >= nan) FAILURE (">=", "NaN")
+ if (x >= _nan) FAILURE (">=", "NaN")
if (x >= inf) FAILURE (">=", "NaN")
if (x >= m_inf) FAILURE (">=", "NaN")
if (two >= x) FAILURE (">=", "NaN")
if (zero >= x) FAILURE (">=", "NaN")
if (m_one >= x) FAILURE (">=", "NaN")
- if (nan >= x) FAILURE (">=", "NaN")
+ if (_nan >= x) FAILURE (">=", "NaN")
if (inf >= x) FAILURE (">=", "NaN")
if (m_inf >= x) FAILURE (">=", "NaN")
@@ -176,14 +176,14 @@ test_compares (void)
if (x > two) FAILURE (">", "NaN")
if (x > zero) FAILURE (">", "NaN")
if (x > m_one) FAILURE (">", "NaN")
- if (x > nan) FAILURE (">", "NaN")
+ if (x > _nan) FAILURE (">", "NaN")
if (x > inf) FAILURE (">", "NaN")
if (x > m_inf) FAILURE (">", "NaN")
if (two > x) FAILURE (">", "NaN")
if (zero > x) FAILURE (">", "NaN")
if (m_one > x) FAILURE (">", "NaN")
- if (nan > x) FAILURE (">", "NaN")
+ if (_nan > x) FAILURE (">", "NaN")
if (inf > x) FAILURE (">", "NaN")
if (m_inf > x) FAILURE (">", "NaN")
@@ -213,14 +213,14 @@ test_compares (void)
if (x == two) FAILURE ("==", "NaN")
if (x == zero) FAILURE ("==", "NaN")
if (x == m_one) FAILURE ("==", "NaN")
- if (x == nan) FAILURE ("==", "NaN")
+ if (x == _nan) FAILURE ("==", "NaN")
if (x == inf) FAILURE ("==", "NaN")
if (x == m_inf) FAILURE ("==", "NaN")
if (two == x) FAILURE ("==", "NaN")
if (zero == x) FAILURE ("==", "NaN")
if (m_one == x) FAILURE ("==", "NaN")
- if (nan == x) FAILURE ("==", "NaN")
+ if (_nan == x) FAILURE ("==", "NaN")
if (inf == x) FAILURE ("==", "NaN")
if (m_inf == x) FAILURE ("==", "NaN")
@@ -250,14 +250,14 @@ test_compares (void)
if (!(x != two)) FAILURE ("!=", "NaN")
if (!(x != zero)) FAILURE ("!=", "NaN")
if (!(x != m_one)) FAILURE ("!=", "NaN")
- if (!(x != nan)) FAILURE ("!=", "NaN")
+ if (!(x != _nan)) FAILURE ("!=", "NaN")
if (!(x != inf)) FAILURE ("!=", "NaN")
if (!(x != m_inf)) FAILURE ("!=", "NaN")
if (!(two != x)) FAILURE ("!=", "NaN")
if (!(zero != x)) FAILURE ("!=", "NaN")
if (!(m_one != x)) FAILURE ("!=", "NaN")
- if (!(nan != x)) FAILURE ("!=", "NaN")
+ if (!(_nan != x)) FAILURE ("!=", "NaN")
if (!(inf != x)) FAILURE ("!=", "NaN")
if (!(m_inf != x)) FAILURE ("!=", "NaN")
diff --git a/gcc/testsuite/gcc.dg/pthread-init-1.c b/gcc/testsuite/gcc.dg/pthread-init-1.c
index 9cf4fa3d35b..2f78844fe1f 100644
--- a/gcc/testsuite/gcc.dg/pthread-init-1.c
+++ b/gcc/testsuite/gcc.dg/pthread-init-1.c
@@ -5,6 +5,7 @@
*/
/* { dg-do compile } */
+/* { dg-require-effective-target pthread_h } */
/* { dg-options "-Wextra -Wall" } */
#include "pthread-init-common.h"
diff --git a/gcc/testsuite/gcc.dg/pthread-init-2.c b/gcc/testsuite/gcc.dg/pthread-init-2.c
index 6fc427fe2eb..2e1b93aecbf 100644
--- a/gcc/testsuite/gcc.dg/pthread-init-2.c
+++ b/gcc/testsuite/gcc.dg/pthread-init-2.c
@@ -5,6 +5,7 @@
*/
/* { dg-do compile } */
+/* { dg-require-effective-target pthread_h } */
/* { dg-options "-Wextra -Wall -ansi" } */
/* { dg-options "-Wextra -Wall -ansi -D_POSIX_C_SOURCE=199506L" { target { *-*-hpux* *-*-solaris2.5.1 } } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/recip-3.c b/gcc/testsuite/gcc.dg/tree-ssa/recip-3.c
index 45c8db148ac..04b40f32a73 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/recip-3.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/recip-3.c
@@ -9,7 +9,7 @@ float h ()
int i;
double E, W, P, d;
- W = 1.;
+ W = 1.1;
d = 2.*e;
E = 1. - d;
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-10.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-10.c
index 127caa6cd6b..41af344989a 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-10.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-10.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-fre-stats" } */
+/* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-fre-stats -fno-finite-math-only" { target sh*-*-* } } */
double cos (double);
void link_error();
void f(double a)
diff --git a/gcc/testsuite/gcc.dg/vect/no-vfa-pr29145.c b/gcc/testsuite/gcc.dg/vect/no-vfa-pr29145.c
index 3a4b12636ee..283e74f7cab 100644
--- a/gcc/testsuite/gcc.dg/vect/no-vfa-pr29145.c
+++ b/gcc/testsuite/gcc.dg/vect/no-vfa-pr29145.c
@@ -31,6 +31,8 @@ int main(void)
int a[1002];
int b[1002];
+ check_vect ();
+
for (i = 0; i < 1002; ++i) {
a[i] = b[i] = i;
}
diff --git a/gcc/testsuite/gcc.dg/vect/vect-117.c b/gcc/testsuite/gcc.dg/vect/vect-117.c
index bf1e52c261c..920e29314c0 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-117.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-117.c
@@ -42,6 +42,8 @@ int main (void)
{
int i,j;
+ check_vect ();
+
foo = 0;
main1 (a, N);
diff --git a/gcc/testsuite/gcc.dg/vect/vect-99.c b/gcc/testsuite/gcc.dg/vect/vect-99.c
index aedbae43336..d29023c733e 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-99.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-99.c
@@ -1,5 +1,8 @@
/* { dg-require-effective-target vect_int } */
+#include <stdlib.h>
+#include "tree-vect.h"
+
int ca[100];
__attribute__ ((noinline))
@@ -13,6 +16,16 @@ void foo (int n)
int main (void)
{
+ int i;
+
+ check_vect ();
+
+ foo(100);
+
+ for (i = 0; i < 100; ++i) {
+ if (ca[i] != 2)
+ abort();
+ }
return 0;
}
diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16b.c b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16b.c
index 8c636a5f703..587800c032a 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16b.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16b.c
@@ -48,9 +48,9 @@ main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_short_mult && vect_widen_sum_hi_to_si } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_short_mult && { vect_widen_sum_hi_to_si || vect_unpack } } } } } */
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { target { ! vect_short_mult } } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { target { ! vect_widen_sum_hi_to_si } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { target { { ! vect_widen_sum_hi_to_si } && { ! vect_unpack } } } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.target/i386/movq-2.c b/gcc/testsuite/gcc.target/i386/movq-2.c
index 98979646f37..4a1accb583a 100644
--- a/gcc/testsuite/gcc.target/i386/movq-2.c
+++ b/gcc/testsuite/gcc.target/i386/movq-2.c
@@ -23,4 +23,4 @@ foo (struct S *x)
/* { dg-final { scan-assembler-not "movl\[ \t\]*123" } } */
/* { dg-final { scan-assembler "movzbl\[ \t\]*123" } } */
-/* { dg-final { scan-assembler "movl\[ \t\]*120" } } */
+/* { dg-final { scan-assembler "mov(zb)?l\[ \t\]*120" } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr25993.c b/gcc/testsuite/gcc.target/i386/pr25993.c
index ebdc903f87d..38d0e0f3585 100644
--- a/gcc/testsuite/gcc.target/i386/pr25993.c
+++ b/gcc/testsuite/gcc.target/i386/pr25993.c
@@ -1,5 +1,5 @@
/* { dg-do assemble } */
-/* { dg-skip-if "" { "*-*-darwin*" } { "*" } { "" } } */
+/* { dg-skip-if "" { "*-*-darwin*" "*-*-mingw*" } { "*" } { "" } } */
/* { dg-options "-std=c99 -x assembler-with-cpp" } */
#ifndef __ASSEMBLER__
diff --git a/gcc/testsuite/gcc.target/i386/vecinit-1.c b/gcc/testsuite/gcc.target/i386/vecinit-1.c
index 86cad897669..8553eb05e4c 100644
--- a/gcc/testsuite/gcc.target/i386/vecinit-1.c
+++ b/gcc/testsuite/gcc.target/i386/vecinit-1.c
@@ -9,3 +9,4 @@ vector float f3(void) { return (vector float){ 0.0, 0.0, a, 0.0}; }
vector float f4(void) { return (vector float){ 0.0, 0.0, 0.0, a}; }
/* { dg-final { scan-assembler-not "movaps" } } */
/* { dg-final { scan-assembler-not "xor" } } */
+/* { dg-final { scan-assembler-not "%mm" } } */
diff --git a/gcc/testsuite/gcc.target/i386/vecinit-2.c b/gcc/testsuite/gcc.target/i386/vecinit-2.c
index 41e502711a7..d6c715fd4f9 100644
--- a/gcc/testsuite/gcc.target/i386/vecinit-2.c
+++ b/gcc/testsuite/gcc.target/i386/vecinit-2.c
@@ -9,3 +9,4 @@ vector int f3(void) { return (vector int){ 0, 0, a, 0}; }
vector int f4(void) { return (vector int){ 0, 0, 0, a}; }
/* { dg-final { scan-assembler-not "movaps" } } */
/* { dg-final { scan-assembler-not "xor" } } */
+/* { dg-final { scan-assembler-not "%mm" } } */
diff --git a/gcc/testsuite/gcc.target/i386/vecinit-3.c b/gcc/testsuite/gcc.target/i386/vecinit-3.c
index 4cbf52133b4..053b566fbac 100644
--- a/gcc/testsuite/gcc.target/i386/vecinit-3.c
+++ b/gcc/testsuite/gcc.target/i386/vecinit-3.c
@@ -6,3 +6,4 @@ char a;
vector char f(void) { return (vector char){ a, a, a, a, a, a, a, a,
a, a, a, a, a, a, a, a }; }
/* { dg-final { scan-assembler-not "sall" } } */
+/* { dg-final { scan-assembler-not "%mm" } } */
diff --git a/gcc/testsuite/gcc.target/i386/vecinit-4.c b/gcc/testsuite/gcc.target/i386/vecinit-4.c
index 7a8c1d0f6c1..773a3160062 100644
--- a/gcc/testsuite/gcc.target/i386/vecinit-4.c
+++ b/gcc/testsuite/gcc.target/i386/vecinit-4.c
@@ -5,3 +5,4 @@
short a;
vector short f(void) { return (vector short){ a, a, a, a, a, a, a, a }; }
/* { dg-final { scan-assembler-not "sall" } } */
+/* { dg-final { scan-assembler-not "%mm" } } */
diff --git a/gcc/testsuite/gfortran.dg/fmt_zero_digits.f90 b/gcc/testsuite/gfortran.dg/fmt_zero_digits.f90
index adb307155ec..e7342397ada 100644
--- a/gcc/testsuite/gfortran.dg/fmt_zero_digits.f90
+++ b/gcc/testsuite/gfortran.dg/fmt_zero_digits.f90
@@ -1,12 +1,30 @@
! { dg-do run }
-! Verify that when decimal precision is zero, no error.
+! Verify that when decimal precision is zero, error error given except with 1P.
! Submitted by Jerry DeLisle <jvdelisle@gcc.gnu.org>
+! Modified for fix to PR35036
program test
+ implicit none
character(20) :: astr
- 50 FORMAT (d20.0)
+ integer :: istat
+ 50 FORMAT (1PD20.0)
astr = ""
write(astr,50) -8.0D0
- if (astr.ne." -0.D+01") call abort()
+ if (astr.ne." -8.D+00") call abort
write(astr,50) 8.0D0
- if (astr.ne." 0.D+01") call abort()
+ if (astr.ne." 8.D+00") call abort
+ write(astr, '(E15.0)', iostat=istat) 1e5
+ if (istat /= 5006) call abort
+ write(astr, '(D15.0)', iostat=istat) 1e5
+ if (istat /= 5006) call abort
+ write(astr, '(G15.0)', iostat=istat) 1e5
+ if (istat /= 5006) call abort
+ write(astr, '(2PE15.0)', iostat=istat) 1e5
+ if (istat /= 5006) call abort
+ write(astr, '(0PE15.0)', iostat=istat) 1e5
+ if (istat /= 5006) call abort
+ write(astr, '(1PE15.0)', iostat=istat) 1e5
+ if (istat /= 0) call abort
+ write(astr, '(F15.0)', iostat=istat) 1e5
+ if (astr.ne." 100000.") call abort
+ if (istat /= 0) call abort
end program test
diff --git a/gcc/testsuite/gfortran.dg/large_real_kind_2.F90 b/gcc/testsuite/gfortran.dg/large_real_kind_2.F90
index 7719cafed4d..2e3891b2ffd 100644
--- a/gcc/testsuite/gfortran.dg/large_real_kind_2.F90
+++ b/gcc/testsuite/gfortran.dg/large_real_kind_2.F90
@@ -43,8 +43,6 @@
TEST_FUNCTION(log,0.00178914)
TEST_FUNCTION(log10,123789.123)
TEST_FUNCTION(sqrt,789.1356)
- TEST_FUNCTION(erf,1.45123231)
- TEST_FUNCTION(erfc,-0.123789)
CTEST_FUNCTION(cos,(17.456,-1.123))
CTEST_FUNCTION(sin,(17.456,-7.6))
diff --git a/gcc/testsuite/gfortran.dg/large_real_kind_form_io_2.f90 b/gcc/testsuite/gfortran.dg/large_real_kind_form_io_2.f90
index b5751cece75..a72c7183785 100644
--- a/gcc/testsuite/gfortran.dg/large_real_kind_form_io_2.f90
+++ b/gcc/testsuite/gfortran.dg/large_real_kind_form_io_2.f90
@@ -1,4 +1,4 @@
-! { dg-do run { xfail powerpc*-*-linux* } }
+! { dg-do run { xfail powerpc*-apple-darwin* powerpc*-*-linux* } }
! Test XFAILed on these platforms because the system's printf() lacks
! proper support for denormalized long doubles. See PR24685
! { dg-require-effective-target fortran_large_real }
diff --git a/gcc/testsuite/lib/prune.exp b/gcc/testsuite/lib/prune.exp
index 2e901a08f4d..d1a9f95bd46 100644
--- a/gcc/testsuite/lib/prune.exp
+++ b/gcc/testsuite/lib/prune.exp
@@ -21,7 +21,7 @@ proc prune_gcc_output { text } {
#send_user "Before:$text\n"
regsub -all "(^|\n)(\[^\n\]*: )?In ((static member )?function|member|method|(copy )?constructor|destructor|instantiation|program|subroutine|block-data) \[^\n\]*" $text "" text
- regsub -all "(^|\n)\[^\n\]*: At (top level|global scope):\[^\n\]*" $text "" text
+ regsub -all "(^|\n)\[^\n\]*(: )?At (top level|global scope):\[^\n\]*" $text "" text
regsub -all "(^|\n)\[^\n\]*: instantiated from \[^\n\]*" $text "" text
regsub -all "(^|\n) inlined from \[^\n\]*" $text "" text
regsub -all "(^|\n)collect2: ld returned \[^\n\]*" $text "" text
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 3f8cfaad753..20bcdeaee88 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -410,6 +410,11 @@ proc check_profiling_available { test_what } {
return 0
}
+ # MinGW does not support -p.
+ if { [istarget *-*-mingw*] && [lindex $test_what 1] == "-p" } {
+ return 0
+ }
+
# At present, there is no profiling support on NetWare.
if { [istarget *-*-netware*] } {
return 0
@@ -1667,7 +1672,8 @@ proc check_effective_target_vect_unpack { } {
set et_vect_unpack_saved 0
if { ([istarget powerpc*-*-*] && ![istarget powerpc-*paired*])
|| [istarget i?86-*-*]
- || [istarget x86_64-*-*] } {
+ || [istarget x86_64-*-*]
+ || [istarget spu-*-*] } {
set et_vect_unpack_saved 1
}
}
@@ -1876,6 +1882,7 @@ proc check_effective_target_vect_short_mult { } {
} else {
set et_vect_short_mult_saved 0
if { [istarget ia64-*-*]
+ || [istarget spu-*-*]
|| [istarget i?86-*-*]
|| [istarget x86_64-*-*] } {
set et_vect_short_mult_saved 1
@@ -2212,6 +2219,14 @@ proc check_effective_target_wchar { } {
}]
}
+# Return 1 if the target has <pthread.h>.
+
+proc check_effective_target_pthread_h { } {
+ return [check_no_compiler_messages pthread_h assembly {
+ #include <pthread.h>
+ }]
+}
+
# Add to FLAGS all the target-specific flags needed to access the c99 runtime.
proc add_options_for_c99_runtime { flags } {
diff --git a/gcc/toplev.c b/gcc/toplev.c
index 7064c7e2876..e189914ce41 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -2029,6 +2029,10 @@ process_options (void)
if (flag_cx_limited_range)
flag_complex_method = 0;
+ /* With -fcx-fortran-rules, we do something in-between cheap and C99. */
+ if (flag_cx_fortran_rules)
+ flag_complex_method = 1;
+
/* Targets must be able to place spill slots at lower addresses. If the
target already uses a soft frame pointer, the transition is trivial. */
if (!FRAME_GROWS_DOWNWARD && flag_stack_protect)
@@ -2329,6 +2333,9 @@ toplev_main (unsigned int argc, const char **argv)
comprobe_finish();
#endif
+ if (warningcount || errorcount)
+ print_ignored_options ();
+
if (errorcount || sorrycount)
return (FATAL_EXIT_CODE);
diff --git a/gcc/tree-complex.c b/gcc/tree-complex.c
index b9c7ebc489f..10fa0aeb71d 100644
--- a/gcc/tree-complex.c
+++ b/gcc/tree-complex.c
@@ -762,7 +762,8 @@ expand_complex_move (block_stmt_iterator *bsi, tree stmt, tree type,
i = build1 (IMAGPART_EXPR, inner_type, lhs);
update_complex_components_on_edge (e, lhs, r, i);
}
- else if (TREE_CODE (rhs) == CALL_EXPR || TREE_SIDE_EFFECTS (rhs))
+ else if (TREE_CODE (rhs) == CALL_EXPR || TREE_SIDE_EFFECTS (rhs)
+ || TREE_CODE (rhs) == PAREN_EXPR)
{
r = build1 (REALPART_EXPR, inner_type, lhs);
i = build1 (IMAGPART_EXPR, inner_type, lhs);
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index 201f2cfc793..9fb87926cf5 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -2222,6 +2222,7 @@ estimate_num_insns_1 (tree *tp, int *walk_subtrees, void *data)
case COMPOUND_EXPR:
case BIND_EXPR:
case WITH_CLEANUP_EXPR:
+ case PAREN_EXPR:
case NOP_EXPR:
case CONVERT_EXPR:
case VIEW_CONVERT_EXPR:
diff --git a/gcc/tree-pretty-print.c b/gcc/tree-pretty-print.c
index 4d1f6f48245..3b60b258ae4 100644
--- a/gcc/tree-pretty-print.c
+++ b/gcc/tree-pretty-print.c
@@ -1446,6 +1446,12 @@ dump_generic_node (pretty_printer *buffer, tree node, int spc, int flags,
pp_character (buffer, ')');
break;
+ case PAREN_EXPR:
+ pp_string (buffer, "((");
+ dump_generic_node (buffer, TREE_OPERAND (node, 0), spc, flags, false);
+ pp_string (buffer, "))");
+ break;
+
case NON_LVALUE_EXPR:
pp_string (buffer, "NON_LVALUE_EXPR <");
dump_generic_node (buffer, TREE_OPERAND (node, 0), spc, flags, false);
diff --git a/gcc/tree-ssa-reassoc.c b/gcc/tree-ssa-reassoc.c
index a4118c92339..6e6f5f7f442 100644
--- a/gcc/tree-ssa-reassoc.c
+++ b/gcc/tree-ssa-reassoc.c
@@ -39,6 +39,7 @@ along with GCC; see the file COPYING3. If not see
#include "langhooks.h"
#include "pointer-set.h"
#include "cfgloop.h"
+#include "flags.h"
/* This is a simple global reassociation pass. It is, in part, based
on the LLVM pass of the same name (They do some things more/less
@@ -598,8 +599,10 @@ eliminate_using_constants (enum tree_code opcode,
VEC(operand_entry_t, heap) **ops)
{
operand_entry_t oelast = VEC_last (operand_entry_t, *ops);
+ tree type = TREE_TYPE (oelast->op);
- if (oelast->rank == 0 && INTEGRAL_TYPE_P (TREE_TYPE (oelast->op)))
+ if (oelast->rank == 0
+ && (INTEGRAL_TYPE_P (type) || FLOAT_TYPE_P (type)))
{
switch (opcode)
{
@@ -660,7 +663,11 @@ eliminate_using_constants (enum tree_code opcode,
}
break;
case MULT_EXPR:
- if (integer_zerop (oelast->op))
+ if (integer_zerop (oelast->op)
+ || (FLOAT_TYPE_P (type)
+ && !HONOR_NANS (TYPE_MODE (type))
+ && !HONOR_SIGNED_ZEROS (TYPE_MODE (type))
+ && real_zerop (oelast->op)))
{
if (VEC_length (operand_entry_t, *ops) != 1)
{
@@ -675,7 +682,10 @@ eliminate_using_constants (enum tree_code opcode,
return;
}
}
- else if (integer_onep (oelast->op))
+ else if (integer_onep (oelast->op)
+ || (FLOAT_TYPE_P (type)
+ && !HONOR_SNANS (TYPE_MODE (type))
+ && real_onep (oelast->op)))
{
if (VEC_length (operand_entry_t, *ops) != 1)
{
@@ -690,7 +700,11 @@ eliminate_using_constants (enum tree_code opcode,
case BIT_XOR_EXPR:
case PLUS_EXPR:
case MINUS_EXPR:
- if (integer_zerop (oelast->op))
+ if (integer_zerop (oelast->op)
+ || (FLOAT_TYPE_P (type)
+ && (opcode == PLUS_EXPR || opcode == MINUS_EXPR)
+ && fold_real_zero_addition_p (type, oelast->op,
+ opcode == MINUS_EXPR)))
{
if (VEC_length (operand_entry_t, *ops) != 1)
{
diff --git a/gcc/tree-vectorizer.c b/gcc/tree-vectorizer.c
index 0131b9a4aaf..16b0ecacdb2 100644
--- a/gcc/tree-vectorizer.c
+++ b/gcc/tree-vectorizer.c
@@ -2002,7 +2002,13 @@ vect_is_simple_use (tree operand, loop_vec_info loop_vinfo, tree *def_stmt,
*dt = vect_invariant_def;
return true;
}
-
+
+ if (TREE_CODE (operand) == PAREN_EXPR)
+ {
+ if (vect_print_dump_info (REPORT_DETAILS))
+ fprintf (vect_dump, "non-associatable copy.");
+ operand = TREE_OPERAND (operand, 0);
+ }
if (TREE_CODE (operand) != SSA_NAME)
{
if (vect_print_dump_info (REPORT_DETAILS))
@@ -2342,7 +2348,7 @@ reduction_code_for_scalar_code (enum tree_code code,
/* Function vect_is_simple_reduction
- Detect a cross-iteration def-use cucle that represents a simple
+ Detect a cross-iteration def-use cycle that represents a simple
reduction computation. We look for the following pattern:
loop_header:
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c
index f9615d1f815..eaeaea08902 100644
--- a/gcc/tree-vrp.c
+++ b/gcc/tree-vrp.c
@@ -5077,6 +5077,48 @@ vrp_evaluate_conditional (tree cond, tree stmt)
}
}
+ if (warn_type_limits
+ && ret
+ && TREE_CODE_CLASS (TREE_CODE (cond)) == tcc_comparison)
+ {
+ /* If the comparison is being folded and the operand on the LHS
+ is being compared against a constant value that is outside of
+ the natural range of OP0's type, then the predicate will
+ always fold regardless of the value of OP0. If -Wtype-limits
+ was specified, emit a warning. */
+ const char *warnmsg = NULL;
+ tree op0 = TREE_OPERAND (cond, 0);
+ tree op1 = TREE_OPERAND (cond, 1);
+ tree type = TREE_TYPE (op0);
+ value_range_t *vr0 = get_value_range (op0);
+
+ if (vr0->type != VR_VARYING
+ && INTEGRAL_TYPE_P (type)
+ && vrp_val_is_min (vr0->min)
+ && vrp_val_is_max (vr0->max)
+ && is_gimple_min_invariant (op1))
+ {
+ if (integer_zerop (ret))
+ warnmsg = G_("comparison always false due to limited range of "
+ "data type");
+ else
+ warnmsg = G_("comparison always true due to limited range of "
+ "data type");
+ }
+
+ if (warnmsg)
+ {
+ location_t locus;
+
+ if (!EXPR_HAS_LOCATION (stmt))
+ locus = input_location;
+ else
+ locus = EXPR_LOCATION (stmt);
+
+ warning (OPT_Wtype_limits, "%H%s", &locus, warnmsg);
+ }
+ }
+
return ret;
}
diff --git a/gcc/tree.def b/gcc/tree.def
index 5693749a51f..f485e4b25c9 100644
--- a/gcc/tree.def
+++ b/gcc/tree.def
@@ -733,6 +733,10 @@ DEFTREECODE (LTGT_EXPR, "ltgt_expr", tcc_comparison, 2)
DEFTREECODE (RANGE_EXPR, "range_expr", tcc_binary, 2)
+/* Represents a re-association barrier for floating point expressions
+ like explicit parenthesis in fortran. */
+DEFTREECODE (PAREN_EXPR, "paren_expr", tcc_unary, 1)
+
/* Represents a conversion of type of a value.
All conversions, including implicit ones, must be
represented by CONVERT_EXPR or NOP_EXPR nodes. */
diff --git a/gcc/tree.h b/gcc/tree.h
index 99c4aeadab1..f98afe9be80 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -4851,6 +4851,8 @@ extern enum tree_code invert_tree_comparison (enum tree_code, bool);
extern bool tree_expr_nonzero_p (tree);
extern bool tree_expr_nonzero_warnv_p (tree, bool *);
+extern bool fold_real_zero_addition_p (const_tree, const_tree, int);
+
/* In builtins.c */
extern tree fold_call_expr (tree, bool);
extern tree fold_builtin_fputs (tree, tree, bool, bool, tree);
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog
index a14c38ef9a9..5a959c3791e 100644
--- a/libcpp/ChangeLog
+++ b/libcpp/ChangeLog
@@ -1,3 +1,20 @@
+2008-02-25 Thiemo Seufer <ths@mips.com>
+
+ Makefile.in ($(srcdir)/config.in): Depend on configure.ac.
+
+2008-02-19 Tom Tromey <tromey@redhat.com>
+
+ * traditional.c (lex_identifier): Use CPP_HASHNODE.
+ * lex.c (lex_identifier): Use CPP_HASHNODE.
+ * include/line-map.h (LINEMAP_POSITION_FOR_COLUMN): Wrap in
+ do-while.
+ * identifiers.c (alloc_node): Change return type.
+ (_cpp_init_hashtable): Don't cast 'alloc_node'.
+ (proxy_assertion_broken): New declaration.
+ (cpp_forall_identifiers): Move comment.
+ * line-map.c (linemap_add): Comment fix.
+ (linemap_line_start): Indentation fix.
+
2008-01-25 Jakub Jelinek <jakub@redhat.com>
PR preprocessor/34692
diff --git a/libcpp/Makefile.in b/libcpp/Makefile.in
index 960a42d56e3..7f4be52ddee 100644
--- a/libcpp/Makefile.in
+++ b/libcpp/Makefile.in
@@ -119,7 +119,7 @@ stamp-h1: $(srcdir)/config.in config.status
-rm -f stamp-h1
$(SHELL) ./config.status config.h
-$(srcdir)/config.in: @MAINT@ $(srcdir)/configure
+$(srcdir)/config.in: @MAINT@ $(srcdir)/configure.ac
cd $(srcdir) && $(AUTOHEADER)
-rm -f stamp-h1
diff --git a/libcpp/identifiers.c b/libcpp/identifiers.c
index c22f4a714bb..41f32a2bbae 100644
--- a/libcpp/identifiers.c
+++ b/libcpp/identifiers.c
@@ -1,6 +1,6 @@
/* Hash tables for the CPP library.
Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1998,
- 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2007 Free Software Foundation, Inc.
Written by Per Bothner, 1994.
Based on CCCP program by Paul Rubin, June 1986
Adapted to ANSI C, Richard Stallman, Jan 1987
@@ -28,18 +28,18 @@ Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#include "cpplib.h"
#include "internal.h"
-static cpp_hashnode *alloc_node (hash_table *);
+static hashnode alloc_node (hash_table *);
/* Return an identifier node for hashtable.c. Used by cpplib except
when integrated with the C front ends. */
-static cpp_hashnode *
+static hashnode
alloc_node (hash_table *table)
{
cpp_hashnode *node;
node = XOBNEW (&table->pfile->hash_ob, cpp_hashnode);
memset (node, 0, sizeof (cpp_hashnode));
- return node;
+ return HT_NODE (node);
}
/* Set up the identifier hash table. Use TABLE if non-null, otherwise
@@ -53,7 +53,7 @@ _cpp_init_hashtable (cpp_reader *pfile, hash_table *table)
{
pfile->our_hashtable = 1;
table = ht_create (13); /* 8K (=2^13) entries. */
- table->alloc_node = (hashnode (*) (hash_table *)) alloc_node;
+ table->alloc_node = alloc_node;
_obstack_begin (&pfile->hash_ob, 0, 0,
(void *(*) (long)) xmalloc,
@@ -107,12 +107,15 @@ cpp_defined (cpp_reader *pfile, const unsigned char *str, int len)
return node && node->type == NT_MACRO;
}
+/* We don't need a proxy since the hash table's identifier comes first
+ in cpp_hashnode. However, in case this is ever changed, we have a
+ static assertion for it. */
+extern char proxy_assertion_broken[offsetof (struct cpp_hashnode, ident) == 0 ? 1 : -1];
+
/* For all nodes in the hashtable, callback CB with parameters PFILE,
the node, and V. */
void
cpp_forall_identifiers (cpp_reader *pfile, cpp_cb cb, void *v)
{
- /* We don't need a proxy since the hash table's identifier comes
- first in cpp_hashnode. */
ht_forall (pfile->hash_table, (ht_cb) cb, v);
}
diff --git a/libcpp/include/line-map.h b/libcpp/include/line-map.h
index cddc74d432e..3378315238f 100644
--- a/libcpp/include/line-map.h
+++ b/libcpp/include/line-map.h
@@ -172,7 +172,7 @@ extern void linemap_print_containing_files (struct line_maps *,
/* Set LOC to a source position that is the same line as the most recent
linemap_line_start, but with the specified TO_COLUMN column number. */
-#define LINEMAP_POSITION_FOR_COLUMN(LOC, SET, TO_COLUMN) { \
+#define LINEMAP_POSITION_FOR_COLUMN(LOC, SET, TO_COLUMN) do { \
unsigned int to_column = (TO_COLUMN); \
struct line_maps *set = (SET); \
if (__builtin_expect (to_column >= set->max_column_hint, 0)) \
@@ -183,7 +183,7 @@ extern void linemap_print_containing_files (struct line_maps *,
if (r >= set->highest_location) \
set->highest_location = r; \
(LOC) = r; \
- }}
+ }} while (0)
extern source_location
diff --git a/libcpp/lex.c b/libcpp/lex.c
index ef59f900c64..2eaf6105922 100644
--- a/libcpp/lex.c
+++ b/libcpp/lex.c
@@ -1,5 +1,5 @@
/* CPP Library - lexical analysis.
- Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+ Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
Contributed by Per Bothner, 1994-95.
Based on CCCP program by Paul Rubin, June 1986
Adapted to ANSI C, Richard Stallman, Jan 1987
@@ -538,8 +538,8 @@ lex_identifier (cpp_reader *pfile, const uchar *base, bool starts_ucn,
len = cur - base;
hash = HT_HASHFINISH (hash, len);
- result = (cpp_hashnode *)
- ht_lookup_with_hash (pfile->hash_table, base, len, hash, HT_ALLOC);
+ result = CPP_HASHNODE (ht_lookup_with_hash (pfile->hash_table,
+ base, len, hash, HT_ALLOC));
}
/* Rarely, identifiers require diagnostics when lexed. */
diff --git a/libcpp/line-map.c b/libcpp/line-map.c
index c13a82dcafc..2c6d2510e61 100644
--- a/libcpp/line-map.c
+++ b/libcpp/line-map.c
@@ -1,5 +1,5 @@
/* Map logical line numbers to (source file, line number) pairs.
- Copyright (C) 2001, 2003, 2004, 2007
+ Copyright (C) 2001, 2003, 2004, 2007, 2008
Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it
@@ -81,7 +81,6 @@ linemap_free (struct line_maps *set)
FROM_LINE should be monotonic increasing across calls to this
function. A call to this function can relocate the previous set of
- A call to this function can relocate the previous set of
maps, so any stored line_map pointers should not be used. */
const struct line_map *
@@ -225,8 +224,8 @@ linemap_line_start (struct line_maps *set, unsigned int to_line,
if (line_delta < 0
|| last_line != map->to_line
|| SOURCE_COLUMN (map, highest) >= (1U << column_bits))
- map = (struct line_map*) linemap_add (set, LC_RENAME, map->sysp,
- map->to_file, to_line);
+ map = (struct line_map *) linemap_add (set, LC_RENAME, map->sysp,
+ map->to_file, to_line);
map->column_bits = column_bits;
r = map->start_location + ((to_line - map->to_line) << column_bits);
}
diff --git a/libcpp/traditional.c b/libcpp/traditional.c
index 6c4dda1a9f3..1a384253a90 100644
--- a/libcpp/traditional.c
+++ b/libcpp/traditional.c
@@ -253,8 +253,8 @@ lex_identifier (cpp_reader *pfile, const uchar *cur)
CUR (pfile->context) = cur;
len = out - pfile->out.cur;
- result = (cpp_hashnode *) ht_lookup (pfile->hash_table, pfile->out.cur,
- len, HT_ALLOC);
+ result = CPP_HASHNODE (ht_lookup (pfile->hash_table, pfile->out.cur,
+ len, HT_ALLOC));
pfile->out.cur = out;
return result;
}
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 6260ed30b44..210a37274f4 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,55 @@
+2008-02-25 Janne Blomqvist <jb@gcc.gnu.org>
+
+ PR fortran/29549
+ * Makefile.am: Add -fcx-fortran-rules to AM_CFLAGS for all of
+ libgfortran.
+ * Makefile.in: Regenerated.
+
+2008-02-25 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
+
+ * m4/ifunction_logical.m4: Add casts to get rid of warnings.
+ * generated/all_l1.c: Regenerate.
+ * generated/all_l2.c: Regenerate.
+ * generated/all_l4.c: Regenerate.
+ * generated/all_l8.c: Regenerate.
+ * generated/all_l16.c: Regenerate.
+ * generated/any_l1.c: Regenerate.
+ * generated/any_l2.c: Regenerate.
+ * generated/any_l4.c: Regenerate.
+ * generated/any_l8.c: Regenerate.
+ * generated/any_l16.c: Regenerate.
+ * generated/count_1_l.c: Regenerate.
+ * generated/count_2_l.c: Regenerate.
+ * generated/count_4_l.c: Regenerate.
+ * generated/count_8_l.c: Regenerate.
+ * generated/count_16_l.c: Regenerate.
+
+2008-02-24 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
+
+ PR libfortran/32841
+ * acinclude.m4: Don't use HAVE_MATH_H.
+ * configure: Regenerate.
+
+2008-02-20 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libfortran/35132
+ * io/transfer.c (next_record_w): Truncate after the last record for
+ STREAM I/O.
+
+ PR libfortran/34954
+ * io/transfer.c (data_transfer_init): Initialize dtp->rec if writing.
+
+ PR libfortran/34974
+ * io/transfer.c (formatted_transfer_scalar): Flush the buffer if skips
+ is less than zero. (next_record_w): Use sseek to position the file to
+ the max position reached.
+
+2008-02-20 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libfortran/35036
+ * write_float.def (output_float): Add error checks for zero digits
+ after decimal point in E and D format specifiers.
+
2008-02-10 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libfortran/35063
diff --git a/libgfortran/Makefile.am b/libgfortran/Makefile.am
index 489f9ed4634..16348c4a6fc 100644
--- a/libgfortran/Makefile.am
+++ b/libgfortran/Makefile.am
@@ -28,6 +28,9 @@ AM_CPPFLAGS = -iquote$(srcdir)/io -I$(srcdir)/$(MULTISRCTOP)../gcc \
-I$(srcdir)/$(MULTISRCTOP)../gcc/config \
-I$(MULTIBUILDTOP)../../$(host_subdir)/gcc -D_GNU_SOURCE
+# Fortran rules for complex multiplication and division
+AM_CFLAGS += -fcx-fortran-rules
+
gfor_io_src= \
io/close.c \
io/file_pos.c \
diff --git a/libgfortran/Makefile.in b/libgfortran/Makefile.in
index 07feb5deddb..91ab7a2e06c 100644
--- a/libgfortran/Makefile.in
+++ b/libgfortran/Makefile.in
@@ -730,7 +730,9 @@ ACLOCAL = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
-AM_CFLAGS = @AM_CFLAGS@
+
+# Fortran rules for complex multiplication and division
+AM_CFLAGS = @AM_CFLAGS@ -fcx-fortran-rules
AM_FCFLAGS = @AM_FCFLAGS@
AR = @AR@
AS = @AS@
@@ -789,13 +791,9 @@ SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_AS = @ac_ct_AS@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
ac_ct_FC = @ac_ct_FC@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__include = @am__include@
@@ -812,6 +810,9 @@ build_os = @build_os@
build_subdir = @build_subdir@
build_vendor = @build_vendor@
datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
enable_shared = @enable_shared@
enable_static = @enable_static@
exec_prefix = @exec_prefix@
@@ -822,11 +823,13 @@ host_cpu = @host_cpu@
host_os = @host_os@
host_subdir = @host_subdir@
host_vendor = @host_vendor@
+htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
+localedir = @localedir@
localstatedir = @localstatedir@
lt_ECHO = @lt_ECHO@
mandir = @mandir@
@@ -836,8 +839,10 @@ oldincludedir = @oldincludedir@
onestep = @onestep@
onestep_FALSE = @onestep_FALSE@
onestep_TRUE = @onestep_TRUE@
+pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
+psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
diff --git a/libgfortran/acinclude.m4 b/libgfortran/acinclude.m4
index 6cc10408d96..44380615526 100644
--- a/libgfortran/acinclude.m4
+++ b/libgfortran/acinclude.m4
@@ -204,9 +204,7 @@ AC_DEFUN([LIBGFOR_CHECK_FOR_BROKEN_ISFINITE], [
libgfor_check_for_broken_isfinite_save_LIBS=$LIBS
LIBS="$LIBS -lm"
AC_TRY_RUN([
-#ifdef HAVE_MATH_H
#include <math.h>
-#endif
#include <float.h>
int main ()
{
@@ -237,9 +235,7 @@ AC_DEFUN([LIBGFOR_CHECK_FOR_BROKEN_ISNAN], [
libgfor_check_for_broken_isnan_save_LIBS=$LIBS
LIBS="$LIBS -lm"
AC_TRY_RUN([
-#ifdef HAVE_MATH_H
#include <math.h>
-#endif
#include <float.h>
int main ()
{
@@ -288,9 +284,7 @@ AC_DEFUN([LIBGFOR_CHECK_FOR_BROKEN_FPCLASSIFY], [
libgfor_check_for_broken_fpclassify_save_LIBS=$LIBS
LIBS="$LIBS -lm"
AC_TRY_RUN([
-#ifdef HAVE_MATH_H
#include <math.h>
-#endif
#include <float.h>
int main ()
{
diff --git a/libgfortran/generated/all_l1.c b/libgfortran/generated/all_l1.c
index 47cf2220d33..385726af399 100644
--- a/libgfortran/generated/all_l1.c
+++ b/libgfortran/generated/all_l1.c
@@ -119,8 +119,9 @@ all_l1 (gfc_array_l1 * const restrict retarray,
{
if (rank != GFC_DESCRIPTOR_RANK (retarray))
runtime_error ("rank of return array incorrect in"
- " ALL intrinsic: is %d, should be %d",
- GFC_DESCRIPTOR_RANK (retarray), rank);
+ " ALL intrinsic: is %ld, should be %ld",
+ (long int) GFC_DESCRIPTOR_RANK (retarray),
+ (long int) rank);
if (compile_options.bounds_check)
{
diff --git a/libgfortran/generated/all_l16.c b/libgfortran/generated/all_l16.c
index ca147e7d39f..fd6a9f0b715 100644
--- a/libgfortran/generated/all_l16.c
+++ b/libgfortran/generated/all_l16.c
@@ -119,8 +119,9 @@ all_l16 (gfc_array_l16 * const restrict retarray,
{
if (rank != GFC_DESCRIPTOR_RANK (retarray))
runtime_error ("rank of return array incorrect in"
- " ALL intrinsic: is %d, should be %d",
- GFC_DESCRIPTOR_RANK (retarray), rank);
+ " ALL intrinsic: is %ld, should be %ld",
+ (long int) GFC_DESCRIPTOR_RANK (retarray),
+ (long int) rank);
if (compile_options.bounds_check)
{
diff --git a/libgfortran/generated/all_l2.c b/libgfortran/generated/all_l2.c
index 9e4ab72b30c..16b4ec94ea1 100644
--- a/libgfortran/generated/all_l2.c
+++ b/libgfortran/generated/all_l2.c
@@ -119,8 +119,9 @@ all_l2 (gfc_array_l2 * const restrict retarray,
{
if (rank != GFC_DESCRIPTOR_RANK (retarray))
runtime_error ("rank of return array incorrect in"
- " ALL intrinsic: is %d, should be %d",
- GFC_DESCRIPTOR_RANK (retarray), rank);
+ " ALL intrinsic: is %ld, should be %ld",
+ (long int) GFC_DESCRIPTOR_RANK (retarray),
+ (long int) rank);
if (compile_options.bounds_check)
{
diff --git a/libgfortran/generated/all_l4.c b/libgfortran/generated/all_l4.c
index 255881b9112..ef8bdcdddba 100644
--- a/libgfortran/generated/all_l4.c
+++ b/libgfortran/generated/all_l4.c
@@ -119,8 +119,9 @@ all_l4 (gfc_array_l4 * const restrict retarray,
{
if (rank != GFC_DESCRIPTOR_RANK (retarray))
runtime_error ("rank of return array incorrect in"
- " ALL intrinsic: is %d, should be %d",
- GFC_DESCRIPTOR_RANK (retarray), rank);
+ " ALL intrinsic: is %ld, should be %ld",
+ (long int) GFC_DESCRIPTOR_RANK (retarray),
+ (long int) rank);
if (compile_options.bounds_check)
{
diff --git a/libgfortran/generated/all_l8.c b/libgfortran/generated/all_l8.c
index 00ba59f1034..8e7a659a283 100644
--- a/libgfortran/generated/all_l8.c
+++ b/libgfortran/generated/all_l8.c
@@ -119,8 +119,9 @@ all_l8 (gfc_array_l8 * const restrict retarray,
{
if (rank != GFC_DESCRIPTOR_RANK (retarray))
runtime_error ("rank of return array incorrect in"
- " ALL intrinsic: is %d, should be %d",
- GFC_DESCRIPTOR_RANK (retarray), rank);
+ " ALL intrinsic: is %ld, should be %ld",
+ (long int) GFC_DESCRIPTOR_RANK (retarray),
+ (long int) rank);
if (compile_options.bounds_check)
{
diff --git a/libgfortran/generated/any_l1.c b/libgfortran/generated/any_l1.c
index 9781a43c2cb..8975438ae59 100644
--- a/libgfortran/generated/any_l1.c
+++ b/libgfortran/generated/any_l1.c
@@ -119,8 +119,9 @@ any_l1 (gfc_array_l1 * const restrict retarray,
{
if (rank != GFC_DESCRIPTOR_RANK (retarray))
runtime_error ("rank of return array incorrect in"
- " ANY intrinsic: is %d, should be %d",
- GFC_DESCRIPTOR_RANK (retarray), rank);
+ " ANY intrinsic: is %ld, should be %ld",
+ (long int) GFC_DESCRIPTOR_RANK (retarray),
+ (long int) rank);
if (compile_options.bounds_check)
{
diff --git a/libgfortran/generated/any_l16.c b/libgfortran/generated/any_l16.c
index b0e95a6dad6..060a4b82127 100644
--- a/libgfortran/generated/any_l16.c
+++ b/libgfortran/generated/any_l16.c
@@ -119,8 +119,9 @@ any_l16 (gfc_array_l16 * const restrict retarray,
{
if (rank != GFC_DESCRIPTOR_RANK (retarray))
runtime_error ("rank of return array incorrect in"
- " ANY intrinsic: is %d, should be %d",
- GFC_DESCRIPTOR_RANK (retarray), rank);
+ " ANY intrinsic: is %ld, should be %ld",
+ (long int) GFC_DESCRIPTOR_RANK (retarray),
+ (long int) rank);
if (compile_options.bounds_check)
{
diff --git a/libgfortran/generated/any_l2.c b/libgfortran/generated/any_l2.c
index 6a42be0fcbc..73db5aea082 100644
--- a/libgfortran/generated/any_l2.c
+++ b/libgfortran/generated/any_l2.c
@@ -119,8 +119,9 @@ any_l2 (gfc_array_l2 * const restrict retarray,
{
if (rank != GFC_DESCRIPTOR_RANK (retarray))
runtime_error ("rank of return array incorrect in"
- " ANY intrinsic: is %d, should be %d",
- GFC_DESCRIPTOR_RANK (retarray), rank);
+ " ANY intrinsic: is %ld, should be %ld",
+ (long int) GFC_DESCRIPTOR_RANK (retarray),
+ (long int) rank);
if (compile_options.bounds_check)
{
diff --git a/libgfortran/generated/any_l4.c b/libgfortran/generated/any_l4.c
index eb372969030..3e239cab106 100644
--- a/libgfortran/generated/any_l4.c
+++ b/libgfortran/generated/any_l4.c
@@ -119,8 +119,9 @@ any_l4 (gfc_array_l4 * const restrict retarray,
{
if (rank != GFC_DESCRIPTOR_RANK (retarray))
runtime_error ("rank of return array incorrect in"
- " ANY intrinsic: is %d, should be %d",
- GFC_DESCRIPTOR_RANK (retarray), rank);
+ " ANY intrinsic: is %ld, should be %ld",
+ (long int) GFC_DESCRIPTOR_RANK (retarray),
+ (long int) rank);
if (compile_options.bounds_check)
{
diff --git a/libgfortran/generated/any_l8.c b/libgfortran/generated/any_l8.c
index b5b52a0b81b..3ea80dd3e31 100644
--- a/libgfortran/generated/any_l8.c
+++ b/libgfortran/generated/any_l8.c
@@ -119,8 +119,9 @@ any_l8 (gfc_array_l8 * const restrict retarray,
{
if (rank != GFC_DESCRIPTOR_RANK (retarray))
runtime_error ("rank of return array incorrect in"
- " ANY intrinsic: is %d, should be %d",
- GFC_DESCRIPTOR_RANK (retarray), rank);
+ " ANY intrinsic: is %ld, should be %ld",
+ (long int) GFC_DESCRIPTOR_RANK (retarray),
+ (long int) rank);
if (compile_options.bounds_check)
{
diff --git a/libgfortran/generated/count_16_l.c b/libgfortran/generated/count_16_l.c
index d3f15d7119d..654c5495dec 100644
--- a/libgfortran/generated/count_16_l.c
+++ b/libgfortran/generated/count_16_l.c
@@ -119,8 +119,9 @@ count_16_l (gfc_array_i16 * const restrict retarray,
{
if (rank != GFC_DESCRIPTOR_RANK (retarray))
runtime_error ("rank of return array incorrect in"
- " COUNT intrinsic: is %d, should be %d",
- GFC_DESCRIPTOR_RANK (retarray), rank);
+ " COUNT intrinsic: is %ld, should be %ld",
+ (long int) GFC_DESCRIPTOR_RANK (retarray),
+ (long int) rank);
if (compile_options.bounds_check)
{
diff --git a/libgfortran/generated/count_1_l.c b/libgfortran/generated/count_1_l.c
index 78d82c0ea36..ab2d0eac21a 100644
--- a/libgfortran/generated/count_1_l.c
+++ b/libgfortran/generated/count_1_l.c
@@ -119,8 +119,9 @@ count_1_l (gfc_array_i1 * const restrict retarray,
{
if (rank != GFC_DESCRIPTOR_RANK (retarray))
runtime_error ("rank of return array incorrect in"
- " COUNT intrinsic: is %d, should be %d",
- GFC_DESCRIPTOR_RANK (retarray), rank);
+ " COUNT intrinsic: is %ld, should be %ld",
+ (long int) GFC_DESCRIPTOR_RANK (retarray),
+ (long int) rank);
if (compile_options.bounds_check)
{
diff --git a/libgfortran/generated/count_2_l.c b/libgfortran/generated/count_2_l.c
index eb03c2d5c5f..bb29d4f3c4f 100644
--- a/libgfortran/generated/count_2_l.c
+++ b/libgfortran/generated/count_2_l.c
@@ -119,8 +119,9 @@ count_2_l (gfc_array_i2 * const restrict retarray,
{
if (rank != GFC_DESCRIPTOR_RANK (retarray))
runtime_error ("rank of return array incorrect in"
- " COUNT intrinsic: is %d, should be %d",
- GFC_DESCRIPTOR_RANK (retarray), rank);
+ " COUNT intrinsic: is %ld, should be %ld",
+ (long int) GFC_DESCRIPTOR_RANK (retarray),
+ (long int) rank);
if (compile_options.bounds_check)
{
diff --git a/libgfortran/generated/count_4_l.c b/libgfortran/generated/count_4_l.c
index 58dcd77c731..82926bd522e 100644
--- a/libgfortran/generated/count_4_l.c
+++ b/libgfortran/generated/count_4_l.c
@@ -119,8 +119,9 @@ count_4_l (gfc_array_i4 * const restrict retarray,
{
if (rank != GFC_DESCRIPTOR_RANK (retarray))
runtime_error ("rank of return array incorrect in"
- " COUNT intrinsic: is %d, should be %d",
- GFC_DESCRIPTOR_RANK (retarray), rank);
+ " COUNT intrinsic: is %ld, should be %ld",
+ (long int) GFC_DESCRIPTOR_RANK (retarray),
+ (long int) rank);
if (compile_options.bounds_check)
{
diff --git a/libgfortran/generated/count_8_l.c b/libgfortran/generated/count_8_l.c
index b7db60e00b0..9cb094f81cd 100644
--- a/libgfortran/generated/count_8_l.c
+++ b/libgfortran/generated/count_8_l.c
@@ -119,8 +119,9 @@ count_8_l (gfc_array_i8 * const restrict retarray,
{
if (rank != GFC_DESCRIPTOR_RANK (retarray))
runtime_error ("rank of return array incorrect in"
- " COUNT intrinsic: is %d, should be %d",
- GFC_DESCRIPTOR_RANK (retarray), rank);
+ " COUNT intrinsic: is %ld, should be %ld",
+ (long int) GFC_DESCRIPTOR_RANK (retarray),
+ (long int) rank);
if (compile_options.bounds_check)
{
diff --git a/libgfortran/io/transfer.c b/libgfortran/io/transfer.c
index 52c6314349d..c3e91149a27 100644
--- a/libgfortran/io/transfer.c
+++ b/libgfortran/io/transfer.c
@@ -916,8 +916,8 @@ formatted_transfer_scalar (st_parameter_dt *dtp, bt type, void *p, int len,
the entire field has been read. The next read field will start right after
the comma in the stream. (Set to 0 for character reads). */
dtp->u.p.sf_read_comma = 1;
-
dtp->u.p.line_buffer = scratch;
+
for (;;)
{
/* If reversion has occurred and there is another real data item,
@@ -1274,6 +1274,11 @@ formatted_transfer_scalar (st_parameter_dt *dtp, bt type, void *p, int len,
else
read_x (dtp, dtp->u.p.skips);
}
+ else
+ {
+ if (dtp->u.p.skips < 0)
+ flush (dtp->u.p.current_unit->s);
+ }
break;
@@ -2007,6 +2012,8 @@ data_transfer_init (st_parameter_dt *dtp, int read_flag)
dtp->u.p.current_unit->strm_pos = dtp->rec;
}
+ else
+ dtp->rec = 0;
/* Overwriting an existing sequential file ?
it is always safe to truncate the file on the first write */
@@ -2583,7 +2590,8 @@ next_record_w (st_parameter_dt *dtp, int done)
if (max_pos > m)
{
length = (int) (max_pos - m);
- p = salloc_w (dtp->u.p.current_unit->s, &length);
+ sseek (dtp->u.p.current_unit->s,
+ file_position (dtp->u.p.current_unit->s) + length);
}
#ifdef HAVE_CRLF
len = 2;
@@ -2594,7 +2602,10 @@ next_record_w (st_parameter_dt *dtp, int done)
goto io_error;
if (is_stream_io (dtp))
- dtp->u.p.current_unit->strm_pos += len;
+ {
+ dtp->u.p.current_unit->strm_pos += len;
+ struncate(dtp->u.p.current_unit->s);
+ }
}
break;
diff --git a/libgfortran/io/write_float.def b/libgfortran/io/write_float.def
index 4642013ae98..028fd27b863 100644
--- a/libgfortran/io/write_float.def
+++ b/libgfortran/io/write_float.def
@@ -167,6 +167,19 @@ output_float (st_parameter_dt *dtp, const fnode *f, char *buffer, size_t size,
case FMT_E:
case FMT_D:
i = dtp->u.p.scale_factor;
+ if (d <= 0 && i == 0)
+ {
+ generate_error (&dtp->common, LIBERROR_FORMAT, "Precision not "
+ "greater than zero in format specifier 'E' or 'D'");
+ return;
+ }
+ if (i <= -d || i >= d + 2)
+ {
+ generate_error (&dtp->common, LIBERROR_FORMAT, "Scale factor "
+ "out of range in format specifier 'E' or 'D'");
+ return;
+ }
+
if (!zero_flag)
e -= i;
if (i < 0)
diff --git a/libgfortran/m4/ifunction_logical.m4 b/libgfortran/m4/ifunction_logical.m4
index b2acb32f115..8666870c88e 100644
--- a/libgfortran/m4/ifunction_logical.m4
+++ b/libgfortran/m4/ifunction_logical.m4
@@ -102,8 +102,9 @@ name`'rtype_qual`_'atype_code (rtype * const restrict retarray,
{
if (rank != GFC_DESCRIPTOR_RANK (retarray))
runtime_error ("rank of return array incorrect in"
- " u_name intrinsic: is %d, should be %d",
- GFC_DESCRIPTOR_RANK (retarray), rank);
+ " u_name intrinsic: is %ld, should be %ld",
+ (long int) GFC_DESCRIPTOR_RANK (retarray),
+ (long int) rank);
if (compile_options.bounds_check)
{
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 33813125d55..8358c4a04ee 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,11 @@
+2008-02-20 Tom Tromey <tromey@redhat.com>
+
+ PR libgcj/24170:
+ * java/io/natFilePosix.cc (File::performList): Don't use
+ readdir_r.
+ * configure, include/config.h.in: Rebuilt.
+ * configure.ac: Don't check for readdir_r.
+
2008-02-16 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
PR libgcj/33085
diff --git a/libjava/classpath/ChangeLog.gcj b/libjava/classpath/ChangeLog.gcj
index c28eba0be82..ef35119e8ff 100644
--- a/libjava/classpath/ChangeLog.gcj
+++ b/libjava/classpath/ChangeLog.gcj
@@ -1,3 +1,9 @@
+2008-02-20 Matthias Klose <doko@ubuntu.com>
+
+ * tools/Makefile.am ($(TOOLS_ZIP)): Revert part of previous change,
+ Do copy resource files in JAVA_MAINTAINER_MODE only.
+ * tools/Makefile.in: Regenerate.
+
2008-02-18 Jakub Jelinek <jakub@redhat.com>
* doc/cp-tools.texinfo (@direntry): Prefix info name with cp-.
diff --git a/libjava/classpath/tools/Makefile.am b/libjava/classpath/tools/Makefile.am
index 22a6e3874b3..de54eed094a 100755
--- a/libjava/classpath/tools/Makefile.am
+++ b/libjava/classpath/tools/Makefile.am
@@ -186,7 +186,6 @@ if JAVA_MAINTAINER_MODE
AC=`echo $(JCOMPILER) | sed -e 's/UTF-8/ISO-8859-1/g'`; \
$$AC -g -w -d $(srcdir)/asm @asm.lst
$(JCOMPILER) -g -w -d $(srcdir)/classes @classes.lst @vm-tools.lst
-endif
## Copy over tools resource files.
@list=`cd $(top_srcdir)/resource && find gnu/classpath/tools \
com/sun/javadoc com/sun/tools/doclets com/sun/tools/javac \
@@ -197,6 +196,7 @@ endif
echo " cp $(top_srcdir)/resource/$$p classes/$$p"; \
cp $(top_srcdir)/resource/$$p classes/$$p; \
done
+endif
## Copy over rmic template files.
@list=`cd $(srcdir) && find gnu/classpath/tools -name \*.jav -print`; \
for p in $$list; do \
diff --git a/libjava/classpath/tools/Makefile.in b/libjava/classpath/tools/Makefile.in
index a2d2ed7d44e..ef1b2d06e96 100644
--- a/libjava/classpath/tools/Makefile.in
+++ b/libjava/classpath/tools/Makefile.in
@@ -1132,15 +1132,15 @@ $(TOOLS_ZIP): $(TOOLS_JAVA_FILES)
@JAVA_MAINTAINER_MODE_TRUE@ AC=`echo $(JCOMPILER) | sed -e 's/UTF-8/ISO-8859-1/g'`; \
@JAVA_MAINTAINER_MODE_TRUE@ $$AC -g -w -d $(srcdir)/asm @asm.lst
@JAVA_MAINTAINER_MODE_TRUE@ $(JCOMPILER) -g -w -d $(srcdir)/classes @classes.lst @vm-tools.lst
- @list=`cd $(top_srcdir)/resource && find gnu/classpath/tools \
- com/sun/javadoc com/sun/tools/doclets com/sun/tools/javac \
- sun/rmi/rmic -name \*.properties -print`; \
- for p in $$list; do \
- dirname=classes/`dirname $$p`; \
- if ! test -d "$$dirname"; then mkdir -p "$$dirname"; fi; \
- echo " cp $(top_srcdir)/resource/$$p classes/$$p"; \
- cp $(top_srcdir)/resource/$$p classes/$$p; \
- done
+@JAVA_MAINTAINER_MODE_TRUE@ @list=`cd $(top_srcdir)/resource && find gnu/classpath/tools \
+@JAVA_MAINTAINER_MODE_TRUE@ com/sun/javadoc com/sun/tools/doclets com/sun/tools/javac \
+@JAVA_MAINTAINER_MODE_TRUE@ sun/rmi/rmic -name \*.properties -print`; \
+@JAVA_MAINTAINER_MODE_TRUE@ for p in $$list; do \
+@JAVA_MAINTAINER_MODE_TRUE@ dirname=classes/`dirname $$p`; \
+@JAVA_MAINTAINER_MODE_TRUE@ if ! test -d "$$dirname"; then mkdir -p "$$dirname"; fi; \
+@JAVA_MAINTAINER_MODE_TRUE@ echo " cp $(top_srcdir)/resource/$$p classes/$$p"; \
+@JAVA_MAINTAINER_MODE_TRUE@ cp $(top_srcdir)/resource/$$p classes/$$p; \
+@JAVA_MAINTAINER_MODE_TRUE@ done
@list=`cd $(srcdir) && find gnu/classpath/tools -name \*.jav -print`; \
for p in $$list; do \
dirname=classes/`dirname $$p`; \
diff --git a/libjava/configure.ac b/libjava/configure.ac
index 0abf1bf87a9..2ef3b7245b0 100644
--- a/libjava/configure.ac
+++ b/libjava/configure.ac
@@ -1023,7 +1023,7 @@ if test "x${with_newlib}" = "xyes"; then
PLATFORMNET=NoNet
else
AC_CHECK_FUNCS([strerror_r select fstat open fsync sleep opendir \
- localtime_r readdir_r getpwuid_r getcwd \
+ localtime_r getpwuid_r getcwd \
access stat lstat mkdir rename rmdir unlink utime chmod readlink \
nl_langinfo setlocale \
inet_pton uname inet_ntoa \
diff --git a/libjava/include/config.h.in b/libjava/include/config.h.in
index 99da702417c..3fdde3944f2 100644
--- a/libjava/include/config.h.in
+++ b/libjava/include/config.h.in
@@ -214,9 +214,6 @@
/* Define to 1 if you have the <pwd.h> header file. */
#undef HAVE_PWD_H
-/* Define to 1 if you have the `readdir_r' function. */
-#undef HAVE_READDIR_R
-
/* Define to 1 if you have the `readlink' function. */
#undef HAVE_READLINK
diff --git a/libjava/java/io/natFilePosix.cc b/libjava/java/io/natFilePosix.cc
index ead28557f6e..5b6ec8458ac 100644
--- a/libjava/java/io/natFilePosix.cc
+++ b/libjava/java/io/natFilePosix.cc
@@ -1,6 +1,6 @@
// natFile.cc - Native part of File class for POSIX.
-/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2006
+/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2006, 2008
Free Software Foundation
This file is part of libgcj.
@@ -292,13 +292,7 @@ java::io::File::performList (java::io::FilenameFilter *filter,
java::util::ArrayList *list = new java::util::ArrayList ();
struct dirent *d;
-#if defined(HAVE_READDIR_R) && defined(_POSIX_PTHREAD_SEMANTICS)
- int name_max = pathconf (buf, _PC_NAME_MAX);
- char dbuf[sizeof (struct dirent) + name_max + 1];
- while (readdir_r (dir, (struct dirent *) dbuf, &d) == 0 && d != NULL)
-#else /* HAVE_READDIR_R */
while ((d = readdir (dir)) != NULL)
-#endif /* HAVE_READDIR_R */
{
// Omit "." and "..".
if (d->d_name[0] == '.'
diff --git a/libmudflap/ChangeLog b/libmudflap/ChangeLog
index b0070578290..4882eaf7ac1 100644
--- a/libmudflap/ChangeLog
+++ b/libmudflap/ChangeLog
@@ -1,3 +1,9 @@
+2008-02-21 Uros Bizjak <ubizjak@gmail.com>
+
+ * testsuite/libmudflap.c/fail8-frag.c: Adjust scan pattern for
+ mudflap dead object.
+ * testsuite/libmudflap.c/fail9-frag.c: Ditto.
+
2008-01-24 David Edelsohn <edelsohn@gnu.org>
* configure: Regenerate.
diff --git a/libmudflap/testsuite/libmudflap.c/fail8-frag.c b/libmudflap/testsuite/libmudflap.c/fail8-frag.c
index cc2fbdaac4c..8309068df47 100644
--- a/libmudflap/testsuite/libmudflap.c/fail8-frag.c
+++ b/libmudflap/testsuite/libmudflap.c/fail8-frag.c
@@ -15,5 +15,5 @@ return 0;
}
/* { dg-output "mudflap violation 1.*memcpy source.*" } */
/* { dg-output "Nearby object.*" } */
-/* { dg-output "mudflap object.*malloc region.*alloc time.*dealloc time.*" } */
+/* { dg-output "mudflap dead object.*malloc region.*alloc time.*dealloc time.*" } */
/* { dg-do run { xfail *-*-* } } */
diff --git a/libmudflap/testsuite/libmudflap.c/fail9-frag.c b/libmudflap/testsuite/libmudflap.c/fail9-frag.c
index 029fda5d4d0..9bbd860a898 100644
--- a/libmudflap/testsuite/libmudflap.c/fail9-frag.c
+++ b/libmudflap/testsuite/libmudflap.c/fail9-frag.c
@@ -17,5 +17,5 @@ return 0;
/* { dg-output "mudflap violation 1.*memcpy dest.*" } */
/* { dg-output "Nearby object.*" } */
-/* { dg-output "mudflap object.*malloc region.*alloc time.*dealloc time.*" } */
+/* { dg-output "mudflap dead object.*malloc region.*alloc time.*dealloc time.*" } */
/* { dg-do run { xfail *-*-* } } */
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 68ca46a0397..73335760efe 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,17 @@
+2008-02-25 Jan Beulich <jbeulich@novell.com>
+
+ * acinclude.m4: Also check for EIDRM and ETXTBSY.
+ * configure: Re-generate.
+ * config/os/generic/error_constants.h (namespace posix_error):
+ Also wrap uses of EIDRM and ETXTBSY in conditionals.
+ * testsuite/19_diagnostics/headers/system_error/types_std_c++0x.cc:
+ Likewise.
+
+2008-02-20 Jason Merrill <jason@redhat.com>
+
+ * include/bits/c++config: Use 'inline namespace' instead of
+ strong using.
+
2008-02-18 Pedro Lamarao <pedro.lamarao@mndfck.org>
* include/std/tuple: Fixes for moveable, non-copyable types.
diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index bd14d90126e..45c8ffd765b 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -1440,6 +1440,26 @@ AC_DEFUN([GLIBCXX_CHECK_SYSTEM_ERROR], [
if test x"$ac_system_error_13" = x"yes"; then
AC_DEFINE(HAVE_ENOTSUP, 1, [Define if ENOTSUP exists.])
fi
+
+ AC_MSG_CHECKING([for EIDRM])
+ AC_CACHE_VAL(ac_system_error_14, [
+ AC_TRY_COMPILE([#include <errno.h>], [ int i = EIDRM; ],
+ [ac_system_error_14=yes], [ac_system_error_14=no])
+ ])
+ AC_MSG_RESULT($ac_system_error_14)
+ if test x"$ac_system_error_14" = x"yes"; then
+ AC_DEFINE(HAVE_EIDRM, 1, [Define if EIDRM exists.])
+ fi
+
+ AC_MSG_CHECKING([for ETXTBSY])
+ AC_CACHE_VAL(ac_system_error_15, [
+ AC_TRY_COMPILE([#include <errno.h>], [ int i = ETXTBSY; ],
+ [ac_system_error_15=yes], [ac_system_error_15=no])
+ ])
+ AC_MSG_RESULT($ac_system_error_15)
+ if test x"$ac_system_error_15" = x"yes"; then
+ AC_DEFINE(HAVE_ETXTBSY, 1, [Define if ETXTBSY exists.])
+ fi
])
dnl
diff --git a/libstdc++-v3/config/os/generic/error_constants.h b/libstdc++-v3/config/os/generic/error_constants.h
index bec1fe42d8f..644d111b70b 100644
--- a/libstdc++-v3/config/os/generic/error_constants.h
+++ b/libstdc++-v3/config/os/generic/error_constants.h
@@ -72,7 +72,11 @@ namespace posix_error
filename_too_long = ENAMETOOLONG,
function_not_supported = ENOSYS,
host_unreachable = EHOSTUNREACH,
+
+#ifdef _GLIBCXX_HAVE_EIDRM
identifier_removed = EIDRM,
+#endif
+
illegal_byte_sequence = EILSEQ,
inappropriate_io_control_operation = ENOTTY,
interrupted = EINTR,
@@ -156,7 +160,10 @@ namespace posix_error
stream_timeout = ETIME,
#endif
+#ifdef _GLIBCXX_HAVE_ETXTBSY
text_file_busy = ETXTBSY,
+#endif
+
timed_out = ETIMEDOUT,
too_many_files_open_in_system = ENFILE,
too_many_files_open = EMFILE,
diff --git a/libstdc++-v3/include/bits/c++config b/libstdc++-v3/include/bits/c++config
index a85f3a524f2..d42cb9feb47 100644
--- a/libstdc++-v3/include/bits/c++config
+++ b/libstdc++-v3/include/bits/c++config
@@ -180,11 +180,8 @@
namespace std
{
namespace __norm { }
- namespace __debug { }
- namespace __cxx1998 { }
-
- using namespace __debug __attribute__ ((strong));
- using namespace __cxx1998 __attribute__ ((strong));
+ inline namespace __debug { }
+ inline namespace __cxx1998 { }
}
#endif
@@ -193,11 +190,8 @@ namespace std
namespace std
{
namespace __norm { }
- namespace __parallel { }
- namespace __cxx1998 { }
-
- using namespace __parallel __attribute__ ((strong));
- using namespace __cxx1998 __attribute__ ((strong));
+ inline namespace __parallel { }
+ inline namespace __cxx1998 { }
}
#endif
@@ -205,22 +199,19 @@ namespace std
#if _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION
namespace std
{
- namespace _6 { }
- using namespace _6 __attribute__ ((strong));
+ inline namespace _6 { }
}
namespace __gnu_cxx
{
- namespace _6 { }
- using namespace _6 __attribute__ ((strong));
+ inline namespace _6 { }
}
namespace std
{
namespace tr1
{
- namespace _6 { }
- using namespace _6 __attribute__ ((strong));
+ inline namespace _6 { }
}
}
#endif
@@ -235,8 +226,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
# define _GLIBCXX_LDBL_NAMESPACE __gnu_cxx_ldbl128::
# define _GLIBCXX_BEGIN_LDBL_NAMESPACE namespace __gnu_cxx_ldbl128 {
# define _GLIBCXX_END_LDBL_NAMESPACE }
- namespace __gnu_cxx_ldbl128 { }
- using namespace __gnu_cxx_ldbl128 __attribute__((__strong__));
+ inline namespace __gnu_cxx_ldbl128 { }
#else
# define _GLIBCXX_LDBL_NAMESPACE
# define _GLIBCXX_BEGIN_LDBL_NAMESPACE
diff --git a/libstdc++-v3/testsuite/19_diagnostics/headers/system_error/types_std_c++0x.cc b/libstdc++-v3/testsuite/19_diagnostics/headers/system_error/types_std_c++0x.cc
index 31b6d4bf531..00a24572fbd 100644
--- a/libstdc++-v3/testsuite/19_diagnostics/headers/system_error/types_std_c++0x.cc
+++ b/libstdc++-v3/testsuite/19_diagnostics/headers/system_error/types_std_c++0x.cc
@@ -57,7 +57,11 @@ namespace gnu
using std::posix_error::filename_too_long;
using std::posix_error::function_not_supported;
using std::posix_error::host_unreachable;
+
+#ifdef _GLIBCXX_HAVE_EIDRM
using std::posix_error::identifier_removed;
+#endif
+
using std::posix_error::illegal_byte_sequence;
using std::posix_error::inappropriate_io_control_operation;
using std::posix_error::interrupted;
@@ -139,7 +143,10 @@ namespace gnu
using std::posix_error::stream_timeout;
#endif
+#ifdef _GLIBCXX_HAVE_ETXTBSY
using std::posix_error::text_file_busy;
+#endif
+
using std::posix_error::timed_out;
using std::posix_error::too_many_files_open_in_system;
using std::posix_error::too_many_files_open;