aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg McGary <greg@mcgary.org>2000-09-15 06:42:41 +0000
committerGreg McGary <greg@mcgary.org>2000-09-15 06:42:41 +0000
commitc5213f255bc59c18a72786c390194d7a9f32cf54 (patch)
tree6fd0030ad691ad2a5b156e1ea129e095d3635a19
parent5df308424cce01a1c5c761d88a11aafffee9e55f (diff)
merge from mainline at tag bounded-pointers-merge-20000914
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/bounded-pointers-branch@36425 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--ChangeLog9
-rw-r--r--MAINTAINERS2
-rw-r--r--configure.in11
-rw-r--r--gcc/ChangeLog764
-rw-r--r--gcc/INSTALL85
-rw-r--r--gcc/Makefile.in19
-rw-r--r--gcc/aclocal.m42
-rw-r--r--gcc/alias.c15
-rw-r--r--gcc/basic-block.h23
-rw-r--r--gcc/bb-reorder.c27
-rw-r--r--gcc/builtins.c72
-rw-r--r--gcc/builtins.def4
-rw-r--r--gcc/c-common.c32
-rw-r--r--gcc/c-common.def4
-rw-r--r--gcc/c-common.h23
-rw-r--r--gcc/c-decl.c2
-rw-r--r--gcc/c-lex.c41
-rw-r--r--gcc/c-parse.in55
-rw-r--r--gcc/c-pragma.c68
-rw-r--r--gcc/c-pragma.h26
-rw-r--r--gcc/c-semantics.c66
-rw-r--r--gcc/c-tree.h1
-rw-r--r--gcc/c-typeck.c14
-rw-r--r--gcc/ch/ChangeLog6
-rw-r--r--gcc/ch/Makefile.in5
-rw-r--r--gcc/ch/decl.c47
-rw-r--r--gcc/ch/timing.c5
-rw-r--r--gcc/combine.c41
-rw-r--r--gcc/config.in9
-rw-r--r--gcc/config/arm/arm-protos.h13
-rw-r--r--gcc/config/arm/arm.c42
-rw-r--r--gcc/config/arm/arm.h10
-rw-r--r--gcc/config/arm/elf.h2
-rw-r--r--gcc/config/arm/linux-elf.h2
-rw-r--r--gcc/config/avr/avr-protos.h2
-rw-r--r--gcc/config/avr/avr.c2
-rw-r--r--gcc/config/avr/avr.h25
-rw-r--r--gcc/config/avr/avr.md61
-rw-r--r--gcc/config/c4x/c4x-protos.h14
-rw-r--r--gcc/config/c4x/c4x.c213
-rw-r--r--gcc/config/c4x/c4x.h22
-rw-r--r--gcc/config/convex/convex.md2
-rw-r--r--gcc/config/d30v/d30v.h13
-rw-r--r--gcc/config/fp-bit.c32
-rw-r--r--gcc/config/fp-bit.h4
-rw-r--r--gcc/config/h8300/h8300-protos.h11
-rw-r--r--gcc/config/h8300/h8300.c25
-rw-r--r--gcc/config/h8300/h8300.h28
-rw-r--r--gcc/config/h8300/h8300.md14
-rw-r--r--gcc/config/h8300/lib1funcs.asm7
-rw-r--r--gcc/config/i370/i370-protos.h9
-rw-r--r--gcc/config/i370/i370.c135
-rw-r--r--gcc/config/i370/i370.h11
-rw-r--r--gcc/config/i370/i370.md9
-rw-r--r--gcc/config/i386/i386-protos.h2
-rw-r--r--gcc/config/i386/i386.c19
-rw-r--r--gcc/config/i386/i386.h2
-rw-r--r--gcc/config/i386/i386.md1915
-rw-r--r--gcc/config/i960/i960-protos.h10
-rw-r--r--gcc/config/i960/i960.c118
-rw-r--r--gcc/config/i960/i960.h5
-rw-r--r--gcc/config/ia64/ia64-protos.h1
-rw-r--r--gcc/config/ia64/ia64.c31
-rw-r--r--gcc/config/ia64/ia64.h23
-rw-r--r--gcc/config/ia64/ia64.md1228
-rw-r--r--gcc/config/ia64/lib1funcs.asm17
-rw-r--r--gcc/config/ns32k/ns32k.md8
-rw-r--r--gcc/config/rs6000/aix.h16
-rw-r--r--gcc/config/rs6000/rs6000.c17
-rw-r--r--gcc/config/rs6000/rs6000.h16
-rw-r--r--gcc/config/rs6000/rs6000.md58
-rw-r--r--gcc/config/rs6000/sol-c0.c5
-rw-r--r--gcc/config/rs6000/sysv4.h85
-rw-r--r--gcc/config/sh/elf.h4
-rw-r--r--gcc/config/sh/sh-protos.h11
-rw-r--r--gcc/config/sh/sh.c30
-rw-r--r--gcc/config/sh/sh.h19
-rw-r--r--gcc/config/sh/sh.md48
-rw-r--r--gcc/config/v850/v850-protos.h19
-rw-r--r--gcc/config/v850/v850.c415
-rw-r--r--gcc/config/v850/v850.h38
-rw-r--r--gcc/config/vax/vax.md4
-rwxr-xr-xgcc/configure203
-rw-r--r--gcc/configure.in21
-rw-r--r--gcc/cp/ChangeLog134
-rw-r--r--gcc/cp/Makefile.in2
-rw-r--r--gcc/cp/cp-tree.h23
-rw-r--r--gcc/cp/decl.c700
-rw-r--r--gcc/cp/decl2.c51
-rw-r--r--gcc/cp/error.c668
-rw-r--r--gcc/cp/expr.c79
-rw-r--r--gcc/cp/init.c6
-rw-r--r--gcc/cp/ir.texi162
-rw-r--r--gcc/cp/method.c2
-rw-r--r--gcc/cp/optimize.c1
-rw-r--r--gcc/cp/parse.y166
-rw-r--r--gcc/cp/pt.c4
-rw-r--r--gcc/cp/rtti.c6
-rw-r--r--gcc/cp/semantics.c351
-rw-r--r--gcc/cp/spew.c36
-rw-r--r--gcc/cp/typeck.c49
-rw-r--r--gcc/cppexp.c17
-rw-r--r--gcc/cppfiles.c596
-rw-r--r--gcc/cpphash.h29
-rw-r--r--gcc/cppinit.c11
-rw-r--r--gcc/cpplex.c72
-rw-r--r--gcc/cpplib.h9
-rw-r--r--gcc/cppmacro.c52
-rw-r--r--gcc/cppulp.c27
-rw-r--r--gcc/cse.c112
-rw-r--r--gcc/defaults.h53
-rw-r--r--gcc/dwarf2out.c9
-rw-r--r--gcc/dwarfout.c45
-rw-r--r--gcc/emit-rtl.c5
-rw-r--r--gcc/expr.c13
-rw-r--r--gcc/f/ChangeLog6
-rw-r--r--gcc/f/Makefile.in5
-rw-r--r--gcc/f/com.c1
-rw-r--r--gcc/f/com.h43
-rw-r--r--gcc/f/version.c2
-rw-r--r--gcc/final.c220
-rw-r--r--gcc/fixinc/fixfixes.c19
-rw-r--r--gcc/fixinc/fixincl.c12
-rw-r--r--gcc/fixinc/fixincl.tpl4
-rw-r--r--gcc/fixinc/fixincl.x494
-rw-r--r--gcc/fixinc/fixlib.h30
-rw-r--r--gcc/fixinc/fixtests.c14
-rw-r--r--gcc/fixinc/server.h17
-rw-r--r--gcc/flags.h2
-rw-r--r--gcc/flow.c326
-rw-r--r--gcc/gcc.145
-rw-r--r--gcc/gcc.c31
-rw-r--r--gcc/genattrtab.c392
-rw-r--r--gcc/genoutput.c17
-rw-r--r--gcc/genrecog.c3
-rw-r--r--gcc/haifa-sched.c201
-rw-r--r--gcc/ifcvt.c5
-rw-r--r--gcc/install.texi29
-rw-r--r--gcc/integrate.c187
-rw-r--r--gcc/invoke.texi43
-rw-r--r--gcc/java/ChangeLog75
-rw-r--r--gcc/java/decl.c4
-rw-r--r--gcc/java/expr.c9
-rw-r--r--gcc/java/java-tree.h3
-rw-r--r--gcc/java/jcf-parse.c35
-rw-r--r--gcc/java/jv-scan.c31
-rw-r--r--gcc/java/lang-options.h6
-rw-r--r--gcc/java/lang.c14
-rw-r--r--gcc/java/lex.c294
-rw-r--r--gcc/java/lex.h41
-rw-r--r--gcc/java/parse.h5
-rw-r--r--gcc/java/parse.y26
-rw-r--r--gcc/java/typeck.c2
-rw-r--r--gcc/java/verify.c20
-rw-r--r--gcc/libgcc2.h4
-rw-r--r--gcc/loop.c1405
-rw-r--r--gcc/loop.h185
-rw-r--r--gcc/md.texi58
-rw-r--r--gcc/optabs.c4
-rw-r--r--gcc/po/ChangeLog27
-rw-r--r--gcc/po/Makefile.in.in7
-rw-r--r--gcc/po/POTFILES.in11
-rw-r--r--gcc/po/cat-id-tbl.c4746
-rw-r--r--gcc/po/gcc.pot5627
-rw-r--r--gcc/print-rtl.c58
-rw-r--r--gcc/profile.c6
-rw-r--r--gcc/recog.c95
-rw-r--r--gcc/recog.h5
-rw-r--r--gcc/reload.c11
-rw-r--r--gcc/reload1.c9
-rw-r--r--gcc/rtl.h11
-rw-r--r--gcc/rtl.texi28
-rw-r--r--gcc/sdbout.c34
-rw-r--r--gcc/simplify-rtx.c2
-rw-r--r--gcc/stmt.c48
-rw-r--r--gcc/testsuite/ChangeLog43
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/981006-1.x2
-rw-r--r--gcc/tm.texi71
-rw-r--r--gcc/toplev.c10
-rw-r--r--gcc/tradcif.y4
-rw-r--r--gcc/tree.c48
-rw-r--r--gcc/tree.h6
-rw-r--r--gcc/unroll.c420
-rw-r--r--gcc/varasm.c10
-rw-r--r--gcc/version.c2
-rw-r--r--include/ChangeLog4
-rw-r--r--include/splay-tree.h6
-rw-r--r--libf2c/libF77/Version.c2
-rw-r--r--libf2c/libI77/Version.c2
-rw-r--r--libf2c/libU77/Version.c2
-rw-r--r--libiberty/ChangeLog26
-rw-r--r--libiberty/cp-demangle.c4
-rw-r--r--libiberty/cplus-dem.c21
-rw-r--r--libiberty/md5.c1
-rw-r--r--libiberty/splay-tree.c68
-rw-r--r--libiberty/testsuite/demangle-expected24
-rw-r--r--libstdc++-v3/ChangeLog72
-rw-r--r--libstdc++-v3/acinclude.m433
-rw-r--r--libstdc++-v3/aclocal.m432
-rw-r--r--libstdc++-v3/bits/c++config6
-rw-r--r--libstdc++-v3/bits/codecvt.h4
-rw-r--r--libstdc++-v3/bits/locale_facets.tcc4
-rw-r--r--libstdc++-v3/bits/localefwd.h50
-rw-r--r--libstdc++-v3/bits/std_cwctype.h6
-rw-r--r--libstdc++-v3/bits/stl_tree.h10
-rw-r--r--libstdc++-v3/config/cpu/i386/bits/atomicity.h6
-rw-r--r--libstdc++-v3/config/cpu/i486/bits/atomicity.h4
-rw-r--r--libstdc++-v3/config/cpu/ia64/bits/atomicity.h2
-rwxr-xr-xlibstdc++-v3/configure1907
-rw-r--r--libstdc++-v3/configure.in2
-rw-r--r--libstdc++-v3/docs/17_intro/porting-howto.html244
-rw-r--r--libstdc++-v3/libio/Makefile.in112
-rw-r--r--libstdc++-v3/testsuite/22_locale/facet.cc73
213 files changed, 17923 insertions, 10578 deletions
diff --git a/ChangeLog b/ChangeLog
index 8ffd0da0f10..16baf9bcaa8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+Wed Sep 13 11:11:29 2000 Jeffrey A Law (law@cygnus.com)
+
+ * configure.in: Do not build byacc for hppa64. Provide paths to the
+ X11 libraries for hppa64.
+
+2000-09-08 Stephane Carrez <Stephane.Carrez@worldnet.fr>
+
+ * MAINTAINERS: Add myself as 68hc11 port maintainer.
+
2000-09-06 Alexandre Oliva <aoliva@redhat.com>
* Makefile.in (all-zlib): Added dummy target.
diff --git a/MAINTAINERS b/MAINTAINERS
index 4470f5d5652..40cba4cd20c 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -30,6 +30,7 @@ mn10200 port Jeff Law law@cygnus.com
mn10300 port Jeff Law law@cygnus.com
mn10300 port Alexandre Oliva aoliva@redhat.com
hppa port Jeff Law law@cygnus.com
+m68hc11 port Stephane Carrez Stephane.Carrez@worldnet.fr
m68k port (?) Jeff Law law@cygnus.com
m68k-motorola-sysv port Philippe De Muyter phdm@macqel.be
rs6000 port Geoff Keating geoffk@cygnus.com
@@ -100,6 +101,7 @@ in changes outside of the parts of the compiler they maintain.
Write After Approval
Scott Bambrough scottb@netwinder.org
Neil Booth NeilB@earthling.net
+William Cohen wcohen@redhat.com
*Paul Eggert eggert@twinsun.com
Kaveh Ghazi ghazi@caip.rutgers.edu
Anthony Green green@cygnus.com
diff --git a/configure.in b/configure.in
index 5f9f1c4273a..a474278b55c 100644
--- a/configure.in
+++ b/configure.in
@@ -284,6 +284,14 @@ if false && [ "${host}" = "${target}" ] && [ x${enable_shared} = x ]; then
esac
fi
+# hpux11 in 64bit mode has libraries in a weird place. Arrange to find
+# them automatically.
+case "${host}" in
+ hppa*64*-*-hpux11*)
+ withoptions="$withoptions -x-libraries=/usr/lib/pa20_64 -x-includes=/usr/X11R6/include"
+ ;;
+esac
+
case "${enable_shared}" in
yes) shared=yes ;;
no) shared=no ;;
@@ -543,6 +551,9 @@ esac
noconfigdirs=""
case "${host}" in
+ hppa*64*-*-*)
+ noconfigdirs="$noconfigdirs byacc"
+ ;;
i[3456]86-*-vsta)
noconfigdirs="tcl expect dejagnu make texinfo bison patch flex byacc send-pr gprof uudecode dejagnu diff guile perl apache inet itcl tix db snavigator gnuserv gettext"
;;
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 08c56c3eb26..5d6a0fb9f2c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,753 @@
+Thu Sep 14 00:51:57 EDT 2000 John Wehle (john@feith.com)
+
+ * alias.c (memrefs_conflict_p): An ADDRESSOF doesn't
+ conflict with frame_pointer_rtx.
+
+2000-09-13 Kazu Hirata <kazu@hxi.com>
+
+ * loop.c: Fix formatting.
+ * loop.h: Likewise.
+
+2000-09-13 Richard Henderson <rth@cygnus.com>
+
+ * config/ia64/ia64.md (divsf3): New.
+ (divsf3_internal_lat, divsf3_internal_thr): New.
+ (divdf3, divdf3_internal_lat, divdf3_internal_thr): New.
+ (divtf3, divtf3_internal_lat, divtf3_internal_thr): New.
+ (adddf3_trunc, subdf3_trunc, muldf3_trunc): New.
+ (madddf4_trunc, msubdf4_trunc, nmuldf3_trunc): New.
+ (nmadddf4_alts, nmadddf4_trunc): New.
+ (addtf3_truncsf, addtf3_truncdf, subtf3_truncsf): New.
+ (subtf3_truncdf, multf3_truncsf, multf3_truncdf): New.
+ (multf3_truncsf_alts, multf3_truncdf_alts): New.
+ (maddtf4_truncsf, maddtf4_truncdf, maddtf4_alts_truncdf): New.
+ (msubtf4_truncsf, msubtf4_truncdf, nmultf3_truncsf): New.
+ (nmultf3_truncdf, nmaddtf4_truncsf, nmaddtf4_truncdf): New.
+ (nmaddtf4_truncdf_alts): New.
+ (recip_approx): Don't predicate.
+
+2000-09-13 Richard Henderson <rth@cygnus.com>
+
+ * config/ia64/lib1funcs.asm (__divsf3): Protect fnorm.s with p6.
+
+2000-09-13 Stephane Carrez <Stephane.Carrez@worldnet.fr>
+
+ * flags.h (flag_dump_rtl_in_asm): Declare.
+ * toplev.c (flag_dump_rtl_in_asm): Define.
+ (decode_d_option): Set flag_dump_rtl_in_asm and flag_print_asm_name
+ if -dP is specified.
+ * rtl.h (print_rtx_head): Declare.
+ * print-rtl.c (print_rtx_head): Define.
+ (print_rtx): Print the string pointed to by print_rtx_head
+ at beginning of each dump line.
+ (print_rtl): Likewise.
+ (print_rtl_single): Likewise.
+ * final.c (final_scan_insn): Dump the insn in the assembly
+ file for debugging.
+ * gcc.1: Document -dP option.
+ * invoke.texi (Debugging Options): Likewise.
+
+2000-09-13 Stephane Carrez <Stephane.Carrez@worldnet.fr>
+
+ * md.texi (Machine Constraints): Document the 68HC11 constraints.
+ * install.texi (Configurations): Document the 68HC11&68HC12 port.
+ * invoke.texi (Option Summary, M68hc1x Options): Document the options.
+
+Tue Sep 12 13:51:13 2000 Denis Chertykov <denisc@overta.ru>
+
+ * config/avr/avr.h (ASSEMBLER_DIALECT): New macro declared.
+ * config/avr/avr.md (*movstrqi_insn): Cleanup output template.
+ (*clrstrqi): Likewise.
+ (xorhi3,xorsi3,absqi2): Likewise.
+ (one_cmplhi2,one_cmplsi2): Likewise.
+ (addsi3): Two stupid constraint alternatives removed.
+ (extendhisi2): Use `movw' for enhanced avr cores.
+ (zero_extendhisi2): Likewise.
+
+Wed Sep 13 02:31:23 EDT 2000 John Wehle (john@feith.com)
+
+ * alias.c (find_base_term): Use frame_pointer_rtx
+ when handling an ADDRESSOF.
+
+ * cse.c (canon_hash): Handle USE of BLKmode memory.
+ (cse_insn): Outgoing arguments for a libcall don't
+ affect any recorded expressions.
+
+2000-09-12 Tom Tromey <tromey@cygnus.com>
+
+ * configure, config.in: Rebuilt.
+ * configure.in: Check for iconv, nl_langinfo, langinfo.h.
+
+2000-09-12 Jakub Jelinek <jakub@redhat.com>
+
+ * c-lex.c (lex_string): Use charwidth to compute bytemask.
+ * expr.c (expand_expr): Don't optimize constant array references
+ initialized with wide string constants.
+
+2000-09-13 Michael Hayes <mhayes@cygnus.com>
+
+ * loop.c (note_set_pseudo_multiple_uses): Correct.
+
+2000-09-12 Jim Wilson <wilson@cygnus.com>
+
+ * ifcvt.c (noce_process_if_block): If A and B are the same, and no
+ else block, and X has side-effects, then fail.
+
+2000-09-12 Greg McGary <greg@mcgary.org>
+
+ * config/mips/mips-protos.h
+ (trap_cmp_op, mips_gen_conditional_trap): New func decls.
+ * config/mips/mips.h (ISA_HAS_COND_TRAP): New macro.
+ (PREDICATE_CODES): Add "trap_cmp_op".
+ * config/mips/mips.c
+ (trap_cmp_op, mips_gen_conditional_trap): New functions.
+ * config/mips/mips.md (trap, conditional_trap): New patterns.
+
+2000-09-12 Bernd Schmidt <bernds@redhat.co.uk>
+
+ * flow.c (try_pre_increment_1): Don't do anything to sets of the stack
+ pointer.
+
+2000-09-12 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * builtins.c (built_in_decls): New array.
+ (expand_builtin_fputs): New function.
+ (expand_builtin): Handle BUILT_IN_FPUTC and BUILT_IN_FPUTS.
+
+ * builtins.def (BUILT_IN_FPUTC, BUILT_IN_FPUTS): New members.
+
+ * c-common.c (c_common_nodes_and_builtins): Handle fputc/fputs.
+
+ * tree.h (built_in_decls): New array.
+
+Tue Sep 12 08:53:57 2000 Jeffrey A Law (law@cygnus.com)
+
+ * convex.md: Use "+" instead of "=" for outputs wrapped in a
+ STRICT_LOW_PART.
+ * i370.md, i386.md, ns32k.md, sh.md, vax.md: Likewise.
+
+2000-09-12 Kazu Hirata <kazu@hxi.com>
+
+ * haifa-sched.c: Fix formatting.
+
+ * genattrtab.c: Fix formatting.
+
+ * unroll.c: Fix formatting.
+
+2000-09-12 Bruce Korb <bkorb@gnu.org>
+
+ * fixinc/fixfixes.c: make a type for the fix procedure & use it,
+ remove obsolete code
+ * fixinc/fixincl.c: Use PARAMS, not _P_. Add no-op default to switch.
+ * fixinc/fixincl.tpl: make non-exported arrays static scope
+ * fixinc/fixincl.x: regenerate
+ * fixinc/fixlib.h: Use PARAMS, not _P_
+ * fixinc/fixtests.c: make a type for the test proc & use it
+ * fixinc/server.h: Use PARAMS, not _P_
+
+2000-09-12 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * c-typeck.c (process_init_element): Avoid union init warnings on
+ floating point zero. Don't crash on unions containing structs.
+
+2000-09-12 Alexandre Oliva <aoliva@redhat.com>
+
+ * config/sh/sh.h (PREDICATE_CODES): Add CONST_DOUBLE to
+ general_movsrc_operand, and remove CONST_INT from
+ general_movdst_operand.
+
+2000-09-12 Bernd Schmidt <bernds@redhat.co.uk>
+
+ * cse.c (approx_reg_cost): If SMALL_REGISTER_CLASSES, return INT_MAX
+ if a reference to non-fixed hardreg is seen. Otherwise, count hard
+ regs with a higher cost.
+ (preferrable): Deal with cases where either cost or regcost is
+ MAX_COST.
+ (cse_insn): Use MAX_COST rather than 10000. Always initialize
+ regcost values.
+ (COSTS_N_INSNS): Move definition...
+ * rtl.h: ...here.
+ (MAX_COST): New macro.
+ * loop.c (init_loop): Use COSTS_N_INSNS macro instead of hardcoded
+ constant.
+
+2000-09-11 Mark Mitchell <mark@codesourcery.com>
+
+ * c-common.h (genrtl_clear_out_block): Remove.
+ * c-semantics.c (genrtl_clear_out_block): Remove.
+ (genrtl_while_stmt): Don't call it.
+ (genrtl_for_stmt): Likewise.
+
+2000-09-11 Zack Weinberg <zack@wolery.cumb.org>
+
+ * cppfiles.c: Move all default-#defines to top of file.
+ (open_include_file): Replace by lookup_include_file.
+ (read_with_read, read_file): Merged into read_include_file.
+ (stack_include_file, purge_cache): New functions.
+ (close_cached_fd): Delete.
+ (lookup_include_file, read_include_file, _cpp_pop_file_buffer):
+ Cache the in-memory buffer, not the file descriptor.
+
+ * cpphash.h (struct include_file): Add buffer, st, refcnt,
+ mapped fields.
+ (xcnew): New utility macro.
+ (DO_NOT_REREAD, NEVER_REREAD): Move up by struct include_file.
+ * cpplib.h (struct cpp_buffer): Remove mapped field.
+
+2000-09-11 Zack Weinberg <zack@wolery.cumb.org>
+
+ * cpplex.c (parse_string): Accept backslash space newline as a
+ line continuation.
+ (lex_line): Likewise.
+ (_cpp_get_token): Remove hard limit on macro nesting.
+
+2000-09-12 Philipp Thomas <pthomas@suse.de>
+
+ * aclocal.m4 (AM_WITH_NLS): Don't force use of included gettext.
+ * configure: Rebuilt.
+
+2000-09-13 Michael Hayes <mhayes@cygnus.com>
+
+ * flow.c (split_block): Fix update of registers live at
+ end of split block.
+
+Tue Sep 12 01:51:38 MET DST 2000 Jan Hubicka <jh@suse.cz>
+
+ * i386.md (add?i_3, add?i_5): New.
+ (add?i_4): Rename from add?i_3; Fix compare pattern.
+ (sub?i_3, xor?i_3, ior?i_3): New.
+
+ * genrecog.c (write_tree): Output code to clear insn_extract cache.
+ * genattrtab.c (write_attr_case): Gen call to extract_insn_cache
+ instead of extract_insn and extract_constrain_insn_cache instead of
+ extract_insn and constrain_operands.
+ * recog.c (extract_insn_cached, extract_constrain_insn_cached):
+ New functions.
+ (extract_insn): Clear which_alternative.
+ (constrain_operands): Set which_alternative to -1 when failed.
+ * recog.h (extract_constrain_insn_cached, extract_insn_cached):
+ Declare.
+
+2000-09-11 Matthew Hiller <hiller@redhat.com>
+
+ * config/h8300/h8300.md (movstrictqi): Changed constraint modifier
+ on operand 0 to '+'.
+ (movstricthi): Likewise.
+
+2000-09-12 Michael Hayes <mhayes@cygnus.com>
+
+ * loop.h (LOOP_IVS): New macro.
+ (REG_IV_TYPE, REG_IV_INFO): Add ivs argument.
+ (struct loop_ivs): New.
+ (struct loop_info): Add ivs field.
+ (reg_iv_type, reg_iv_info): Delete prototype.
+ (reg_biv_class, loop_iv_list): Likewise.
+ * loop.c (record_biv, find_life_end): Pass loop argument.
+ (reg_iv_type): Remove global array and use
+ field in loop_regs structure within loop_ivs structure.
+ (reg_iv_info, reg_biv_class, loop_iv_list): Likewise.
+ (first_increment_giv, last_increment_giv): Use entry in
+ loop_ivs structure.
+ (record_initial): Pass ivs pointer.
+ * unroll.c (copy_loop_body, remap_split_bivs): Add loop argument.
+
+2000-09-12 Michael Hayes <mhayes@cygnus.com>
+
+ * loop.h (LOOP_REGS): New macro.
+ (struct loop_regs): New.
+ (struct loop_info): Add regs field.
+ * loop.c (set_in_loop): Remove global array and store
+ in loop_regs structure as part of loop_info structure.
+ (n_times_set, may_not_optimize): Likewise.
+ (reg_single_usage, moved_once): Likewise.
+ (count_one_set): Add regs argument.
+ (combine_movables, rtx_equal_for_loop_p, combine_givs): Likewise.
+ (set_pseudo_multiple_uses): Pass regs pointer.
+
+2000-09-12 Michael Hayes <mhayes@cygnus.com>
+
+ * unroll.c (iteration_info): Subsume into loop_iterations.
+ * loop.h (loop_info): New field iv.
+
+2000-09-12 Michael Hayes <mhayes@cygnus.com>
+
+ * basic-block.h (LOOP_TREE, LOOP_PRE_HEADER, LOOP_EDGES): New.
+ (LOOP_EXITS_DOMS, LOOP_ALL): Likewise.
+ (flow_loops_update): New prototype.
+ (flow_loops_find): Add flags to prototype.
+ (struct loop): Add `pre_header_root' and `pre_header_trace' fields.
+ * flow.c (flow_loop_pre_header_scan): New.
+ (flow_loop_dump): Dump pre-header root and trace and exit dominators.
+ (flow_loop_free): Free pre-header root and trace and exit dominators.
+ (flow_loops_find): New argument flags.
+ (flow_loops_update): New function.
+ * toplev.c (rest_of_compilation): Add flag argument to flow_loops_find.
+
+2000-09-12 Michael Hayes <mhayes@cygnus.com>
+
+ * basic-block.h (split_block, update_bb_for_insn): New prototypes.
+ * flow.c (split_block, update_bb_for_insn): New functions.
+
+2000-09-11 Richard Henderson <rth@cygnus.com>
+
+ * cse.c (fold_rtx): Honor NO_FUNCTION_CSE.
+
+2000-09-11 Richard Henderson <rth@cygnus.com>
+
+ * config/ia64/ia64-protos.h (fr_nonimmediate_operand): Declare.
+ * config/ia64/ia64.c (fr_nonimmediate_operand): New.
+ (ia64_override_options): Prevent optimizing division for both
+ latency and throughput.
+ (rtx_needs_barrier): Handle frcpa.
+ * config/ia64/ia64.h (MASK_INLINE_DIV_LAT): New.
+ (MASK_INLINE_DIV_THR, TARGET_INLINE_DIV_LAT): New.
+ (TARGET_INLINE_DIV_THR, TARGET_INLINE_DIV): New.
+ (TARGET_SWITCHES): Add -minline-divide-min-latency and
+ -minline-divide-max-throughput.
+ (PREDICATE_CODES): Update.
+ * config/ia64/ia64.md (extendsidi2): Remove * from f case.
+ (zero_extendsidi2): Likewise. Fix typo in f case insn.
+ (extendsfdf2): Add cases for gr<->fr and fr<->mem.
+ (extendsftf2): Likewise.
+ (extenddftf2): Likewise.
+ (fix_trunctfdi2_alts): New.
+ (fixuns_trunctfdi2_alts): New.
+ (madd*4): Rename from madd*3.
+ (divsi3, modsi3, udivsi3, umodsi3): New.
+ (divsi3_internal): New.
+ (divdi3, moddi3, udivdi3, umoddi3): New.
+ (divdi3_internal_lat, divdi3_internal_thr): New.
+ (multf3_alts, maddtf4_alts, nmaddtf4_alts): New.
+ (recip_approx): New.
+
+2000-09-11 Alexandre Oliva <aoliva@redhat.com>
+
+ * print-rtl.c (debug_call_placeholder_verbose): New variable.
+ (print_rtx) [CALL_PLACEHOLDER]: Dump all call sequences if it is
+ set.
+ * integrate.c (copy_rtx_and_substitute): Don't share
+ LEAF_REG_REMAPpable registers with the inlined function. Don't
+ share the function value with calling sequences.
+
+2000-09-11 Jakub Jelinek <jakub@redhat.com>
+
+ * c-decl.c (do_case): Fix a typo.
+
+ * combine.c (simplify_if_then_else): Don't convert a == b ? b : a
+ to a if the comparison is floating mode and not -ffast-math.
+ * simplify-rtx.c (simplify_ternary_operation): Likewise.
+
+Mon Sep 11 20:07:48 2000 J"orn Rennecke <amylaar@redhat.co.uk>
+
+ * sh.h (INITIALIZE_TRAMPOLINE): Remove stray call to
+ gen_ic_invalidate_line.
+
+2000-09-11 Philip Blundell <pb@futuretv.com>
+
+ * config/arm/elf.h (SUBTARGET_CPP_SPEC): Don't define `arm_elf'.
+
+Mon Sep 11 10:48:41 2000 Ulrich Drepper <drepper@redhat.com>
+
+ * install.texi (LANGUAGES): Update to include new languages.
+ * INSTALL: Rebuilt.
+
+2000-09-11 DJ Delorie <dj@redhat.com>
+
+ * gcc.c (main): Don't warn about unused -B prefixes
+ (unused_prefix_warnings): remove
+
+2000-09-11 Kazu Hirata <kazu@hxi.com>
+
+ * final.c: Fix formatting.
+
+ * integrate.c: Fix formatting.
+
+2000-09-11 Geoff Keating <geoffk@cygnus.com>
+
+ * alias.c (memrefs_conflict_p): An ADDRESSOF does conflict, sorry.
+
+2000-09-11 Bernd Schmidt <bernds@redhat.co.uk>
+
+ * reload.c (regno_clobbered_p): Fix thinko in previous change.
+
+2000-09-10 Stephane Carrez <Stephane.Carrez@worldnet.fr>
+
+ * gcc.1: Document 68hc11 specific options.
+
+2000-09-10 Geoff Keating <geoffk@cygnus.com>
+
+ * config/rs6000/sysv4.h (MASK_LONG_DOUBLE_128): Define.
+ (TARGET_LONG_DOUBLE_128): Define.
+ (SUBTARGET_SWITCHES): Add -mlong-double-64 and -mlong-double-128.
+ (LONG_DOUBLE_TYPE_SIZE): Redefine.
+ (MAX_LONG_DOUBLE_TYPE_SIZE): Define.
+ (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Define depending on definition
+ of __LONG_DOUBLE_128__.
+ (CPP_SYSV_SPEC): Define __LONG_DOUBLE_128__ if -mlong-double-128
+ passed.
+ (CPP_LONGDOUBLE_DEFAULT_SPEC): Define.
+ (CPP_SYSV_DEFAULT_SPEC): Define.
+ (SUBTARGET_EXTRA_SPECS): Add cpp_longdouble_default.
+ (INIT_TARGET_OPTABS): Define.
+
+ * config/rs6000/aix.h (RS6000_ITRUNC): Moved from rs6000.h.
+ (RS6000_UITRUNC): Likewise.
+ (INIT_TARGET_OPTABS): New macro.
+ * config/rs6000/rs6000.c (rs6000_trunc_used): Delete.
+ (trunc_defined): Delete.
+ (output_prolog): Don't output .extern definitions for fp->int
+ conversion routines, ASM_OUTPUT_EXTERNAL_LIBCALL will do it.
+ * config/rs6000/rs6000.h (rs6000_trunc_used): Delete.
+ (trunc_defined): Delete.
+ (RS6000_ITRUNC): Moved to aix.h.
+ (RS6000_UITRUNC): Likewise.
+ * config/rs6000/rs6000.md (fix_truncdfsi2): Fail if it would
+ only emit a libcall.
+ (fixuns_truncdfsi2): Delete.
+ (trunc_call): Delete.
+ (trunc_call_rtl): Delete.
+
+2000-09-10 Zack Weinberg <zack@wolery.cumb.org>
+
+ * varasm.c (make_decl_rtl): Restore leading star on
+ DECL_ASSEMBLER_NAME set for decls with an asmspec.
+
+2000-09-10 Zack Weinberg <zack@wolery.cumb.org>
+
+ * c-pragma.c (handle_pragma_pack): Correct parsing logic so it
+ won't give a spurious error for '#pragma pack()'. Simplify
+ control flow for readability. 'reset' action is not necessary.
+
+2000-09-10 Zack Weinberg <zack@wolery.cumb.org>
+
+ * defaults.h: Provide default definitions for: CHAR_TYPE_SIZE,
+ SHORT_TYPE_SIZE, INT_TYPE_SIZE, LONG_TYPE_SIZE,
+ LONG_LONG_TYPE_SIZE, WCHAR_TYPE_SIZE, FLOAT_TYPE_SIZE,
+ DOUBLE_TYPE_SIZE, LONG_DOUBLE_TYPE_SIZE, and WCHAR_UNSIGNED.
+
+ * cppexp.c, dwarfout.c, dwarf2out.c, emit-rtl.c, final.c, optabs.c,
+ profile.c, sdbout.c, tradcif.y, tree.c:
+ Include defaults.h if not already included.
+ Don't define the above macros.
+
+ * Makefile.in: Update dependencies.
+
+2000-09-10 Mark Mitchell <mark@codesourcery.com>
+
+ * c-common.h (add_stmt): Change prototype.
+ (RECHAIN_STMTS): New macro.
+ (CASE_LABEL_DECL): Likewise.
+ (genrtl_case_label): Change prototype.
+ (c_expand_start_case): Remove prototype.
+ (build_case_label): Change prototype.
+ (decl_constant_value): Declare.
+ * c-common.c (check_case_value): Handle C++'s extensions to C
+ semantics.
+ * c-commnon.def (CASE_LABEL): Add room for the CASE_LABEL_DECL
+ field.
+ * c-parse.in (stmt): Adjust handling of return statements and case
+ laels.
+ * c-semantics.c (add_stmt): Return the new statement.
+ (genrtl_return_stmt): Take the RETURN_STMT as input, not the
+ returned expression. Directly generate RTL, rather than calling
+ c_expand_return.
+ (genrtl_switch_stmt): Don't call c_expand_start_case.
+ (build_case_label): Take the LABEL_DECL as input, too.
+ (genrtl_case_label): Just call add_case_node.
+ (expand_stmt): Adjust calls to genrtl_return_stmt and
+ genrtl_case_label.
+ * c-tree.h (c_expand_start_case): Declare.
+ * c-typeck.c (decl_constant_value): Give it external linkage.
+ (c_expand_return): Don't call expand_return or expand_null_return;
+ use genrtl_return_stmt instead.
+ * stmt.c (struct nesting): Remove num_ranges field.
+ (add_case_node): Give it external linkage.
+ (expand_start_case): Don't set num_ranges.
+ (expand_start_case_dummy): Don't clear it.
+ (pushcase): Rely on add_case_node to handle `default' labels.
+ (add_case_node): Handle `default' labels.
+ * tree.c (tree_int_cst_compare): New function.
+ * tree.h (tree_int_cst_compare): Declare.
+ (add_case_node): Likewise.
+
+2000-09-10 Richard Henderson <rth@cygnus.com>
+
+ * c-parse.in: Revert last change.
+ (init_reswords): Do not enter disabled keywords into the ridpointers
+ table, modulo objc weirdness.
+ (_yylex): Return the canonical spelling for a keyword.
+
+2000-09-10 Philip Blundell <philb@gnu.org>
+
+ * config/arm/arm.h (CPP_ISA_SPEC): Don't define `arm' or `thumb'.
+ * config/arm/linux-elf.h (CPP_PREDEFINES): Don't define `__arm__'.
+
+Sun Sep 10 14:30:28 EDT 2000 John Wehle (john@feith.com)
+
+ * alias.c (find_base_term): Handle ADDRESSOF.
+ (memrefs_conflict_p): An ADDRESSOF doesn't conflict.
+
+2000-09-10 Denis Chertykov <denisc@overta.ru>
+
+ * genoutput.c (output_insn_data): Translate <NEWLINE> to \n\ while
+ outputting templates with many lines.
+
+2000-09-10 Stephane Carrez <Stephane.Carrez@worldnet.fr>
+
+ * libgcc2.h: Use LONG_LONG_TYPE_SIZE instead of MIN_UNITS_PER_WORD
+ to decide whether 64-bit support must be generated.
+
+2000-09-10 Richard Henderson <rth@cygnus.com>
+
+ * c-parse.in (asm patterns): Fix volatile check.
+
+2000-09-09 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * cppmacro.c (check_trad_stringification): New function.
+ (save_expansion): If -Wtraditional, warn about stringification of
+ macro arguments.
+
+2000-09-11 Michael Hayes <mhayes@cygnus.com>
+
+ * loop.h (struct loop_mem_info): Move from loop.c
+ (struct loop_info): Add fields store_mems, mems, mems_idx,
+ mems_allocated, unknown_address_altered,
+ unknown_constant_address_altered, num_mem_sets, and
+ first_loop_store_insn.
+
+ * loop.c (loop_store_mems): Replace with field in loop_info struct.
+ (loop_mems, loop_mems_idx, loop_mems_allocated): Likewise.
+ (unknown_address_altered, unknown_constant_address_altered): Likewise.
+ (num_mem_sets): Likewise.
+ (replace_loop_mems, replace_loop_regs): New.
+ (struct loop_replace_args): New.
+ (load_mems): Use replace_loop_mems.
+ (try_copy_prop): Use replace_loop_regs.
+ (replace_loop_reg, replace_loop_mem): Use loop_replace_args structure.
+
+2000-09-09 Stephane Carrez <Stephane.Carrez@worldnet.fr>
+
+ * configure.in: Recognize m6811-elf and m6812-elf.
+ * configure: Regenerate.
+
+2000-09-09 Geoff Keating <geoffk@cygnus.com>
+
+ * recog.c (validate_replace_rtx_1): Correct MODE parameter in call
+ to operand_subword.
+
+2000-09-10 Michael Hayes <mhayes@cygnus.com>
+
+ * loop.c (struct movables): New.
+ (num_movables): Move into struct movables.
+ (the_movables): Change type to struct movables.
+ (ignore_some_movables): Change struct movable arg to struct movables.
+ (force_movables, combine_movables, regs_match_p): Likewise.
+ (rtx_equal_for_loop_p, move_movables): Likewise.
+ (scan_loop): Change movables to be of type struct movables.
+ Replace last_movable with field in movables structure.
+
+2000-09-08 Zack Weinberg <zack@wolery.cumb.org>
+
+ * c-pragma.c: Don't elide entire file if !HANDLE_GENERIC_PRAGMAS.
+ (init_pragma): Avoid warning if pfile happens to be unused.
+ * c-pragma.h: Never define HANDLE_GENERIC_PRAGMAS. Never
+ define init_pragma to nothing. Always prototype
+ init_pragma. Prototype dispatch_pragma if !USE_CPPLIB.
+
+ * c-lex.c (process_directive): Always call dispatch_pragma.
+ Initialize entering_c_header to 0.
+
+2000-09-08 Stephane Carrez <Stephane.Carrez@worldnet.fr>
+
+ * config/m68hc11/m68hc11.md: New file, machine description for
+ 68HC11 & 68HC12.
+ * config/m68hc11/m68hc11.h: New file, definitions for 68HC11 & 68HC12.
+ * config/m68hc11/m68hc11.c: New file, functions for 68HC11 & 68HC12.
+ * config/m68hc11/m68hc12.h: New file, definitions for 68HC12.
+ * config/m68hc11/m68hc11-protos.h: New file.
+ * config/m68hc11/m68hc11-crt0.S: New file, startup code.
+ * config/m68hc11/t-m68hc11-gas: New file, makefile fragment.
+ * config/m68hc11/xm-m68hc11.h: New file, target defs.
+ * config/m68hc11/larith.asm: New file, libgcc routines.
+
+2000-09-08 Stephane Carrez <Stephane.Carrez@worldnet.fr>
+
+ * Makefile.in (DPBIT_FUNCS): Add _usi_to_df.
+ (FPBIT_FUNCS): Add _usi_to_sf.
+ * config/fp-bit.c (usi_to_float): New function.
+ * config/fp-bit.h (L_usi_to_sf, L_usi_to_df): Define.
+ (usi_to_float): Add appropriate #define.
+
+2000-09-08 Bernd Schmidt <bernds@redhat.co.uk>
+
+ * i386-protos.h (sse_comparison_operator, mmx_reg_operand): Declare
+ new functions.
+ * i386.c (sse_comparison_operator, mmx_reg_operand): New functions.
+ * i386.md (attr "type"): Add sse and mmx types.
+ (attr "memory"): Handle them without a crash.
+ (movsi_1, movdi_2): Allow MMX regs.
+ (movdi splits): Don't split moves involving MMX regs.
+ (setcc_4): Remove '*' from pattern name so we get a gen_setcc4.
+ (movv4sf_internal, movv4si_internal, movv8qi_internal,
+ movv4hi_internal, movv2si_internal, movv8qi, movv4hi, movv2si,
+ movv4sf, movv4si, pushv4sf, pushv4si, pushv8qi, pushv4hi, pushv2si,
+ sse_movaps, sse_movups, sse_movmskps, mmx_pmovmskb, mmx_maskmovq,
+ sse_movntv4sf, sse_movntdi, sse_movhlps, sse_movlhps, sse_movhps,
+ sse_movlps, sse_loadss, sse_movss, sse_storess, sse_shufps,
+ addv4sf3, vmaddv4sf3, subv4sf3, vmsubv4sf3, mulv4sf3, vmmulv4sf3,
+ divv4sf3, vmdivv4sf3, rcpv4sf2, vmrcpv4sf2, rsqrtv4sf2, vmrsqrtv4sf2,
+ sqrtv4sf2, vmsqrtv4sf2, sse_andti3, sse_nandti3, sse_iorti3,
+ sse_xorti3, maskcmpv4sf3, maskncmpv4sf3, vmmaskcmpv4sf3,
+ vmmaskncmpv4sf3, sse_comi, sse_ucomi, sse_unpckhps, sse_unpcklps,
+ smaxv4sf3, vmsmaxv4sf3, sminv4sf3, vmsminv4sf3, cvtpi2ps, cvtps2pi,
+ cvttps2pi, cvtsi2ss, cvtss2si, cvttss2si, addv8qi3, addv4hi3,
+ addv2si3, ssaddv8qi3, ssaddv4hi3, usaddv8qi3, usaddv4hi3, subv8qi3,
+ subv4hi3, subv2si3, sssubv8qi3, sssubv4hi3, ussubv8qi3, ussubv4hi3,
+ mulv4hi3, smulv4hi3_highpart, umulv4hi3_highpart, mmx_pmaddwd,
+ mmx_iordi3, mmx_xordi3, mmx_anddi3, mmx_nanddi3, mmx_uavgv8qi3,
+ mmx_uavgv4hi3, mmx_psadbw, mmx_pinsrw, mmx_pextrw, mmx_pshufw,
+ eqv8qi3, eqv4hi3, eqv2si3, gtv8qi3, gtv4hi3, gtv2si3, umaxv8qi3,
+ smaxv4hi3, uminv8qi3, sminv4hi3, ashrv4hi3, ashrv2si3, lshrv4hi3,
+ lshrv2si3, mmx_lshrdi3, ashlv4hi3, ashlv2si3, mmx_ashldi3,
+ mmx_packsswb, mmx_packssdw, mmx_packuswb, mmx_punpckhbw,
+ mmx_punpckhwd, mmx_punpckhdq, mmx_punpcklbw, mmx_punpcklwd,
+ mmx_punpckldq, emms, sfence, ldmxcsr, prefetch, stmxcsr, sse_clrti,
+ mmx_clrdi): New patterns.
+
+2000-09-08 Richard Earnshaw <rearnsha@arm.com>
+
+ * arm.c: Don't include tm.h directly.
+
+Fri Sep 8 14:34:56 MET DST 2000 Jan Hubicka <jh@suse.cz>
+
+ * recog.c (validate_replace_rtx_1): Fix confusion about equality
+ testing; simplify subregs of constants and nested subregs.
+
+2000-09-08 Alexandre Oliva <aoliva@redhat.com>
+
+ * config/sh/sh.md (symPLT_label2reg): Use operand3 for PIC reg.
+
+2000-09-08 Bernd Schmidt <bernds@redhat.co.uk>
+
+ * combine.c (combine_simplify_rtx): Try to simplify VEC_SELECT of a
+ VEC_CONCAT.
+ * rtl.texi (description of USE): Add note about possible pitfalls
+ with this rtx.
+ From Richard Henderson:
+ * reload1.c (choose_reload_regs): Compute need_mode properly.
+
+2000-09-07 Richard Henderson <rth@cygnus.com>
+
+ * config/ia64/lib1funcs.asm (__divsi3): Use .s1 for frcpa.
+ (__modsi3, __umodsi3): Likewise.
+ (__udivsi3): Likewise. Normalize the TFmode values.
+
+2000-09-07 Geoff Keating <geoffk@cygnus.com>
+
+ * config/rs6000/sol-c0.c (_start): Declare `termfunc' parameter
+ with a prototype.
+ * config/rs6000/rs6000.h (RS6000_ARG_SIZE): Use cast to suppress
+ warning.
+
+Fri Sep 8 03:26:38 2000 J"orn Rennecke <amylaar@redhat.co.uk>
+
+ * sh.md (cmpeqsi_ior_t, cmpeqsi_and_t): Remove.
+ (cmpeqdi_t): Add output pattern.
+ (cmpeqdi_t+1): Don't split when not optimizing.
+ Restore proper splitting operation.
+
+2000-09-07 Richard Henderson <rth@cygnus.com>
+
+ * c-lex.c (process_directive): If not HANDLE_GENERIC_PRAGMAS,
+ do not call dispatch_pragma.
+
+2000-09-07 Jim Wilson <wilson@cygnus.com>
+
+ * reload.c (push_reload): Use CLASS_CANNOT_CHANGE_MODE_P in addition
+ to CLASS_CANNOT_CHANGE_MODE.
+ * config/ia64/ia64.h (CLASS_CANNOT_CHANGE_MODE_P): True only if the
+ mode classes are different.
+
+2000-09-07 Zack Weinberg <zack@wolery.cumb.org>
+
+ * cpplib.h (struct cpp_options): Add user_label_prefix member,
+ left out of commit which removed cppulp.c.
+
+2000-09-07 Richard Henderson <rth@cygnus.com>
+
+ * bb-reorder.c (fixup_reorder_chain): Add jump in new block
+ after switch for CASE_DROPS_THROUGH.
+
+2000-09-07 Richard Henderson <rth@cygnus.com>
+
+ * loop.c (strength_reduce): Call check_ext_dependant_givs.
+ Properly extend the biv initial value for the giv.
+ (record_biv): Zero ext_dependant.
+ (record_giv): New argument ext_val. Update all callers.
+ (general_induction_var): Likewise.
+ (consec_sets_giv): Likewise.
+ (simplify_giv_expr): Likewise. Fill in ext_val if we find
+ a sign-extend, zero-extend, or truncate.
+ (combine_givs_p): Make sure modes are compatible.
+ (check_ext_dependant_givs): New.
+ (extend_value_for_giv): New.
+ * loop.h (struct induction): Add ext_dependant.
+ * unroll.c (iteration_info): Extend the biv initial value for the giv.
+ (find_splittable_givs): Likewise.
+ (final_giv_value): Likewise.
+
+2000-09-07 Zack Weinberg <zack@wolery.cumb.org>
+
+ * c-pragma.h: Define HANDLE_GENERIC_PRAGMAS if
+ REGISTER_TARGET_PRAGMAS is defined. Duplicate some
+ definitions from cpplib.h.
+ * cpplib.h: Don't typedef struct cpp_reader if c-pragma.h has
+ already done it.
+ * tm.texi: Document HANDLE_PRAGMA as no longer supported. Add
+ documentation for REGISTER_TARGET_PRAGMAS.
+
+ * c-lex.c: Include cpplib.h before c-pragma.h. Define a
+ default-pragma callback to implement -Wunknown-pragmas if
+ USE_CPPLIB.
+ * c-parse.in: Move all includes to top of file.
+ * c-pragma.c: Include cpplib.h before c-pragma.h. Include
+ tm_p.h.
+ (dispatch_pragma): Put the namespace in the -Wunknown-pragmas
+ warning.
+ (init_pragma): If REGISTER_TARGET_PRAGMAS is defined, call it.
+
+ * arm.h, arm-protos.h, arm.c,
+ c4x.h, c4x-protos.h, c4x.c,
+ h8300.h, h8300-protos.h, h8300.c,
+ i370.h, i370-protos.h, i370.c,
+ i960.h, i960-protos.h, i960.c,
+ sh.h, sh-protos.h, sh.c,
+ v850.h, v850-protos.h, v850.c: Convert HANDLE_PRAGMA-based
+ pragmata scheme to use REGISTER_TARGET_PRAGMAS instead.
+
+ * d30v.h: Don't mention HANDLE_PRAGMA in comment. Add
+ multiple include guard.
+ * i370.md (untyped_call): Use GEN_CALL.
+ (umodsi3): Remove unused variable.
+ * sh/elf.h: Don't undef HANDLE_SYSV_PRAGMA.
+ * v850.c (output_move_single, output_move_double): Constify
+ return value.
+ (print_operand): Constify a char *.
+ * v850.h (struct small_memory_info): Constify name member.
+
+2000-09-07 Kazu Hirata <kazu@hxi.com>
+
+ * config/h8300.h: Fix comment typos.
+ * config/h8300/h8300.md: Likewise.
+ * config/h8300/lib1funcs.asm: Likewise.
+
+Thu 07-Sep-2000 21:29:00 BST Neil Booth <NeilB@earthling.net>
+
+ * Makefile.in: Remove references to cppulp.{c,o}.
+ * cppinit.c (initialize_builtins, cpp_start_read,
+ cpp_handle_option): Update to use cpp_options structure.
+ * cppulp.c: Remove.
+
2000-09-07 Joseph S. Myers <jsm28@cam.ac.uk>
* c-common.c (time_char_table): Allow %#b and %#h.
@@ -12,9 +762,9 @@
2000-09-07 Catherine Moore <clm@redhat.com>
- * unroll.c (unroll_loop): Check for unconditional jumps
- to loop continuation. Delete if n_iterations is 1.
- (ujump_to_loop_cont): New routine.
+ * unroll.c (unroll_loop): Check for unconditional jumps
+ to loop continuation. Delete if n_iterations is 1.
+ (ujump_to_loop_cont): New routine.
2000-09-07 Bernd Schmidt <bernds@redhat.co.uk>
@@ -23,7 +773,7 @@
* reload.c (regno_clobbered_p): Accept new arg, MODE, and use it
to handle multiword modes correctly. All callers and the declaration
changed.
-
+
2000-09-06 Mark Mitchell <mark@codesourcery.com>
* c-common.h (prep_stmt): Declare.
@@ -32,7 +782,7 @@
* c-semantics.c (lang_expand_stmt): Define.
(prep_stmt): New function.
(expand_stmt): Handle common statement types here.
-
+
2000-09-07 Niibe Yutaka <gniibe@m17n.org>, Kaz Kojima <kkojima@rr.iij4u.or.jp>, Alexandre Oliva <aoliva@redhat.com>
* configure.in (sh-*-linux*): Added.
@@ -99,7 +849,7 @@
2000-09-06 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
- * flow.c (insn_dead_p): Detect dead memory stores with auto increments.
+ * flow.c (insn_dead_p): Detect dead memory stores with auto increments.
2000-09-06 Kazu Hirata <kazu@hxi.com>
@@ -107,7 +857,7 @@
2000-09-06 Graham Stott <grahams@cygnus.co.uk>
- * config/i386/i386.h (ADDRESS_COST): Fix typo.
+ * config/i386/i386.h (ADDRESS_COST): Fix typo.
2000-09-06 Zack Weinberg <zack@wolery.cumb.org>
diff --git a/gcc/INSTALL b/gcc/INSTALL
index 34eee22e0c3..b3b91f1269c 100644
--- a/gcc/INSTALL
+++ b/gcc/INSTALL
@@ -246,19 +246,16 @@ and includes all the necessary compilation tools and libraries.
`--disable-nls'
The `--enable-nls' option enables Native Language Support
(NLS), which lets GCC output diagnostics in languages other
- than American English. No translations are available yet, so
- the main users of this option now are those translating GCC's
- diagnostics who want to test their work. Once translations
- become available, Native Language Support will become enabled
- by default. The `--disable-nls' option disables NLS.
+ than American English. Native Language Support is enabled by
+ default if not doing a canadian cross build. The
+ `--disable-nls' option disables NLS.
`--with-included-gettext'
- If NLS is enabled, the GCC build procedure normally attempts
- to use the host's `gettext' libraries, and falls back on
- GCC's copy of the GNU `gettext' library only if the host
- libraries do not suffice. The `--with-included-gettext'
- option causes the build procedure to prefer its copy of GNU
- `gettext'.
+ If NLS is enbled, the `--with-included-gettext' option causes
+ the build procedure to prefer its copy of GNU `gettext'. This
+ is the default. If you want the GCC build procedure to prefer
+ the host's `gettext' libraries, use
+ `--without-included-gettext'.
`--with-catgets'
If NLS is enabled, and if the host lacks `gettext' but has the
@@ -267,6 +264,15 @@ and includes all the necessary compilation tools and libraries.
`gettext' library. The `--with-catgets' option causes the
build procedure to use the host's `catgets' in this situation.
+ `--enable-maintainer-mode'
+ The build rules that regenerate the GCC master message catalog
+ `gcc.pot' are normally disabled. This is because it can only
+ be rebuilt if the complete source tree is present. If you
+ have changed the sources and want to rebuild the catalog,
+ configuring with `--enable-maintainer-mode' will enable this.
+ Note that you need a special version of the `gettext' tools
+ to do so.
+
`--enable-win32-registry'
`--enable-win32-registry=KEY'
`--disable-win32-registry'
@@ -338,16 +344,17 @@ and includes all the necessary compilation tools and libraries.
`LANGUAGES=c' specifies that only the C compiler should be
compiled. The makefile normally builds compilers for all the
- supported languages; currently, C, C++ and Objective C. However,
- C is the only language that is sure to work when you build with
- other non-GNU C compilers. In addition, building anything but C
- at this stage is a waste of time.
+ supported languages; currently, C, C++, Objective C, Java,
+ FORTRAN, and CHILL. However, C is the only language that is sure
+ to work when you build with other non-GNU C compilers. In
+ addition, building anything but C at this stage is a waste of time.
In general, you can specify the languages to build by typing the
argument `LANGUAGES="LIST"', where LIST is one or more words from
- the list `c', `c++', and `objective-c'. If you have any
- additional GNU compilers as subdirectories of the GNU CC source
- directory, you may also specify their names in this list.
+ the list `c', `c++', `objective-c', `java', `f77', and `CHILL'.
+ If you have any additional GNU compilers as subdirectories of the
+ GNU CC source directory, you may also specify their names in this
+ list.
Ignore any warnings you may see about "statement not reached" in
`insn-emit.c'; they are normal. Also, warnings about "unknown
@@ -654,11 +661,11 @@ is equivalent to `vax-dec-ultrix4.2'.
386bsd, aix, acis, amigaos, aos, aout, aux, bosx, bsd, clix, coff,
ctix, cxux, dgux, dynix, ebmon, ecoff, elf, esix, freebsd, hms,
- genix, gnu, linux-gnu, hiux, hpux, iris, irix, isc, luna, lynxos,
- mach, minix, msdos, mvs, netbsd, newsos, nindy, ns, osf, osfrose,
- ptx, riscix, riscos, rtu, sco, sim, solaris, sunos, sym, sysv,
- udi, ultrix, unicos, uniplus, unos, vms, vsta, vxworks, winnt,
- xenix.
+ genix, gnu, linux, linux-gnu, hiux, hpux, iris, irix, isc, luna,
+ lynxos, mach, minix, msdos, mvs, netbsd, newsos, nindy, ns, osf,
+ osfrose, ptx, riscix, riscos, rtu, sco, sim, solaris, sunos, sym,
+ sysv, udi, ultrix, unicos, uniplus, unos, vms, vsta, vxworks,
+ winnt, xenix.
You can omit the system type; then `configure' guesses the operating
system from the CPU and company.
@@ -668,6 +675,12 @@ make a difference. For example, you can write `bsd4.3' or `bsd4.4' to
distinguish versions of BSD. In practice, the version number is most
needed for `sysv3' and `sysv4', which are often treated differently.
+ `linux-gnu' is the canonical name for the GNU/Linux target; however
+GNU CC will also accept `linux'. The version of the kernel in use is
+not relevant on these systems. A suffix such as `libc1' or `aout'
+distinguishes major versions of the C library; all of the suffixed
+versions are obsolete.
+
If you specify an impossible combination such as `i860-dg-vms', then
you may get an error message from `configure', or it may ignore part of
the information and do the best it can with the rest. `configure'
@@ -804,13 +817,14 @@ special things you must know:
`arm-*-elf'
This configuration is intended for embedded systems.
-`arm-*-linux-gnuaout'
+`arm-*-linux*aout'
Any of the ARM-family processors running the Linux-based GNU
system with the `a.out' binary format. This is an obsolete
configuration.
+`arm-*-linux'
`arm-*-linux-gnu'
-`arm-*-linux-gnuoldld'
+`arm-*-linux*oldld'
Any of the ARM-family processors running the Linux-based GNU
system with the `ELF' binary format. You must use version
2.9.1.0.22 or later of the GNU/Linux binutils, which you can
@@ -922,16 +936,17 @@ special things you must know:
This port is very preliminary and has many known bugs. We hope to
have a higher-quality port for this machine soon.
-`i386-*-linux-gnuoldld'
+`i386-*-linux*oldld'
Use this configuration to generate `a.out' binaries on Linux-based
GNU systems if you do not have gas/binutils version 2.5.2 or later
installed. This is an obsolete configuration.
-`i386-*-linux-gnuaout'
+`i386-*-linux*aout'
Use this configuration to generate `a.out' binaries on Linux-based
GNU systems. This configuration is being superseded. You must use
gas/binutils version 2.5.2 or later.
+`i386-*-linux'
`i386-*-linux-gnu'
Use this configuration to generate ELF binaries on Linux-based GNU
systems. You must use gas/binutils version 2.5.2 or later.
@@ -1296,21 +1311,6 @@ special things you must know:
and use the `--with-gnu-as' configure option when configuring gcc.
GNU as is distributed as part of the binutils package.
- Under Irix 6, if you are using Irix `cc' as your bootstrap
- compiler, you must ensure that the N32 ABI is in use. To test
- this, compile a simple C file with `cc' and then run `file'
- on the resulting object file. The output should look like:
-
- test.o: ELF N32 MSB ...
-
- If you see:
-
- test.o: ELF 32-bit MSB
-
- then your version of `cc' uses the O32 ABI default. You should
- set the environment variable `CC' to `cc -n32' before configuring
- GCC.
-
`mips-sony-sysv'
Sony MIPS NEWS. This works in NEWSOS 5.0.1, but not in 5.0.2
(which uses ELF instead of COFF). Support for 5.0.2 will probably
@@ -1401,6 +1401,7 @@ special things you must know:
You can specify a default version for the `-mcpu='CPU_TYPE switch
by using the configure option `--with-cpu-'CPU_TYPE.
+`powerpc-*-linux'
`powerpc-*-linux-gnu'
PowerPC system in big endian mode, running the Linux-based GNU
system.
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 62f399aeaeb..52a6dfc415b 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -753,12 +753,12 @@ LIB2FUNCS_EH = _eh
FPBIT_FUNCS = _pack_sf _unpack_sf _addsub_sf _mul_sf _div_sf \
_fpcmp_parts_sf _compare_sf _eq_sf _ne_sf _gt_sf _ge_sf \
_lt_sf _le_sf _unord_sf _si_to_sf _sf_to_si _negate_sf _make_sf \
- _sf_to_df _thenan_sf _sf_to_usi
+ _sf_to_df _thenan_sf _sf_to_usi _usi_to_sf
DPBIT_FUNCS = _pack_df _unpack_df _addsub_df _mul_df _div_df \
_fpcmp_parts_df _compare_df _eq_df _ne_df _gt_df _ge_df \
_lt_df _le_df _unord_df _si_to_df _df_to_si _negate_df _make_df \
- _df_to_sf _thenan_df _df_to_usi
+ _df_to_sf _thenan_df _df_to_usi _usi_to_df
# The files that "belong" in CONFIG_H are deliberately omitted
# because having them there would not be useful in actual practice.
@@ -1228,7 +1228,7 @@ prefix.o: prefix.c $(CONFIG_H) system.h Makefile prefix.h
convert.o: convert.c $(CONFIG_H) system.h $(TREE_H) flags.h convert.h toplev.h
tree.o : tree.c $(CONFIG_H) system.h $(TREE_H) flags.h function.h toplev.h \
- $(GGC_H) $(HASHTAB_H) output.h
+ $(GGC_H) $(HASHTAB_H) output.h defaults.h
print-tree.o : print-tree.c $(CONFIG_H) system.h $(TREE_H) $(GGC_H)
stor-layout.o : stor-layout.c $(CONFIG_H) system.h $(TREE_H) flags.h \
function.h $(EXPR_H) $(RTL_H) toplev.h $(GGC_H)
@@ -1282,7 +1282,7 @@ explow.o : explow.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h \
insn-codes.h toplev.h function.h
optabs.o : optabs.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h \
insn-flags.h insn-config.h insn-codes.h $(EXPR_H) $(RECOG_H) reload.h \
- toplev.h $(GGC_H) real.h
+ toplev.h $(GGC_H) real.h defaults.h
dbxout.o : dbxout.c $(CONFIG_H) system.h $(TREE_H) $(RTL_H) flags.h $(REGS_H) \
insn-config.h reload.h gstab.h xcoffout.h defaults.h output.h dbxout.h \
toplev.h
@@ -1301,7 +1301,7 @@ xcoffout.o : xcoffout.c $(CONFIG_H) system.h $(TREE_H) $(RTL_H) xcoffout.h \
emit-rtl.o : emit-rtl.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h \
function.h $(REGS_H) insn-config.h $(RECOG_H) real.h $(GGC_H) \
$(EXPR_H) $(srcdir)/../include/obstack.h hard-reg-set.h bitmap.h toplev.h \
- $(HASHTAB_H)
+ $(HASHTAB_H) defaults.h
real.o : real.c $(CONFIG_H) system.h $(TREE_H) toplev.h
integrate.o : integrate.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h \
$(INTEGRATE_H) insn-flags.h insn-config.h $(EXPR_H) real.h $(REGS_H) \
@@ -1335,7 +1335,7 @@ conflict.o : conflict.c $(CONFIG_H) system.h $(OBSTACK_H) $(HASHTAB_H) \
$(RTL_H) hard-reg-set.h $(BASIC_BLOCK_H)
profile.o : profile.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h \
insn-flags.h insn-config.h output.h $(REGS_H) $(EXPR_H) function.h \
- gcov-io.h toplev.h $(GGC_H) hard-reg-set.h $(BASIC_BLOCK_H)
+ gcov-io.h toplev.h $(GGC_H) hard-reg-set.h $(BASIC_BLOCK_H) defaults.h
loop.o : loop.c $(CONFIG_H) system.h $(RTL_H) flags.h $(LOOP_H) insn-config.h \
insn-flags.h $(REGS_H) hard-reg-set.h $(RECOG_H) $(EXPR_H) real.h \
$(BASIC_BLOCK_H) function.h toplev.h varray.h except.h cselib.h
@@ -1790,7 +1790,7 @@ PREPROCESSOR_DEFINES = \
-DTOOL_INCLUDE_DIR=\"$(gcc_tooldir)/include\"
LIBCPP_OBJS = cpplib.o cpplex.o cppmacro.o cppexp.o cppfiles.o \
- cpphash.o cpperror.o cppinit.o cppulp.o cppdefault.o \
+ cpphash.o cpperror.o cppinit.o cppdefault.o \
mkdeps.o prefix.o version.o mbchar.o @extra_cpp_objs@
LIBCPP_DEPS = cpplib.h cpphash.h intl.h system.h
@@ -1808,9 +1808,8 @@ cpp0$(exeext): cppmain.o intl.o libcpp.a $(LIBDEPS)
cppmain.o: cppmain.c $(CONFIG_H) cpplib.h intl.h system.h
-cppulp.o: cppulp.c $(CONFIG_H) system.h output.h
cpperror.o: cpperror.c $(CONFIG_H) $(LIBCPP_DEPS)
-cppexp.o: cppexp.c $(CONFIG_H) $(LIBCPP_DEPS)
+cppexp.o: cppexp.c $(CONFIG_H) $(LIBCPP_DEPS) defaults.h
cpplex.o: cpplex.c $(CONFIG_H) $(LIBCPP_DEPS)
cppmacro.o: cppmacro.c $(CONFIG_H) $(LIBCPP_DEPS)
cpplib.o: cpplib.c $(CONFIG_H) $(LIBCPP_DEPS) $(OBSTACK_H)
@@ -1833,7 +1832,7 @@ tradcpp0$(exeext): tradcpp.o tradcif.o cppdefault.o version.o intl.o $(LIBDEPS)
tradcpp.o tradcif.o cppdefault.o version.o intl.o $(LIBS)
tradcpp.o: tradcpp.c $(CONFIG_H) system.h version.h cppdefault.h
-tradcif.o: $(srcdir)/tradcif.c $(CONFIG_H) system.h
+tradcif.o: $(srcdir)/tradcif.c $(CONFIG_H) system.h defaults.h
$(srcdir)/tradcif.c: $(srcdir)/tradcif.y
cd $(srcdir); $(BISON) $(BISONFLAGS) -o tradcif.c tradcif.y
diff --git a/gcc/aclocal.m4 b/gcc/aclocal.m4
index cf53a36626c..92748f3d205 100644
--- a/gcc/aclocal.m4
+++ b/gcc/aclocal.m4
@@ -313,7 +313,7 @@ AC_DEFUN(AM_WITH_NLS,
AC_ARG_WITH(included-gettext,
[ --with-included-gettext use the GNU gettext library included here],
nls_cv_force_use_gnu_gettext=$withval,
- nls_cv_force_use_gnu_gettext=yes)
+ nls_cv_force_use_gnu_gettext=no)
AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
diff --git a/gcc/alias.c b/gcc/alias.c
index cb5a6363779..be46281dcfc 100644
--- a/gcc/alias.c
+++ b/gcc/alias.c
@@ -1131,6 +1131,9 @@ find_base_term (x)
case LABEL_REF:
return x;
+ case ADDRESSOF:
+ return REG_BASE_VALUE (frame_pointer_rtx);
+
default:
return 0;
}
@@ -1454,6 +1457,18 @@ memrefs_conflict_p (xsize, x, ysize, y, c)
return memrefs_conflict_p (xsize, x, ysize, XEXP (y, 0), c);
}
+ if (GET_CODE (x) == ADDRESSOF)
+ {
+ if (y == frame_pointer_rtx
+ || GET_CODE (y) == ADDRESSOF)
+ return xsize <= 0 || ysize <= 0;
+ }
+ if (GET_CODE (y) == ADDRESSOF)
+ {
+ if (x == frame_pointer_rtx)
+ return xsize <= 0 || ysize <= 0;
+ }
+
if (CONSTANT_P (x))
{
if (GET_CODE (x) == CONST_INT && GET_CODE (y) == CONST_INT)
diff --git a/gcc/basic-block.h b/gcc/basic-block.h
index 7e11ed5e5ec..b04352fc8ea 100644
--- a/gcc/basic-block.h
+++ b/gcc/basic-block.h
@@ -235,11 +235,13 @@ extern varray_type basic_block_for_insn;
#define BLOCK_NUM(INSN) (BLOCK_FOR_INSN (INSN)->index + 0)
extern void compute_bb_for_insn PARAMS ((int));
+extern void update_bb_for_insn PARAMS ((basic_block));
extern void set_block_for_insn PARAMS ((rtx, basic_block));
extern void set_block_num PARAMS ((rtx, int));
extern void free_basic_block_vars PARAMS ((int));
+extern edge split_block PARAMS ((basic_block, rtx));
extern basic_block split_edge PARAMS ((edge));
extern void insert_insn_on_edge PARAMS ((rtx, edge));
extern void commit_edge_insertions PARAMS ((void));
@@ -274,6 +276,12 @@ struct loop
/* Basic block of loop pre-header or NULL if it does not exist. */
basic_block pre_header;
+ /* Root node of pre_header extended basic block. */
+ basic_block pre_header_root;
+
+ /* Bitmap of blocks of trace from pre_header root to pre_header. */
+ sbitmap pre_header_trace;
+
/* The first block in the loop. This is not necessarily the same as
the loop header. */
basic_block first;
@@ -300,6 +308,9 @@ struct loop
/* Number of edges that exit the loop. */
int num_exits;
+ /* Bitmap of blocks that dominate all exits of the loop. */
+ sbitmap exits_doms;
+
/* The loop nesting depth. */
int depth;
@@ -402,7 +413,8 @@ struct loops
sbitmap shared_headers;
};
-extern int flow_loops_find PARAMS ((struct loops *));
+extern int flow_loops_find PARAMS ((struct loops *, int flags));
+extern int flow_loops_update PARAMS ((struct loops *, int flags));
extern void flow_loops_free PARAMS ((struct loops *));
extern void flow_loops_dump PARAMS ((const struct loops *, FILE *,
void (*)(const struct loop *,
@@ -466,6 +478,15 @@ enum update_life_extent
#define PROP_AUTOINC 32 /* Create autoinc mem references. */
#define PROP_FINAL 63 /* All of the above. */
+
+/* Flags for loop discovery. */
+
+#define LOOP_TREE 1 /* Build loop hierarchy tree. */
+#define LOOP_PRE_HEADER 2 /* Analyse loop pre-header. */
+#define LOOP_EDGES 4 /* Find entry and exit edges. */
+#define LOOP_EXITS_DOMS 8 /* Find nodes that dom. all exits. */
+#define LOOP_ALL 15 /* All of the above */
+
extern void life_analysis PARAMS ((rtx, FILE *, int));
extern void update_life_info PARAMS ((sbitmap, enum update_life_extent,
int));
diff --git a/gcc/bb-reorder.c b/gcc/bb-reorder.c
index bd23e129e25..c6b996edc74 100644
--- a/gcc/bb-reorder.c
+++ b/gcc/bb-reorder.c
@@ -549,7 +549,7 @@ fixup_reorder_chain ()
for (bb = BASIC_BLOCK (0); bb ; bb = RBI (bb)->next)
{
edge e_fall, e_taken, e;
- rtx jump_insn, barrier_insn;
+ rtx jump_insn, barrier_insn, bb_end_insn;
basic_block nb;
if (bb->succ == NULL)
@@ -564,9 +564,10 @@ fixup_reorder_chain ()
else if (! (e->flags & EDGE_EH))
e_taken = e;
- if (GET_CODE (bb->end) == JUMP_INSN)
+ bb_end_insn = bb->end;
+ if (GET_CODE (bb_end_insn) == JUMP_INSN)
{
- if (any_uncondjump_p (bb->end))
+ if (any_uncondjump_p (bb_end_insn))
{
/* If the destination is still not next, nothing to do. */
if (RBI (bb)->index + 1 != RBI (e_taken->dest)->index)
@@ -582,7 +583,7 @@ fixup_reorder_chain ()
bb->index, RBI (bb)->index);
continue;
}
- else if (any_condjump_p (bb->end))
+ else if (any_condjump_p (bb_end_insn))
{
/* If the old fallthru is still next, nothing to do. */
if (RBI (bb)->index + 1 == RBI (e_fall->dest)->index
@@ -596,10 +597,11 @@ fixup_reorder_chain ()
edge based on known or assumed probability. */
if (RBI (bb)->index + 1 != RBI (e_taken->dest)->index)
{
- rtx note = find_reg_note (bb->end, REG_BR_PROB, 0);
+ rtx note = find_reg_note (bb_end_insn, REG_BR_PROB, 0);
if (note
&& INTVAL (XEXP (note, 0)) < REG_BR_PROB_BASE / 2
- && invert_jump (bb->end, label_for_bb (e_fall->dest), 0))
+ && invert_jump (bb_end_insn,
+ label_for_bb (e_fall->dest), 0))
{
e_fall->flags &= ~EDGE_FALLTHRU;
e_taken->flags |= EDGE_FALLTHRU;
@@ -609,14 +611,15 @@ fixup_reorder_chain ()
/* Otherwise we can try to invert the jump. This will
basically never fail, however, keep up the pretense. */
- else if (invert_jump (bb->end, label_for_bb (e_fall->dest), 0))
+ else if (invert_jump (bb_end_insn,
+ label_for_bb (e_fall->dest), 0))
{
e_fall->flags &= ~EDGE_FALLTHRU;
e_taken->flags |= EDGE_FALLTHRU;
continue;
}
}
- else if (returnjump_p (bb->end))
+ else if (returnjump_p (bb_end_insn))
continue;
else
{
@@ -629,8 +632,10 @@ fixup_reorder_chain ()
tablejump, the fallthru block should not have moved. */
if (RBI (bb)->index + 1 == RBI (e_fall->dest)->index)
continue;
-#endif
+ bb_end_insn = skip_insns_after_block (bb);
+#else
abort ();
+#endif
}
}
else
@@ -653,7 +658,7 @@ fixup_reorder_chain ()
{
e_fall->flags &= ~EDGE_FALLTHRU;
- jump_insn = emit_jump_to_block_after (e_fall->dest, bb->end);
+ jump_insn = emit_jump_to_block_after (e_fall->dest, bb_end_insn);
bb->end = jump_insn;
barrier_insn = emit_barrier_after (jump_insn);
RBI (bb)->eff_end = barrier_insn;
@@ -664,7 +669,7 @@ fixup_reorder_chain ()
/* We got here if we need to add a new jump insn in a new block
across the edge e_fall. */
- jump_insn = emit_jump_to_block_after (e_fall->dest, bb->end);
+ jump_insn = emit_jump_to_block_after (e_fall->dest, bb_end_insn);
barrier_insn = emit_barrier_after (jump_insn);
VARRAY_GROW (basic_block_info, ++n_basic_blocks);
diff --git a/gcc/builtins.c b/gcc/builtins.c
index cadf591970e..4e22f6ac812 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -67,6 +67,15 @@ const char *const built_in_names[(int) END_BUILTINS] =
};
#undef DEF_BUILTIN
+/* Setup an array of _DECL trees, make sure each element is
+ initialized to NULL_TREE. */
+#define DEF_BUILTIN(x) NULL_TREE,
+tree built_in_decls[(int) END_BUILTINS] =
+{
+#include "builtins.def"
+};
+#undef DEF_BUILTIN
+
tree (*lang_type_promotes_to) PARAMS ((tree));
static int get_pointer_alignment PARAMS ((tree, unsigned));
@@ -102,6 +111,7 @@ static rtx expand_builtin_strlen PARAMS ((tree, rtx,
static rtx expand_builtin_alloca PARAMS ((tree, rtx));
static rtx expand_builtin_ffs PARAMS ((tree, rtx, rtx));
static rtx expand_builtin_frame_address PARAMS ((tree));
+static rtx expand_builtin_fputs PARAMS ((tree, int));
static tree stabilize_va_list PARAMS ((tree, int));
static rtx expand_builtin_expect PARAMS ((tree, rtx));
static rtx bounded_ptr_dest PARAMS ((tree, rtx, rtx));
@@ -2432,6 +2442,56 @@ expand_builtin_ffs (arglist, target, subtarget)
return target;
}
+/* If the string passed to fputs is a constant and is one character
+ long, we attempt to transform this call into __builtin_fputc(). */
+static rtx
+expand_builtin_fputs (arglist, ignore)
+ tree arglist;
+ int ignore;
+{
+ tree call_expr, len, stripped_string, newarglist;
+ tree fn = built_in_decls[BUILT_IN_FPUTC];
+
+ /* If the return value is used, or the replacement _DECL isn't
+ initialized, don't do the transformation. */
+ if (!ignore || !fn)
+ return 0;
+
+ /* Verify the arguments in the original call. */
+ if (arglist == 0
+ || (TREE_CODE (TREE_TYPE (TREE_VALUE (arglist))) != POINTER_TYPE)
+ || TREE_CHAIN (arglist) == 0
+ || (TREE_CODE (TREE_TYPE (TREE_VALUE (TREE_CHAIN (arglist))))
+ != POINTER_TYPE))
+ return 0;
+
+ /* Get the length of the string passed to fputs. */
+ len = c_strlen (TREE_VALUE (arglist));
+
+ /* If the length != 1, punt. */
+ if (len == 0 || compare_tree_int (len, 1))
+ return 0;
+
+ stripped_string = TREE_VALUE (arglist);
+ STRIP_NOPS (stripped_string);
+ if (stripped_string && TREE_CODE (stripped_string) == ADDR_EXPR)
+ stripped_string = TREE_OPERAND (stripped_string, 0);
+
+ /* New argument list transforming fputs(string, stream) to
+ fputc(string[0], stream). */
+ newarglist = build_tree_list (NULL_TREE, TREE_VALUE (TREE_CHAIN (arglist)));
+ newarglist =
+ tree_cons (NULL_TREE,
+ build_int_2 (TREE_STRING_POINTER (stripped_string)[0], 0),
+ newarglist);
+
+ call_expr = build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (fn)), fn);
+ call_expr = build (CALL_EXPR, TREE_TYPE (TREE_TYPE (fn)),
+ call_expr, newarglist, NULL_TREE);
+ TREE_SIDE_EFFECTS (call_expr) = 1;
+ return expand_expr (call_expr, NULL_RTX, VOIDmode, 0);
+}
+
/* Expand a call to __builtin_expect. We return our argument and
emit a NOTE_INSN_EXPECTED_VALUE note. */
@@ -2505,7 +2565,8 @@ expand_builtin (exp, target, subtarget, mode, ignore)
|| fcode == BUILT_IN_MEMCPY || fcode == BUILT_IN_MEMCMP
|| fcode == BUILT_IN_BCMP || fcode == BUILT_IN_BZERO
|| fcode == BUILT_IN_STRLEN || fcode == BUILT_IN_STRCPY
- || fcode == BUILT_IN_STRCMP || fcode == BUILT_IN_FFS))
+ || fcode == BUILT_IN_STRCMP || fcode == BUILT_IN_FFS
+ || fcode == BUILT_IN_FPUTC || fcode == BUILT_IN_FPUTS))
return expand_call (exp, target, ignore);
switch (fcode)
@@ -2728,6 +2789,15 @@ expand_builtin (exp, target, subtarget, mode, ignore)
emit_barrier ();
return const0_rtx;
+ case BUILT_IN_FPUTC:
+ break;
+
+ case BUILT_IN_FPUTS:
+ target = expand_builtin_fputs (arglist, ignore);
+ if (target)
+ return target;
+ break;
+
/* Various hooks for the DWARF 2 __throw routine. */
case BUILT_IN_UNWIND_INIT:
expand_builtin_unwind_init ();
diff --git a/gcc/builtins.def b/gcc/builtins.def
index 308257fa859..40ae59c3d73 100644
--- a/gcc/builtins.def
+++ b/gcc/builtins.def
@@ -58,6 +58,10 @@ DEF_BUILTIN(BUILT_IN_SETJMP)
DEF_BUILTIN(BUILT_IN_LONGJMP)
DEF_BUILTIN(BUILT_IN_TRAP)
+ /* Stdio builtins. */
+DEF_BUILTIN(BUILT_IN_FPUTC)
+DEF_BUILTIN(BUILT_IN_FPUTS)
+
/* ISO C99 floating point unordered comparisons. */
DEF_BUILTIN(BUILT_IN_ISGREATER)
DEF_BUILTIN(BUILT_IN_ISGREATEREQUAL)
diff --git a/gcc/c-common.c b/gcc/c-common.c
index 3f9f047e5c2..6ccc1251501 100644
--- a/gcc/c-common.c
+++ b/gcc/c-common.c
@@ -2856,6 +2856,18 @@ check_case_value (value)
/* Strip NON_LVALUE_EXPRs since we aren't using as an lvalue. */
STRIP_TYPE_NOPS (value);
+ /* In C++, the following is allowed:
+
+ const int i = 3;
+ switch (...) { case i: ... }
+
+ So, we try to reduce the VALUE to a constant that way. */
+ if (c_language == clk_cplusplus)
+ {
+ value = decl_constant_value (value);
+ STRIP_TYPE_NOPS (value);
+ value = fold (value);
+ }
if (TREE_CODE (value) != INTEGER_CST
&& value != error_mark_node)
@@ -4321,6 +4333,17 @@ c_common_nodes_and_builtins (cplus_mode, no_builtins, no_nonansi_builtins)
BUILT_IN_COS, BUILT_IN_NORMAL, "cos");
builtin_function ("__builtin_cosl", ldouble_ftype_ldouble,
BUILT_IN_COS, BUILT_IN_NORMAL, "cosl");
+ /* We declare these without argument so that the initial declaration
+ for these identifiers is a builtin. That allows us to redeclare
+ them later with argument without worrying about the explicit
+ declarations in stdio.h being taken as the initial declaration.
+ Also, save the _DECL for these so we can use them later. */
+ built_in_decls[BUILT_IN_FPUTC] =
+ builtin_function ("__builtin_fputc", int_ftype_any,
+ BUILT_IN_FPUTC, BUILT_IN_NORMAL, "fputc");
+ built_in_decls[BUILT_IN_FPUTS] =
+ builtin_function ("__builtin_fputs", int_ftype_any,
+ BUILT_IN_FPUTS, BUILT_IN_NORMAL, "fputs");
if (! no_builtins)
{
@@ -4364,6 +4387,15 @@ c_common_nodes_and_builtins (cplus_mode, no_builtins, no_nonansi_builtins)
BUILT_IN_NORMAL, NULL_PTR);
builtin_function ("cosl", ldouble_ftype_ldouble, BUILT_IN_COS,
BUILT_IN_NORMAL, NULL_PTR);
+ /* We declare these without argument so that the initial
+ declaration for these identifiers is a builtin. That allows
+ us to redeclare them later with argument without worrying
+ about the explicit declarations in stdio.h being taken as the
+ initial declaration. */
+ builtin_function ("fputc", int_ftype_any, BUILT_IN_FPUTC,
+ BUILT_IN_NORMAL, NULL_PTR);
+ builtin_function ("fputs", int_ftype_any, BUILT_IN_FPUTS,
+ BUILT_IN_NORMAL, NULL_PTR);
/* Declare these functions volatile
to avoid spurious "control drops through" warnings. */
diff --git a/gcc/c-common.def b/gcc/c-common.def
index 3486a4c1d88..b262dd76385 100644
--- a/gcc/c-common.def
+++ b/gcc/c-common.def
@@ -95,8 +95,8 @@ DEFTREECODE (SCOPE_STMT, "scope_stmt", 'e', 1)
/* Used to represent a CASE_LABEL. The operands are CASE_LOW and
CASE_HIGH, respectively. If CASE_LOW is NULL_TREE, the label is a
'default' label. If CASE_HIGH is NULL_TREE, the label is a normal case
- label. */
-DEFTREECODE (CASE_LABEL, "case_label", 'e', 2)
+ label. The CASE_LABEL_DECL is a LABEL_DECL for this node. */
+DEFTREECODE (CASE_LABEL, "case_label", 'e', 3)
/* A STMT_EXPR represents a statement-expression. The
STMT_EXPR_STMT is the statement given by the expression. */
diff --git a/gcc/c-common.h b/gcc/c-common.h
index ff6d53ed8f4..8dca0d3ae10 100644
--- a/gcc/c-common.h
+++ b/gcc/c-common.h
@@ -256,7 +256,7 @@ typedef tree (*walk_tree_fn) PARAMS ((tree *,
extern stmt_tree current_stmt_tree PARAMS ((void));
extern void begin_stmt_tree PARAMS ((tree *));
-extern void add_stmt PARAMS ((tree));
+extern tree add_stmt PARAMS ((tree));
extern void finish_stmt_tree PARAMS ((tree *));
extern int statement_code_p PARAMS ((enum tree_code));
@@ -268,6 +268,18 @@ extern void prep_stmt PARAMS ((tree));
extern void (*lang_expand_stmt) PARAMS ((tree));
extern void expand_stmt PARAMS ((tree));
+/* LAST_TREE contains the last statement parsed. These are chained
+ together through the TREE_CHAIN field, but often need to be
+ re-organized since the parse is performed bottom-up. This macro
+ makes LAST_TREE the indicated SUBSTMT of STMT. */
+
+#define RECHAIN_STMTS(stmt, substmt) \
+ do { \
+ substmt = TREE_CHAIN (stmt); \
+ TREE_CHAIN (stmt) = NULL_TREE; \
+ last_tree = stmt; \
+ } while (0)
+
/* The variant of the C language being processed. Each C language
front-end defines this variable. */
@@ -457,6 +469,7 @@ extern tree simple_type_promotes_to PARAMS ((tree));
of a case label, respectively. */
#define CASE_LOW(NODE) TREE_OPERAND (CASE_LABEL_CHECK (NODE), 0)
#define CASE_HIGH(NODE) TREE_OPERAND (CASE_LABEL_CHECK (NODE), 1)
+#define CASE_LABEL_DECL(NODE) TREE_OPERAND (CASE_LABEL_CHECK (NODE), 2)
/* GOTO_STMT accessor. This gives access to the label associated with
a goto statement. */
@@ -557,7 +570,6 @@ enum c_tree_code {
extern void add_c_tree_codes PARAMS ((void));
extern void genrtl_do_pushlevel PARAMS ((void));
-extern void genrtl_clear_out_block PARAMS ((void));
extern void genrtl_goto_stmt PARAMS ((tree));
extern void genrtl_expr_stmt PARAMS ((tree));
extern void genrtl_decl_stmt PARAMS ((tree));
@@ -570,7 +582,7 @@ extern void genrtl_break_stmt PARAMS ((void));
extern void genrtl_continue_stmt PARAMS ((void));
extern void genrtl_scope_stmt PARAMS ((tree));
extern void genrtl_switch_stmt PARAMS ((tree));
-extern void genrtl_case_label PARAMS ((tree, tree));
+extern void genrtl_case_label PARAMS ((tree));
extern void genrtl_compound_stmt PARAMS ((tree));
extern void genrtl_asm_stmt PARAMS ((tree, tree,
tree, tree,
@@ -589,10 +601,9 @@ extern void emit_local_var PARAMS ((tree));
extern void make_rtl_for_local_static PARAMS ((tree));
extern tree expand_cond PARAMS ((tree));
extern void c_expand_return PARAMS ((tree));
-extern tree c_expand_start_case PARAMS ((tree));
extern void do_case PARAMS ((tree, tree));
extern tree build_stmt PARAMS ((enum tree_code, ...));
-extern tree build_case_label PARAMS ((tree, tree));
+extern tree build_case_label PARAMS ((tree, tree, tree));
extern tree build_continue_stmt PARAMS ((void));
extern tree build_break_stmt PARAMS ((void));
extern tree build_return_stmt PARAMS ((tree));
@@ -620,6 +631,8 @@ extern tree common_type PARAMS ((tree, tree));
extern tree expand_tree_builtin PARAMS ((tree, tree, tree));
+extern tree decl_constant_value PARAMS ((tree));
+
/* Hook currently used only by the C++ front end to reset internal state
after entering or leaving a header file. */
extern void extract_interface_info PARAMS ((void));
diff --git a/gcc/c-decl.c b/gcc/c-decl.c
index 32753389c53..7113a13d8a8 100644
--- a/gcc/c-decl.c
+++ b/gcc/c-decl.c
@@ -7100,7 +7100,7 @@ do_case (low_value, high_value)
error_with_decl (duplicate, "this is the first default label");
}
else
- error ("dupicate case value");
+ error ("duplicate case value");
if (high_value != NULL_TREE)
error_with_decl (duplicate,
"this is the first entry for that value");
diff --git a/gcc/c-lex.c b/gcc/c-lex.c
index 84ef09499bc..f9c5cb432f9 100644
--- a/gcc/c-lex.c
+++ b/gcc/c-lex.c
@@ -30,6 +30,7 @@ Boston, MA 02111-1307, USA. */
#include "c-tree.h"
#include "flags.h"
#include "timevar.h"
+#include "cpplib.h"
#include "c-pragma.h"
#include "toplev.h"
#include "intl.h"
@@ -52,8 +53,6 @@ Boston, MA 02111-1307, USA. */
#define GET_ENVIRONMENT(ENV_VALUE,ENV_NAME) ((ENV_VALUE) = getenv (ENV_NAME))
#endif
-#include "cpplib.h"
-
#if USE_CPPLIB
extern cpp_reader parse_in;
#else
@@ -162,6 +161,7 @@ static void cb_ident PARAMS ((cpp_reader *, const unsigned char *,
static void cb_enter_file PARAMS ((cpp_reader *));
static void cb_leave_file PARAMS ((cpp_reader *));
static void cb_rename_file PARAMS ((cpp_reader *));
+static void cb_def_pragma PARAMS ((cpp_reader *));
#endif
@@ -210,6 +210,7 @@ init_c_lex (filename)
parse_in.cb.enter_file = cb_enter_file;
parse_in.cb.leave_file = cb_leave_file;
parse_in.cb.rename_file = cb_rename_file;
+ parse_in.cb.def_pragma = cb_def_pragma;
/* Make sure parse_in.digraphs matches flag_digraphs. */
CPP_OPTION (&parse_in, digraphs) = flag_digraphs;
@@ -437,7 +438,7 @@ process_directive ()
int action_number, l;
char *new_file;
#ifndef NO_IMPLICIT_EXTERN_C
- int entering_c_header;
+ int entering_c_header = 0;
#endif
/* Don't read beyond this line. */
@@ -458,17 +459,6 @@ process_directive ()
{
dispatch_pragma ();
goto skipline;
-
-#if 0
-#ifdef HANDLE_PRAGMA
- /* We invoke HANDLE_PRAGMA before HANDLE_GENERIC_PRAGMAS
- (if both are defined), in order to give the back
- end a chance to override the interpretation of
- SYSV style pragmas. */
- if (HANDLE_PRAGMA (getch, put_back, IDENTIFIER_POINTER (value)))
- goto skipline;
-#endif /* HANDLE_PRAGMA */
-#endif
}
else if (!strcmp (name, "define"))
{
@@ -777,6 +767,27 @@ cb_rename_file (pfile)
/* Hook for C++. */
extract_interface_info ();
}
+
+static void
+cb_def_pragma (pfile)
+ cpp_reader *pfile;
+{
+ /* Issue a warning message if we have been asked to do so. Ignore
+ unknown pragmas in system headers unless an explicit
+ -Wunknown-pragmas has been given. */
+ if (warn_unknown_pragmas > in_system_header)
+ {
+ const unsigned char *space, *name;
+ const cpp_token *t = pfile->first_directive_token + 2;
+
+ space = t[0].val.node->name;
+ name = t[1].type == CPP_NAME ? t[1].val.node->name : 0;
+ if (name)
+ warning ("ignoring #pragma %s %s", space, name);
+ else
+ warning ("ignoring #pragma %s", space);
+ }
+}
#endif /* USE_CPPLIB */
/* Parse a '\uNNNN' or '\UNNNNNNNN' sequence.
@@ -2370,7 +2381,7 @@ lex_string (str, len, wide)
if (wide)
{
unsigned charwidth = TYPE_PRECISION (char_type_node);
- unsigned bytemask = (1 << width) - 1;
+ unsigned bytemask = (1 << charwidth) - 1;
int byte;
for (byte = 0; byte < WCHAR_BYTES; ++byte)
diff --git a/gcc/c-parse.in b/gcc/c-parse.in
index f46ad3b1d41..b3111057d23 100644
--- a/gcc/c-parse.in
+++ b/gcc/c-parse.in
@@ -41,6 +41,9 @@ end ifc
#include <setjmp.h>
#include "tree.h"
#include "input.h"
+#include "cpplib.h"
+#include "intl.h"
+#include "timevar.h"
#include "c-lex.h"
#include "c-tree.h"
#include "c-pragma.h"
@@ -1883,13 +1886,11 @@ stmt:
stmt_count++;
genrtl_continue_stmt (); }
| RETURN ';'
- { tree return_stmt = build_return_stmt (NULL_TREE);
- stmt_count++;
- genrtl_return_stmt (RETURN_EXPR(return_stmt)); }
+ { stmt_count++;
+ c_expand_return (NULL_TREE); }
| RETURN expr ';'
- { tree return_stmt = build_return_stmt ($2);
- stmt_count++;
- genrtl_return_stmt (RETURN_EXPR(return_stmt)); }
+ { stmt_count++;
+ c_expand_return ($2); }
| ASM_KEYWORD maybe_type_qual '(' expr ')' ';'
{ stmt_count++;
emit_line_note ($<filename>-1, $<lineno>0);
@@ -1949,20 +1950,14 @@ stmt:
also at the end of a compound statement. */
label: CASE expr_no_commas ':'
- { tree case_label_tree = build_case_label ($2, NULL_TREE);
- stmt_count++;
- genrtl_case_label(CASE_LOW(case_label_tree), CASE_HIGH(case_label_tree));
- }
+ { stmt_count++;
+ do_case ($2, NULL_TREE); }
| CASE expr_no_commas ELLIPSIS expr_no_commas ':'
- { tree case_label_tree = build_case_label ($2, $4);
- stmt_count++;
- genrtl_case_label(CASE_LOW(case_label_tree), CASE_HIGH(case_label_tree));
- }
+ { stmt_count++;
+ do_case ($2, $4); }
| DEFAULT ':'
- { tree case_label_tree = build_case_label (NULL_TREE, NULL_TREE);
- stmt_count++;
- genrtl_case_label(CASE_LOW(case_label_tree), CASE_HIGH(case_label_tree));
- }
+ { stmt_count++;
+ do_case (NULL_TREE, NULL_TREE); }
| identifier save_filename save_lineno ':' maybe_attribute
{ tree label = define_label ($2, $3, $1);
stmt_count++;
@@ -2806,9 +2801,6 @@ end ifobjc
/* yylex() is a thin wrapper around c_lex(), all it does is translate
cpplib.h's token codes into yacc's token codes. */
-#include "cpplib.h"
-#include "intl.h"
-#include "timevar.h"
static enum cpp_ttype last_token;
#if USE_CPPLIB
@@ -3070,8 +3062,7 @@ init_reswords ()
{
unsigned int i;
tree id;
- int mask = (D_YES
- | (doing_objc_thang ? 0 : D_OBJC)
+ int mask = ((doing_objc_thang ? 0 : D_OBJC)
| (flag_isoc99 ? 0 : D_C89)
| (flag_traditional ? D_TRAD : 0)
| (flag_no_asm ? (flag_isoc99 ? D_EXT : D_EXT|D_EXT89) : 0));
@@ -3082,10 +3073,19 @@ init_reswords ()
ridpointers = (tree *) xcalloc ((int) RID_MAX, sizeof (tree));
for (i = 0; i < N_reswords; i++)
{
+ /* If a keyword is disabled, do not enter it into the table
+ and so create a canonical spelling that isn't a keyword. */
+ if (reswords[i].disable & mask)
+ continue;
+
id = get_identifier (reswords[i].word);
C_RID_CODE (id) = reswords[i].rid;
ridpointers [(int) reswords[i].rid] = id;
- if (! (reswords[i].disable & mask))
+
+ /* Objective C does tricky things with enabling and disabling
+ keywords. So these we must not elide in the test above, but
+ wait and not mark them reserved now. */
+ if (! (reswords[i].disable & D_YES))
C_IS_RESERVED_WORD (id) = 1;
}
}
@@ -3228,7 +3228,12 @@ _yylex ()
case CPP_NAME:
if (C_IS_RESERVED_WORD (yylval.ttype))
- return rid_to_yy[C_RID_CODE (yylval.ttype)];
+ {
+ enum rid rid_code = C_RID_CODE (yylval.ttype);
+ /* Return the canonical spelling for this keyword. */
+ yylval.ttype = ridpointers[(int) rid_code];
+ return rid_to_yy[(int) rid_code];
+ }
if (IDENTIFIER_POINTER (yylval.ttype)[0] == '@')
{
diff --git a/gcc/c-pragma.c b/gcc/c-pragma.c
index 54823ef10f2..3763b62c03f 100644
--- a/gcc/c-pragma.c
+++ b/gcc/c-pragma.c
@@ -24,14 +24,13 @@ Boston, MA 02111-1307, USA. */
#include "tree.h"
#include "function.h"
#include "defaults.h"
+#include "cpplib.h"
#include "c-pragma.h"
#include "flags.h"
#include "toplev.h"
#include "ggc.h"
#include "c-lex.h"
-#include "cpplib.h"
-
-#ifdef HANDLE_GENERIC_PRAGMAS
+#include "tm_p.h"
#if USE_CPPLIB
extern cpp_reader parse_in;
@@ -189,59 +188,57 @@ handle_pragma_pack (dummy)
tree x, id = 0;
int align;
enum cpp_ttype token;
- enum { set, reset, push, pop } action;
+ enum { set, push, pop } action;
if (c_lex (&x) != CPP_OPEN_PAREN)
BAD ("missing '(' after '#pragma pack' - ignored");
token = c_lex (&x);
if (token == CPP_CLOSE_PAREN)
- action = reset;
+ {
+ action = set;
+ align = 0;
+ }
else if (token == CPP_NUMBER)
{
align = TREE_INT_CST_LOW (x);
action = set;
+ if (c_lex (&x) != CPP_CLOSE_PAREN)
+ BAD ("malformed '#pragma pack' - ignored");
}
else if (token == CPP_NAME)
{
- if (!strcmp (IDENTIFIER_POINTER (x), "push"))
+ const char *op = IDENTIFIER_POINTER (x);
+ if (!strcmp (op, "push"))
action = push;
- else if (!strcmp (IDENTIFIER_POINTER (x), "pop"))
+ else if (!strcmp (op, "pop"))
action = pop;
else
- BAD2 ("unknown action '%s' for '#pragma pack' - ignored",
- IDENTIFIER_POINTER (x));
- }
- else
- BAD ("malformed '#pragma pack' - ignored");
+ BAD2 ("unknown action '%s' for '#pragma pack' - ignored", op);
- token = c_lex (&x);
- if ((action == set || action == reset) && token != CPP_CLOSE_PAREN)
- BAD ("malformed '#pragma pack' - ignored");
- if ((action == push || action == pop) && token != CPP_COMMA)
- BAD2 ("malformed '#pragma pack(%s[, id], <n>)' - ignored",
- action == push ? "push" : "pop");
+ if (c_lex (&x) != CPP_COMMA)
+ BAD2 ("malformed '#pragma pack(%s[, id], <n>)' - ignored", op);
- if (action == push || action == pop)
- {
token = c_lex (&x);
if (token == CPP_NAME)
{
id = x;
if (c_lex (&x) != CPP_COMMA)
- BAD2 ("malformed '#pragma pack(%s[, id], <n>)' - ignored",
- action == push ? "push" : "pop");
+ BAD2 ("malformed '#pragma pack(%s[, id], <n>)' - ignored", op);
token = c_lex (&x);
}
+
if (token == CPP_NUMBER)
align = TREE_INT_CST_LOW (x);
else
- BAD2 ("malformed '#pragma pack(%s[, id], <n>)' - ignored",
- action == push ? "push" : "pop");
+ BAD2 ("malformed '#pragma pack(%s[, id], <n>)' - ignored", op);
if (c_lex (&x) != CPP_CLOSE_PAREN)
BAD ("malformed '#pragma pack' - ignored");
}
+ else
+ BAD ("malformed '#pragma pack' - ignored");
+
if (c_lex (&x) != CPP_EOF)
warning ("junk at end of '#pragma pack'");
@@ -262,7 +259,6 @@ handle_pragma_pack (dummy)
switch (action)
{
case set: SET_GLOBAL_ALIGNMENT (align); break;
- case reset: SET_GLOBAL_ALIGNMENT (0); break;
case push: push_alignment (align, id); break;
case pop: pop_alignment (id); break;
}
@@ -383,7 +379,7 @@ dispatch_pragma ()
enum cpp_ttype t;
tree x;
const struct pragma_entry *p;
- const char *name;
+ const char *name, *space = 0;
size_t len;
p = pragmas;
@@ -407,6 +403,7 @@ dispatch_pragma ()
{
if (p->isnspace)
{
+ space = p->name;
p = p->u.space;
goto new_space;
}
@@ -420,10 +417,15 @@ dispatch_pragma ()
}
/* Issue a warning message if we have been asked to do so. Ignore
- unknown pragmas in system header file unless an explcit
+ unknown pragmas in system headers unless an explicit
-Wunknown-pragmas has been given. */
if (warn_unknown_pragmas > in_system_header)
- warning ("ignoring pragma %s", name);
+ {
+ if (space)
+ warning ("ignoring #pragma %s %s", space, name);
+ else
+ warning ("ignoring #pragma %s", name);
+ }
}
#endif
@@ -431,10 +433,11 @@ dispatch_pragma ()
void
init_pragma ()
{
+ cpp_reader *pfile ATTRIBUTE_UNUSED;
#if !USE_CPPLIB
- cpp_reader *pfile = 0;
+ pfile = 0;
#else
- cpp_reader *pfile = &parse_in;
+ pfile = &parse_in;
#endif
#ifdef HANDLE_PRAGMA_PACK
@@ -443,11 +446,12 @@ init_pragma ()
#ifdef HANDLE_PRAGMA_WEAK
cpp_register_pragma (pfile, 0, "weak", handle_pragma_weak);
#endif
+#ifdef REGISTER_TARGET_PRAGMAS
+ REGISTER_TARGET_PRAGMAS (pfile);
+#endif
#ifdef HANDLE_PRAGMA_PACK_PUSH_POP
ggc_add_root (&alignment_stack, 1, sizeof(alignment_stack),
mark_align_stack);
#endif
}
-
-#endif /* HANDLE_GENERIC_PRAGMAS */
diff --git a/gcc/c-pragma.h b/gcc/c-pragma.h
index 792d1768707..569b9ddc320 100644
--- a/gcc/c-pragma.h
+++ b/gcc/c-pragma.h
@@ -57,24 +57,22 @@ extern struct weak_syms * weak_decls;
extern int add_weak PARAMS ((tree, const char *));
#endif /* HANDLE_PRAGMA_WEAK */
-
-/* Define HANDLE_GENERIC_PRAGMAS if any kind of front-end pragma
- parsing is to be done. The code in GCC's generic C source files
- will only look for the definition of this constant. They will
- ignore definitions of HANDLE_PRAGMA_PACK and so on. */
-#if defined HANDLE_PRAGMA_PACK || defined HANDLE_PRAGMA_WEAK
-#define HANDLE_GENERIC_PRAGMAS
-#endif
-
-#ifdef HANDLE_GENERIC_PRAGMAS
extern void init_pragma PARAMS ((void));
-# if !USE_CPPLIB
+/* If cpplib is in use, it handles dispatch. */
+#if !USE_CPPLIB
extern void dispatch_pragma PARAMS ((void));
-# endif
+#endif
+
+/* Duplicate prototypes for the register_pragma stuff and the typedef for
+ cpp_reader, to avoid dragging cpplib.h in almost everywhere... */
+#ifndef __GCC_CPPLIB__
+typedef struct cpp_reader cpp_reader;
-#else
-# define init_pragma()
+extern void cpp_register_pragma PARAMS ((cpp_reader *,
+ const char *, const char *,
+ void (*) PARAMS ((cpp_reader *))));
+extern void cpp_register_pragma_space PARAMS ((cpp_reader *, const char *));
#endif
#endif /* _C_PRAGMA_H */
diff --git a/gcc/c-semantics.c b/gcc/c-semantics.c
index 8a4cf91c6c4..f1b54c4cfd2 100644
--- a/gcc/c-semantics.c
+++ b/gcc/c-semantics.c
@@ -58,7 +58,7 @@ begin_stmt_tree (t)
/* T is a statement. Add it to the statement-tree. */
-void
+tree
add_stmt (t)
tree t;
{
@@ -68,6 +68,7 @@ add_stmt (t)
/* When we expand a statement-tree, we must know whether or not the
statements are full-expresions. We record that fact here. */
STMT_IS_FULL_EXPR_P (last_tree) = stmts_are_full_exprs_p ();
+ return t;
}
/* Remove declarations of internal variables that are not used from a
@@ -266,18 +267,6 @@ genrtl_do_pushlevel ()
clear_last_expr ();
}
-/* Helper for generating the RTL. */
-
-void
-genrtl_clear_out_block ()
-{
- /* If COND wasn't a declaration, clear out the
- block we made for it and start a new one here so the
- optimization in expand_end_loop will work. */
- if (getdecls () == NULL_TREE)
- genrtl_do_pushlevel ();
-}
-
/* Generate the RTL for DESTINATION, which is a GOTO_STMT. */
void
@@ -397,7 +386,7 @@ genrtl_while_stmt (t)
cond = expand_cond (WHILE_COND (t));
emit_line_note (input_filename, lineno);
expand_exit_loop_if_false (0, cond);
- genrtl_clear_out_block ();
+ genrtl_do_pushlevel ();
expand_stmt (WHILE_BODY (t));
@@ -434,14 +423,23 @@ build_return_stmt (expr)
return (build_stmt (RETURN_STMT, expr));
}
-/* Generate the RTL for EXPR, which is a RETURN_STMT. */
+/* Generate the RTL for STMT, which is a RETURN_STMT. */
void
-genrtl_return_stmt (expr)
- tree expr;
+genrtl_return_stmt (stmt)
+ tree stmt;
{
+ tree expr = RETURN_EXPR (stmt);
+
emit_line_note (input_filename, lineno);
- c_expand_return (expr);
+ if (!expr)
+ expand_null_return ();
+ else
+ {
+ expand_start_target_temps ();
+ expand_return (expr);
+ expand_end_target_temps ();
+ }
}
/* Generate the RTL for T, which is a FOR_STMT. */
@@ -465,7 +463,7 @@ genrtl_for_stmt (t)
emit_line_note (input_filename, lineno);
if (cond)
expand_exit_loop_if_false (0, cond);
- genrtl_clear_out_block ();
+ genrtl_do_pushlevel ();
tmp = FOR_EXPR (t);
expand_stmt (FOR_BODY (t));
@@ -547,40 +545,38 @@ genrtl_switch_stmt (t)
genrtl_do_pushlevel ();
cond = expand_cond (SWITCH_COND (t));
- if (cond != error_mark_node)
- {
- emit_line_note (input_filename, lineno);
- c_expand_start_case (cond);
- }
- else
+ if (cond == error_mark_node)
/* The code is in error, but we don't want expand_end_case to
crash. */
- c_expand_start_case (boolean_false_node);
+ cond = boolean_false_node;
+ emit_line_note (input_filename, lineno);
+ expand_start_case (1, cond, TREE_TYPE (cond), "switch statement");
expand_stmt (SWITCH_BODY (t));
-
expand_end_case (cond);
}
/* Create a CASE_LABEL tree node and return it. */
tree
-build_case_label (low_value, high_value)
+build_case_label (low_value, high_value, label_decl)
tree low_value;
tree high_value;
+ tree label_decl;
{
- return build_stmt (CASE_LABEL, low_value, high_value);
+ return build_stmt (CASE_LABEL, low_value, high_value, label_decl);
}
/* Generate the RTL for a CASE_LABEL. */
void
-genrtl_case_label (low_value, high_value)
- tree low_value;
- tree high_value;
+genrtl_case_label (case_label)
+ tree case_label;
{
- do_case (low_value, high_value);
+ tree duplicate;
+ add_case_node (CASE_LOW (case_label), CASE_HIGH (case_label),
+ CASE_LABEL_DECL (case_label), &duplicate);
}
/* Generate the RTL for T, which is a COMPOUND_STMT. */
@@ -677,7 +673,7 @@ expand_stmt (t)
switch (TREE_CODE (t))
{
case RETURN_STMT:
- genrtl_return_stmt (RETURN_EXPR (t));
+ genrtl_return_stmt (t);
break;
case EXPR_STMT:
@@ -721,7 +717,7 @@ expand_stmt (t)
break;
case CASE_LABEL:
- genrtl_case_label (CASE_LOW (t), CASE_HIGH (t));
+ genrtl_case_label (t);
break;
case LABEL_STMT:
diff --git a/gcc/c-tree.h b/gcc/c-tree.h
index 290ebe9daa8..92f0b453329 100644
--- a/gcc/c-tree.h
+++ b/gcc/c-tree.h
@@ -268,6 +268,7 @@ extern void set_init_label PARAMS ((tree));
extern void process_init_element PARAMS ((tree));
extern void pedwarn_c99 PARAMS ((const char *, ...))
ATTRIBUTE_PRINTF_1;
+extern tree c_expand_start_case PARAMS ((tree));
/* Set to 0 at beginning of a function definition, set to 1 if
a return statement that specifies a return value is seen. */
diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c
index 29174b0248c..90078a65ba2 100644
--- a/gcc/c-typeck.c
+++ b/gcc/c-typeck.c
@@ -53,7 +53,6 @@ static int undeclared_variable_notice;
static int comp_target_types PARAMS ((tree, tree));
static int function_types_compatible_p PARAMS ((tree, tree));
static int type_lists_compatible_p PARAMS ((tree, tree));
-static tree decl_constant_value PARAMS ((tree));
static tree lookup_field PARAMS ((tree, tree, tree *));
static tree convert_arguments PARAMS ((tree, tree, tree, tree, tree));
static tree pointer_int_sum PARAMS ((enum tree_code, tree, tree));
@@ -841,7 +840,7 @@ c_alignof_expr (expr)
/* Return either DECL or its known constant value (if it has one). */
-static tree
+tree
decl_constant_value (decl)
tree decl;
{
@@ -7119,7 +7118,8 @@ process_init_element (value)
code appears conditioned on e.g. __STDC__ to avoid
"missing initializer" warnings and relies on default
initialization to zero in the traditional C case. */
- if (warn_traditional && !in_system_header && !integer_zerop (value))
+ if (warn_traditional && !in_system_header
+ && !(value && (integer_zerop (value) || real_zerop (value))))
warning ("traditional C rejects initialization of unions");
if (BOUNDED_POINTER_TYPE_P (fieldtype))
@@ -7373,14 +7373,12 @@ c_expand_return (retval)
if ((warn_return_type || flag_isoc99)
&& valtype != 0 && TREE_CODE (valtype) != VOID_TYPE)
pedwarn_c99 ("`return' with no value, in function returning non-void");
- expand_null_return ();
}
else if (valtype == 0 || TREE_CODE (valtype) == VOID_TYPE)
{
current_function_returns_null = 1;
if (pedantic || TREE_CODE (TREE_TYPE (retval)) != VOID_TYPE)
pedwarn ("`return' with a value, in function returning void");
- expand_return (retval);
}
else
{
@@ -7445,11 +7443,11 @@ c_expand_return (retval)
break;
}
- t = build (MODIFY_EXPR, TREE_TYPE (res), res, t);
- TREE_SIDE_EFFECTS (t) = 1;
- expand_return (t);
+ retval = build (MODIFY_EXPR, TREE_TYPE (res), res, t);
current_function_returns_value = 1;
}
+
+ genrtl_return_stmt (build_return_stmt (retval));
}
/* Start a C switch statement, testing expression EXP.
diff --git a/gcc/ch/ChangeLog b/gcc/ch/ChangeLog
index 44049ccd175..f356ff8335d 100644
--- a/gcc/ch/ChangeLog
+++ b/gcc/ch/ChangeLog
@@ -1,3 +1,9 @@
+2000-09-10 Zack Weinberg <zack@wolery.cumb.org>
+
+ * decl.c, timing.c: Include defaults.h if not already included.
+ Don't define the *_TYPE_SIZE macros.
+ * Makefile.in: Update dependencies.
+
2000-08-29 Zack Weinberg <zack@wolery.cumb.org>
* inout.c (add_enum_to_list): Use DECL_NAME directly, don't get
diff --git a/gcc/ch/Makefile.in b/gcc/ch/Makefile.in
index 70f9071f6ff..5b65f122bed 100644
--- a/gcc/ch/Makefile.in
+++ b/gcc/ch/Makefile.in
@@ -276,7 +276,7 @@ convert.o : convert.c $(CONFIG_H) $(CHILL_TREE_H) $(srcdir)/../flags.h \
$(srcdir)/../tree.h $(srcdir)/../system.h $(srcdir)/../toplev.h \
$(srcdir)/../convert.h
decl.o : decl.c $(CONFIG_H) $(CHILL_TREE_H) $(srcdir)/../flags.h lex.h \
- $(srcdir)/../system.h $(srcdir)/../toplev.h
+ $(srcdir)/../system.h $(srcdir)/../toplev.h $(srcdir)/../defaults.h
except.o : except.c $(CONFIG_H) $(srcdir)/../tree.h $(RTL_H) $(CHILL_TREE_H) \
$(srcdir)/../system.h $(srcdir)/../toplev.h
expr.o : expr.c $(CONFIG_H) $(RTL_H) $(CHILL_TREE_H) $(srcdir)/../flags.h \
@@ -300,7 +300,8 @@ parse.o : parse.c $(CONFIG_H) $(CHILL_TREE_H) parse.h \
satisfy.o : satisfy.c $(CONFIG_H) $(CHILL_TREE_H) $(srcdir)/../tree.h \
$(srcdir)/../flags.h lex.h $(srcdir)/../system.h $(srcdir)/../toplev.h
timing.o : timing.c $(CONFIG_H) $(CHILL_TREE_H) $(RTL_H) $(srcdir)/../flags.h \
- $(srcdir)/../input.h lex.h $(srcdir)/../system.h $(srcdir)/../toplev.h
+ $(srcdir)/../input.h lex.h $(srcdir)/../system.h $(srcdir)/../toplev.h \
+ $(srcdir)/../defaults.h
tasking.o : tasking.c $(CONFIG_H) $(CHILL_TREE_H) $(RTL_H) \
$(srcdir)/../flags.h $(srcdir)/../input.h \
lex.h $(srcdir)/../system.h $(srcdir)/../toplev.h
diff --git a/gcc/ch/decl.c b/gcc/ch/decl.c
index 2cb46977e5d..db140f93051 100644
--- a/gcc/ch/decl.c
+++ b/gcc/ch/decl.c
@@ -191,6 +191,7 @@ Boston, MA 02111-1307, USA. */
#include "input.h"
#include "rtl.h"
#include "toplev.h"
+#include "defaults.h"
#define IS_UNKNOWN_TYPE(type) (TYPE_SIZE(type)==0)
#define BUILTIN_NESTING_LEVEL (-1)
@@ -264,52 +265,6 @@ int current_module_nesting_level = 0;
/* ??? not all decl nodes are given the most useful possible
line numbers. For example, the CONST_DECLs for enum values. */
-#if 0
-/* In grokdeclarator, distinguish syntactic contexts of declarators. */
-enum decl_context
-{ NORMAL, /* Ordinary declaration */
- FUNCDEF, /* Function definition */
- PARM, /* Declaration of parm before function body */
- FIELD, /* Declaration inside struct or union */
- BITFIELD, /* Likewise but with specified width */
- TYPENAME}; /* Typename (inside cast or sizeof) */
-#endif
-
-#ifndef CHAR_TYPE_SIZE
-#define CHAR_TYPE_SIZE BITS_PER_UNIT
-#endif
-
-#ifndef SHORT_TYPE_SIZE
-#define SHORT_TYPE_SIZE (BITS_PER_UNIT * MIN ((UNITS_PER_WORD + 1) / 2, 2))
-#endif
-
-#ifndef INT_TYPE_SIZE
-#define INT_TYPE_SIZE BITS_PER_WORD
-#endif
-
-#ifndef LONG_TYPE_SIZE
-#define LONG_TYPE_SIZE BITS_PER_WORD
-#endif
-
-#ifndef LONG_LONG_TYPE_SIZE
-#define LONG_LONG_TYPE_SIZE (BITS_PER_WORD * 2)
-#endif
-
-#ifndef WCHAR_UNSIGNED
-#define WCHAR_UNSIGNED 0
-#endif
-
-#ifndef FLOAT_TYPE_SIZE
-#define FLOAT_TYPE_SIZE BITS_PER_WORD
-#endif
-
-#ifndef DOUBLE_TYPE_SIZE
-#define DOUBLE_TYPE_SIZE (BITS_PER_WORD * 2)
-#endif
-
-#ifndef LONG_DOUBLE_TYPE_SIZE
-#define LONG_DOUBLE_TYPE_SIZE (BITS_PER_WORD * 2)
-#endif
/* We let tm.h override the types used here, to handle trivial differences
such as the choice of unsigned int or long unsigned int for size_t.
diff --git a/gcc/ch/timing.c b/gcc/ch/timing.c
index 35bef786b23..53d76703f12 100644
--- a/gcc/ch/timing.c
+++ b/gcc/ch/timing.c
@@ -28,10 +28,7 @@ Boston, MA 02111-1307, USA. */
#include "obstack.h"
#include "lex.h"
#include "toplev.h"
-
-#ifndef LONG_TYPE_SIZE
-#define LONG_TYPE_SIZE BITS_PER_WORD
-#endif
+#include "defaults.h"
/* set non-zero if input text is forced to lowercase */
extern int ignore_case;
diff --git a/gcc/combine.c b/gcc/combine.c
index 56bedce3b3b..478aab2b2a3 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -4539,6 +4539,45 @@ combine_simplify_rtx (x, op0_mode, last, in_dest)
break;
+ case VEC_SELECT:
+ {
+ rtx op0 = XEXP (x, 0);
+ rtx op1 = XEXP (x, 1);
+ int len;
+
+ if (GET_CODE (op1) != PARALLEL)
+ abort ();
+ len = XVECLEN (op1, 0);
+ if (len == 1
+ && GET_CODE (XVECEXP (op1, 0, 0)) == CONST_INT
+ && GET_CODE (op0) == VEC_CONCAT)
+ {
+ int offset = INTVAL (XVECEXP (op1, 0, 0)) * GET_MODE_SIZE (GET_MODE (x));
+
+ /* Try to find the element in the VEC_CONCAT. */
+ for (;;)
+ {
+ if (GET_MODE (op0) == GET_MODE (x))
+ return op0;
+ if (GET_CODE (op0) == VEC_CONCAT)
+ {
+ HOST_WIDE_INT op0_size = GET_MODE_SIZE (GET_MODE (XEXP (op0, 0)));
+ if (op0_size < offset)
+ op0 = XEXP (op0, 0);
+ else
+ {
+ offset -= op0_size;
+ op0 = XEXP (op0, 1);
+ }
+ }
+ else
+ break;
+ }
+ }
+ }
+
+ break;
+
default:
break;
}
@@ -4664,10 +4703,12 @@ simplify_if_then_else (x)
/* Convert a == b ? b : a to "a". */
if (true_code == EQ && ! side_effects_p (cond)
+ && (! FLOAT_MODE_P (mode) || flag_fast_math)
&& rtx_equal_p (XEXP (cond, 0), false)
&& rtx_equal_p (XEXP (cond, 1), true))
return false;
else if (true_code == NE && ! side_effects_p (cond)
+ && (! FLOAT_MODE_P (mode) || flag_fast_math)
&& rtx_equal_p (XEXP (cond, 0), true)
&& rtx_equal_p (XEXP (cond, 1), false))
return true;
diff --git a/gcc/config.in b/gcc/config.in
index 85516d193bf..6636375231e 100644
--- a/gcc/config.in
+++ b/gcc/config.in
@@ -156,6 +156,9 @@
/* Define if you have the gettimeofday function. */
#undef HAVE_GETTIMEOFDAY
+/* Define if you have the iconv function. */
+#undef HAVE_ICONV
+
/* Define if you have the index function. */
#undef HAVE_INDEX
@@ -168,6 +171,9 @@
/* Define if you have the munmap function. */
#undef HAVE_MUNMAP
+/* Define if you have the nl_langinfo function. */
+#undef HAVE_NL_LANGINFO
+
/* Define if you have the popen function. */
#undef HAVE_POPEN
@@ -225,6 +231,9 @@
/* Define if you have the <fcntl.h> header file. */
#undef HAVE_FCNTL_H
+/* Define if you have the <langinfo.h> header file. */
+#undef HAVE_LANGINFO_H
+
/* Define if you have the <limits.h> header file. */
#undef HAVE_LIMITS_H
diff --git a/gcc/config/arm/arm-protos.h b/gcc/config/arm/arm-protos.h
index ae2a7de3084..bc05fa76a97 100644
--- a/gcc/config/arm/arm-protos.h
+++ b/gcc/config/arm/arm-protos.h
@@ -20,11 +20,12 @@ along with GNU CC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
+#ifndef GCC_ARM_PROTOS_H
+#define GCC_ARM_PROTOS_H
+
extern void arm_override_options PARAMS ((void));
extern int use_return_insn PARAMS ((int));
extern int arm_regno_class PARAMS ((int));
-extern int arm_process_pragma PARAMS ((int (*)(void), void (*) (int),
- char *));
extern void arm_finalize_pic PARAMS ((void));
extern int arm_volatile_func PARAMS ((void));
extern const char * arm_output_epilogue PARAMS ((int));
@@ -194,3 +195,11 @@ extern int arm_dllimport_p PARAMS ((tree));
extern void arm_mark_dllexport PARAMS ((tree));
extern void arm_mark_dllimport PARAMS ((tree));
#endif
+
+#ifdef _C_PRAGMA_H /* included from code that cares about pragmas */
+extern void arm_pr_long_calls PARAMS ((cpp_reader *));
+extern void arm_pr_no_long_calls PARAMS ((cpp_reader *));
+extern void arm_pr_long_calls_off PARAMS ((cpp_reader *));
+#endif
+
+#endif /* GCC_ARM_PROTOS_H */
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index df4ed671eb5..7f35e1a88ae 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -25,7 +25,6 @@ Boston, MA 02111-1307, USA. */
#include "system.h"
#include "rtl.h"
#include "tree.h"
-#include "tm_p.h"
#include "regs.h"
#include "hard-reg-set.h"
#include "real.h"
@@ -42,6 +41,7 @@ Boston, MA 02111-1307, USA. */
#include "recog.h"
#include "ggc.h"
#include "except.h"
+#include "c-pragma.h"
#include "tm_p.h"
/* Forward definitions of types. */
@@ -1613,27 +1613,27 @@ typedef enum
static arm_pragma_enum arm_pragma_long_calls = OFF;
-/* Handle pragmas for compatibility with Intel's compilers.
- FIXME: This is incomplete, since it does not handle all
- the pragmas that the Intel compilers understand. */
-int
-arm_process_pragma (p_getc, p_ungetc, pname)
- int (* p_getc) PARAMS ((void)) ATTRIBUTE_UNUSED;
- void (* p_ungetc) PARAMS ((int)) ATTRIBUTE_UNUSED;
- char * pname;
-{
- /* Should be pragma 'far' or equivalent for callx/balx here. */
- if (strcmp (pname, "long_calls") == 0)
- arm_pragma_long_calls = LONG;
- else if (strcmp (pname, "no_long_calls") == 0)
- arm_pragma_long_calls = SHORT;
- else if (strcmp (pname, "long_calls_off") == 0)
- arm_pragma_long_calls = OFF;
- else
- return 0;
-
- return 1;
+void
+arm_pr_long_calls (pfile)
+ cpp_reader *pfile ATTRIBUTE_UNUSED;
+{
+ arm_pragma_long_calls = LONG;
}
+
+void
+arm_pr_no_long_calls (pfile)
+ cpp_reader *pfile ATTRIBUTE_UNUSED;
+{
+ arm_pragma_long_calls = SHORT;
+}
+
+void
+arm_pr_long_calls_off (pfile)
+ cpp_reader *pfile ATTRIBUTE_UNUSED;
+{
+ arm_pragma_long_calls = OFF;
+}
+
/* Return nonzero if IDENTIFIER with arguments ARGS is a valid machine specific
attribute for TYPE. The attributes in ATTRIBUTES have previously been
diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
index 20615726cb7..18e6ad9268e 100644
--- a/gcc/config/arm/arm.h
+++ b/gcc/config/arm/arm.h
@@ -129,7 +129,7 @@ Unrecognized value in TARGET_CPU_DEFAULT.
%(cpp_cpu_arch) %(cpp_apcs_pc) %(cpp_float) \
%(cpp_endian) %(subtarget_cpp_spec) %(cpp_isa) %(cpp_interwork)"
-#define CPP_ISA_SPEC "%{mthumb:-Dthumb -D__thumb__} %{!mthumb:-Darm -D__arm__}"
+#define CPP_ISA_SPEC "%{mthumb:-D__thumb__} %{!mthumb:-D__arm__}"
/* Set the architecture define -- if -march= is set, then it overrides
the -mcpu= setting. */
@@ -2488,8 +2488,12 @@ extern int making_const_table;
arm_set_default_type_attributes (TYPE)
/* Handle pragmas for compatibility with Intel's compilers. */
-#define HANDLE_PRAGMA(GET, UNGET, NAME) arm_process_pragma (GET, UNGET, NAME)
-
+#define REGISTER_TARGET_PRAGMAS(PFILE) do { \
+ cpp_register_pragma (PFILE, 0, "long_calls", arm_pr_long_calls); \
+ cpp_register_pragma (PFILE, 0, "no_long_calls", arm_pr_no_long_calls); \
+ cpp_register_pragma (PFILE, 0, "long_calls_off", arm_pr_long_calls_off); \
+} while (0)
+
/* Condition code information. */
/* Given a comparison code (EQ, NE, etc.) and the first operand of a COMPARE,
return the mode to be used for the comparison.
diff --git a/gcc/config/arm/elf.h b/gcc/config/arm/elf.h
index 44ce9131376..53fa21787b1 100644
--- a/gcc/config/arm/elf.h
+++ b/gcc/config/arm/elf.h
@@ -33,7 +33,7 @@ Boston, MA 02111-1307, USA. */
#endif
#ifndef SUBTARGET_CPP_SPEC
-#define SUBTARGET_CPP_SPEC "-Darm_elf -D__ELF__"
+#define SUBTARGET_CPP_SPEC "-D__ELF__"
#endif
#ifndef SUBTARGET_EXTRA_ASM_SPEC
diff --git a/gcc/config/arm/linux-elf.h b/gcc/config/arm/linux-elf.h
index cd1cd46c1a9..1be7a6fffed 100644
--- a/gcc/config/arm/linux-elf.h
+++ b/gcc/config/arm/linux-elf.h
@@ -105,7 +105,7 @@ Boston, MA 02111-1307, USA. */
#undef CPP_PREDEFINES
#define CPP_PREDEFINES \
-"-Dunix -D__arm__ -Dlinux -D__ELF__ \
+"-Dunix -Dlinux -D__ELF__ \
-Asystem(unix) -Asystem(posix) -Acpu(arm) -Amachine(arm)"
/* Allow #sccs in preprocessor. */
diff --git a/gcc/config/avr/avr-protos.h b/gcc/config/avr/avr-protos.h
index 8193d237145..6c34cf323b7 100644
--- a/gcc/config/avr/avr-protos.h
+++ b/gcc/config/avr/avr-protos.h
@@ -42,8 +42,6 @@ extern int mask_one_bit_p PARAMS ((HOST_WIDE_INT mask));
extern void gas_output_limited_string PARAMS ((FILE *file, const char *str));
extern void gas_output_ascii PARAMS ((FILE *file, const char *str,
size_t length));
-
-
#ifdef TREE_CODE
extern void asm_output_external PARAMS ((FILE *file, tree decl,
char *name));
diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c
index 6f2ba181a48..fca29f9ed53 100644
--- a/gcc/config/avr/avr.c
+++ b/gcc/config/avr/avr.c
@@ -4666,5 +4666,3 @@ output_reload_insisf (insn, operands, len)
}
return "";
}
-
-
diff --git a/gcc/config/avr/avr.h b/gcc/config/avr/avr.h
index 18f84f3c1d3..48fea8bd678 100644
--- a/gcc/config/avr/avr.h
+++ b/gcc/config/avr/avr.h
@@ -2656,6 +2656,31 @@ sprintf (STRING, "*.%s%d", PREFIX, NUM)
formats. In that case, the various `tm.h' files can define these
macros differently. */
+#define ASSEMBLER_DIALECT AVR_ENHANCED
+/* If your target supports multiple dialects of assembler language
+ (such as different opcodes), define this macro as a C expression
+ that gives the numeric index of the assembler language dialect to
+ use, with zero as the first variant.
+
+ If this macro is defined, you may use constructs of the form
+ `{option0|option1|option2...}' in the output templates of patterns
+ (*note Output Template::.) or in the first argument of
+ `asm_fprintf'. This construct outputs `option0', `option1' or
+ `option2', etc., if the value of `ASSEMBLER_DIALECT' is zero, one
+ or two, etc. Any special characters within these strings retain
+ their usual meaning.
+
+ If you do not define this macro, the characters `{', `|' and `}'
+ do not have any special meaning when used in templates or operands
+ to `asm_fprintf'.
+
+ Define the macros `REGISTER_PREFIX', `LOCAL_LABEL_PREFIX',
+ `USER_LABEL_PREFIX' and `IMMEDIATE_PREFIX' if you can express the
+ variations in assembler language syntax with that mechanism.
+ Define `ASSEMBLER_DIALECT' and use the `{option0|option1}' syntax
+ if the syntax variant are larger and involve such things as
+ different opcodes or operand order. */
+
#define ASM_OUTPUT_REG_PUSH(STREAM, REGNO) \
{ \
if (REGNO > 31) \
diff --git a/gcc/config/avr/avr.md b/gcc/config/avr/avr.md
index ba456ff0706..fbd00a56ef8 100644
--- a/gcc/config/avr/avr.md
+++ b/gcc/config/avr/avr.md
@@ -340,8 +340,7 @@
(clobber (match_dup 0))
(clobber (match_dup 1))]
""
- "
- ld __tmp_reg__,%a1+
+ "ld __tmp_reg__,%a1+
st %a0+,__tmp_reg__
dec %2
brne _PC_-8"
@@ -409,8 +408,7 @@
(clobber (match_dup 1))
(clobber (match_dup 0))]
""
- "
- st %a0+,__zero_reg__
+ "st %a0+,__zero_reg__
dec %1
brne _PC_-6"
[(set_attr "length" "3")
@@ -555,12 +553,11 @@
[(set_attr "length" "2,1,1,2,3,3")
(set_attr "cc" "set_n,set_czn,set_czn,set_czn,set_n,set_n")])
-;; TODO: use "movw" if available
(define_insn "addsi3"
- [(set (match_operand:SI 0 "register_operand" "=r,!w,!w,d,r,r,&*!w,&*!w")
+ [(set (match_operand:SI 0 "register_operand" "=r,!w,!w,d,r,r")
(plus:SI
- (match_operand:SI 1 "register_operand" "%0,0,0,0,0,0,r,r")
- (match_operand:SI 2 "nonmemory_operand" "r,I,J,i,P,N,#I,#J")))]
+ (match_operand:SI 1 "register_operand" "%0,0,0,0,0,0")
+ (match_operand:SI 2 "nonmemory_operand" "r,I,J,i,P,N")))]
""
"@
add %A0,%A2\;adc %B0,%B2\;adc %C0,%C2\;adc %D0,%D2
@@ -568,11 +565,9 @@
sbiw %0,%n2\;sbc %C0,__zero_reg__\;sbc %D0,__zero_reg__
subi %0,lo8(-(%2))\;sbci %B0,hi8(-(%2))\;sbci %C0,hlo8(-(%2))\;sbci %D0,hhi8(-(%2))
sec\;adc %A0,__zero_reg__\;adc %B0,__zero_reg__\;adc %C0,__zero_reg__\;adc %D0,__zero_reg__
- sec\;sbc %A0,__zero_reg__\;sbc %B0,__zero_reg__\;sbc %C0,__zero_reg__\;sbc %D0,__zero_reg__
- mov %A0,%A1\;mov %B0,%B1\;mov %C0,%C1\;mov %D0,%D1\;adiw %0,%2\;adc %C0,__zero_reg__\;adc %D0,__zero_reg__
- mov %A0,%A1\;mov %B0,%B1\;mov %C0,%C1\;mov %D0,%D1\;sbiw %0,%n2\;sbc %C0,__zero_reg__\;sbc %D0,__zero_reg__"
- [(set_attr "length" "4,3,3,4,5,5,7,7")
- (set_attr "cc" "set_n,set_n,set_czn,set_czn,set_n,set_n,set_n,set_czn")])
+ sec\;sbc %A0,__zero_reg__\;sbc %B0,__zero_reg__\;sbc %C0,__zero_reg__\;sbc %D0,__zero_reg__"
+ [(set_attr "length" "4,3,3,4,5,5")
+ (set_attr "cc" "set_n,set_n,set_czn,set_czn,set_n,set_n")])
;-----------------------------------------------------------------------------
; sub bytes
@@ -852,7 +847,8 @@
(xor:HI (match_operand:HI 1 "register_operand" "%0")
(match_operand:HI 2 "register_operand" "r")))]
""
- "eor %0,%2\;eor %B0,%B2"
+ "eor %0,%2
+ eor %B0,%B2"
[(set_attr "length" "2")
(set_attr "cc" "set_n")])
@@ -971,7 +967,8 @@
[(set (match_operand:QI 0 "register_operand" "=r")
(abs:QI (match_operand:QI 1 "register_operand" "0")))]
""
- "sbrc %0,7\;neg %0"
+ "sbrc %0,7
+ neg %0"
[(set_attr "length" "2")
(set_attr "cc" "clobber")])
@@ -1043,7 +1040,8 @@
[(set (match_operand:HI 0 "register_operand" "=r")
(not:HI (match_operand:HI 1 "register_operand" "0")))]
""
- "com %0\;com %B0"
+ "com %0
+ com %B0"
[(set_attr "length" "2")
(set_attr "cc" "set_n")])
@@ -1051,7 +1049,10 @@
[(set (match_operand:SI 0 "register_operand" "=r")
(not:SI (match_operand:SI 1 "register_operand" "0")))]
""
- "com %0\;com %B0\;com %C0\;com %D0"
+ "com %0
+ com %B0
+ com %C0
+ com %D0"
[(set_attr "length" "4")
(set_attr "cc" "set_n")])
@@ -1078,15 +1079,22 @@
[(set_attr "length" "5,6")
(set_attr "cc" "clobber,clobber")])
-;; TODO: use "movw" if available
(define_insn "extendhisi2"
[(set (match_operand:SI 0 "register_operand" "=r,&r")
(sign_extend:SI (match_operand:HI 1 "register_operand" "0,*r")))]
""
"@
clr %C0\;sbrc %B0,7\;com %C0\;mov %D0,%C0
- mov %A0,%A1\;mov %B0,%B1\;clr %C0\;sbrc %B0,7\;com %C0\;mov %D0,%C0"
- [(set_attr "length" "4,6")
+ {mov %A0,%A1\;mov %B0,%B1|movw %A0,%A1}\;clr %C0\;sbrc %B0,7\;com %C0\;mov %D0,%C0"
+ [(set (attr "length")
+ (if_then_else
+ (eq (symbol_ref "AVR_ENHANCED") (const_int 0))
+ (if_then_else (eq (symbol_ref "which_alternative") (const_int 0))
+ (const_int 4)
+ (const_int 6))
+ (if_then_else (eq (symbol_ref "which_alternative") (const_int 0))
+ (const_int 4)
+ (const_int 5))))
(set_attr "cc" "clobber,clobber")])
;; xx<---x xx<---x xx<---x xx<---x xx<---x xx<---x xx<---x xx<---x xx<---x
@@ -1112,15 +1120,22 @@
[(set_attr "length" "3,4")
(set_attr "cc" "set_n,set_n")])
-;; TODO: use "movw" if available
(define_insn "zero_extendhisi2"
[(set (match_operand:SI 0 "register_operand" "=r,&r")
(zero_extend:SI (match_operand:HI 1 "register_operand" "0,*r")))]
""
"@
clr %C0\;clr %D0
- mov %A0,%A1\;mov %B0,%B1\;clr %C0\;clr %D0"
- [(set_attr "length" "2,4")
+ {mov %A0,%A1\;mov %B0,%B1|movw %A0,%B0}\;clr %C0\;clr %D0"
+ [(set (attr "length")
+ (if_then_else
+ (eq (symbol_ref "AVR_ENHANCED") (const_int 0))
+ (if_then_else (eq (symbol_ref "which_alternative") (const_int 0))
+ (const_int 2)
+ (const_int 4))
+ (if_then_else (eq (symbol_ref "which_alternative") (const_int 0))
+ (const_int 2)
+ (const_int 3))))
(set_attr "cc" "set_n,set_n")])
;;<=><=><=><=><=><=><=><=><=><=><=><=><=><=><=><=><=><=><=><=><=><=><=><=><=>
diff --git a/gcc/config/c4x/c4x-protos.h b/gcc/config/c4x/c4x-protos.h
index cd7c0292bb5..a9fb5e6bde2 100644
--- a/gcc/config/c4x/c4x-protos.h
+++ b/gcc/config/c4x/c4x-protos.h
@@ -22,6 +22,9 @@
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
+#ifndef GCC_C4X_PROTOS_H
+#define GCC_C4X_PROTOS_H
+
extern void c4x_override_options PARAMS ((void));
extern void c4x_optimization_options PARAMS ((int, int));
@@ -290,3 +293,14 @@ extern enum machine_mode c4x_caller_save_map[];
extern int c4x_rpts_cycles; /* Max cycles for RPTS. */
extern int c4x_cpu_version; /* Cpu version C30/31/32/40/44. */
+
+#ifdef _C_PRAGMA_H
+extern void c4x_pr_CODE_SECTION PARAMS ((cpp_reader *));
+extern void c4x_pr_DATA_SECTION PARAMS ((cpp_reader *));
+extern void c4x_pr_FUNC_IS_PURE PARAMS ((cpp_reader *));
+extern void c4x_pr_FUNC_NEVER_RETURNS PARAMS ((cpp_reader *));
+extern void c4x_pr_INTERRUPT PARAMS ((cpp_reader *));
+extern void c4x_pr_ignored PARAMS ((cpp_reader *));
+#endif
+
+#endif
diff --git a/gcc/config/c4x/c4x.c b/gcc/config/c4x/c4x.c
index 49bfadc66a9..d6881b5c223 100644
--- a/gcc/config/c4x/c4x.c
+++ b/gcc/config/c4x/c4x.c
@@ -45,6 +45,9 @@
#include "recog.h"
#include "c-tree.h"
#include "ggc.h"
+#include "cpplib.h"
+#include "c-lex.h"
+#include "c-pragma.h"
#include "c4x-protos.h"
rtx smulhi3_libfunc;
@@ -182,6 +185,7 @@ static int c4x_valid_operands PARAMS ((enum rtx_code, rtx *,
static int c4x_arn_reg_operand PARAMS ((rtx, enum machine_mode, unsigned int));
static int c4x_arn_mem_operand PARAMS ((rtx, enum machine_mode, unsigned int));
static void c4x_check_attribute PARAMS ((const char *, tree, tree, tree *));
+static int c4x_parse_pragma PARAMS ((const char *, tree *, tree *));
/* Called to register all of our global variables with the garbage
collector. */
@@ -287,7 +291,7 @@ c4x_override_options ()
void
c4x_optimization_options (level, size)
- int level;
+ int level ATTRIBUTE_UNUSED;
int size ATTRIBUTE_UNUSED;
{
/* Scheduling before register allocation can screw up global
@@ -4383,123 +4387,112 @@ c4x_operand_subword (op, i, validate_address, mode)
*/
-int
-c4x_handle_pragma (p_getc, p_ungetc, pname)
- int (* p_getc) PARAMS ((void));
- void (* p_ungetc) PARAMS ((int)) ATTRIBUTE_UNUSED;
- char *pname;
+/* Parse a C4x pragma, of the form ( function [, "section"] ) \n.
+ FUNC is loaded with the IDENTIFIER_NODE of the function, SECT with
+ the STRING_CST node of the string. If SECT is null, then this
+ pragma doesn't take a section string. Returns 0 for a good pragma,
+ -1 for a malformed pragma. */
+#define BAD(msgid, arg) do { warning (msgid, arg); return -1; } while (0)
+
+static int
+c4x_parse_pragma (name, func, sect)
+ const char *name;
+ tree *func;
+ tree *sect;
{
- int i;
- int c;
- int namesize;
- char *name;
- tree func;
- tree sect = NULL_TREE;
- tree new;
+ tree f, s, x;
- c = p_getc ();
- while (c == ' ' || c == '\t') c = p_getc ();
- if (c != '(')
- return 0;
+ if (c_lex (&x) != CPP_OPEN_PAREN)
+ BAD ("missing '(' after '#pragma %s' - ignored", name);
- c = p_getc ();
- while (c == ' ' || c == '\t') c = p_getc ();
- if (! (ISALPHA(c) || c == '_' || c == '$' || c == '@'))
- return 0;
+ if (c_lex (&f) != CPP_NAME)
+ BAD ("missing function name in '#pragma %s' - ignored", name);
- i = 0;
- namesize = 16;
- name = xmalloc (namesize);
- while (ISALNUM (c) || c == '_' || c == '$' || c == '@')
- {
- if (i >= namesize-1)
- {
- namesize += 16;
- name = xrealloc (name, namesize);
- }
- name[i++] = c;
- c = p_getc ();
- }
- name[i] = 0;
- func = get_identifier (name);
- free (name);
-
- if (strcmp (pname, "CODE_SECTION") == 0
- || strcmp (pname, "DATA_SECTION") == 0)
+ if (sect)
{
- while (c == ' ' || c == '\t') c = p_getc ();
- if (c != ',')
- return 0;
-
- c = p_getc ();
- while (c == ' ' || c == '\t') c = p_getc ();
- if (c != '"')
- return 0;
-
- i = 0;
- namesize = 16;
- name = xmalloc (namesize);
- c = p_getc ();
- while (c != '"' && c != '\n' && c != '\r' && c != EOF)
- {
- if (i >= namesize-1)
- {
- namesize += 16;
- name = xrealloc (name, namesize);
- }
- name[i++] = c;
- c = p_getc ();
- }
- name[i] = 0;
- sect = build_string (i, name);
- free (name);
- sect = build_tree_list (NULL_TREE, sect);
-
- if (c != '"')
- return 0;
- c = p_getc ();
+ if (c_lex (&x) != CPP_COMMA)
+ BAD ("malformed '#pragma %s' - ignored", name);
+ if (c_lex (&s) != CPP_STRING)
+ BAD ("missing section name in '#pragma %s' - ignored", name);
+ *sect = s;
}
- while (c == ' ' || c == '\t') c = p_getc ();
- if (c != ')')
- return 0;
-
- new = build_tree_list (func, sect);
- if (strcmp (pname, "CODE_SECTION") == 0)
- code_tree = chainon (code_tree, new);
-
- else if (strcmp (pname, "DATA_SECTION") == 0)
- data_tree = chainon (data_tree, new);
-
- else if (strcmp (pname, "FUNC_CANNOT_INLINE") == 0)
- ; /* Ignore. */
-
- else if (strcmp (pname, "FUNC_EXT_CALLED") == 0)
- ; /* Ignore. */
-
- else if (strcmp (pname, "FUNC_IS_PURE") == 0)
- pure_tree = chainon (pure_tree, new);
-
- else if (strcmp (pname, "FUNC_IS_SYSTEM") == 0)
- ; /* Ignore. */
-
- else if (strcmp (pname, "FUNC_NEVER_RETURNS") == 0)
- noreturn_tree = chainon (noreturn_tree, new);
-
- else if (strcmp (pname, "FUNC_NO_GLOBAL_ASG") == 0)
- ; /* Ignore. */
-
- else if (strcmp (pname, "FUNC_NO_IND_ASG") == 0)
- ; /* Ignore. */
-
- else if (strcmp (pname, "INTERRUPT") == 0)
- interrupt_tree = chainon (interrupt_tree, new);
-
- else
- return 0;
-
- return 1;
+
+ if (c_lex (&x) != CPP_CLOSE_PAREN)
+ BAD ("missing ')' for '#pragma %s' - ignored", name);
+
+ if (c_lex (&x) != CPP_EOF)
+ warning ("junk at end of '#pragma %s'", name);
+
+ *func = f;
+ return 0;
}
+void
+c4x_pr_CODE_SECTION (pfile)
+ cpp_reader *pfile ATTRIBUTE_UNUSED;
+{
+ tree func, sect;
+
+ if (c4x_parse_pragma ("CODE_SECTION", &func, &sect))
+ return;
+ code_tree = chainon (code_tree,
+ build_tree_list (func,
+ build_tree_list (NULL_TREE, sect)));
+}
+
+void
+c4x_pr_DATA_SECTION (pfile)
+ cpp_reader *pfile ATTRIBUTE_UNUSED;
+{
+ tree func, sect;
+
+ if (c4x_parse_pragma ("DATA_SECTION", &func, &sect))
+ return;
+ data_tree = chainon (data_tree,
+ build_tree_list (func,
+ build_tree_list (NULL_TREE, sect)));
+}
+
+void
+c4x_pr_FUNC_IS_PURE (pfile)
+ cpp_reader *pfile ATTRIBUTE_UNUSED;
+{
+ tree func;
+
+ if (c4x_parse_pragma ("FUNC_IS_PURE", &func, 0))
+ return;
+ pure_tree = chainon (pure_tree, build_tree_list (func, NULL_TREE));
+}
+
+void
+c4x_pr_FUNC_NEVER_RETURNS (pfile)
+ cpp_reader *pfile ATTRIBUTE_UNUSED;
+{
+ tree func;
+
+ if (c4x_parse_pragma ("FUNC_NEVER_RETURNS", &func, 0))
+ return;
+ noreturn_tree = chainon (noreturn_tree, build_tree_list (func, NULL_TREE));
+}
+
+void
+c4x_pr_INTERRUPT (pfile)
+ cpp_reader *pfile ATTRIBUTE_UNUSED;
+{
+ tree func;
+
+ if (c4x_parse_pragma ("INTERRUPT", &func, 0))
+ return;
+ interrupt_tree = chainon (interrupt_tree, build_tree_list (func, NULL_TREE));
+}
+
+/* Used for FUNC_CANNOT_INLINE, FUNC_EXT_CALLED, FUNC_IS_SYSTEM,
+ FUNC_NO_GLOBAL_ASG, and FUNC_NO_IND_ASG. */
+void
+c4x_pr_ignored (pfile)
+ cpp_reader *pfile ATTRIBUTE_UNUSED;
+{
+}
struct name_list
{
diff --git a/gcc/config/c4x/c4x.h b/gcc/config/c4x/c4x.h
index 7cc8169cbab..8390b38b586 100644
--- a/gcc/config/c4x/c4x.h
+++ b/gcc/config/c4x/c4x.h
@@ -2372,14 +2372,20 @@ asm_fprintf (FILE, "%s%d:\n", PREFIX, NUM)
#define PRINT_OPERAND_ADDRESS(FILE, X) c4x_print_operand_address(FILE, X)
-/* Define this macro if you want to implement any pragmas. If defined, it
- should be a C expression to be executed when #pragma is seen. The
- argument STREAM is the stdio input stream from which the source
- text can be read. CH is the first character after the #pragma. The
- result of the expression is the terminating character found
- (newline or EOF). */
-#define HANDLE_PRAGMA(GETC, UNGETC, NAME) \
- c4x_handle_pragma (GETC, UNGETC, NAME)
+/* C4x specific pragmas. */
+#define REGISTER_TARGET_PRAGMAS(PFILE) do { \
+ cpp_register_pragma (PFILE, 0, "CODE_SECTION", c4x_pr_CODE_SECTION); \
+ cpp_register_pragma (PFILE, 0, "DATA_SECTION", c4x_pr_DATA_SECTION); \
+ cpp_register_pragma (PFILE, 0, "FUNC_CANNOT_INLINE", c4x_pr_ignored); \
+ cpp_register_pragma (PFILE, 0, "FUNC_EXT_CALLED", c4x_pr_ignored); \
+ cpp_register_pragma (PFILE, 0, "FUNC_IS_PURE", c4x_pr_FUNC_IS_PURE); \
+ cpp_register_pragma (PFILE, 0, "FUNC_IS_SYSTEM", c4x_pr_ignored); \
+ cpp_register_pragma (PFILE, 0, "FUNC_NEVER_RETURNS", \
+ c4x_pr_FUNC_NEVER_RETURNS); \
+ cpp_register_pragma (PFILE, 0, "FUNC_NO_GLOBAL_ASG", c4x_pr_ignored); \
+ cpp_register_pragma (PFILE, 0, "FUNC_NO_IND_ASG", c4x_pr_ignored); \
+ cpp_register_pragma (PFILE, 0, "INTERRUPT", c4x_pr_INTERRUPT); \
+} while (0)
#define SET_DEFAULT_DECL_ATTRIBUTES(DECL, ATTRIBUTES) \
c4x_set_default_attributes (DECL, &ATTRIBUTES)
diff --git a/gcc/config/convex/convex.md b/gcc/config/convex/convex.md
index fc6ce66be23..c82169823bc 100644
--- a/gcc/config/convex/convex.md
+++ b/gcc/config/convex/convex.md
@@ -301,7 +301,7 @@
operands[1] = force_reg (SImode, operands[1]);")
(define_insn ""
- [(set (strict_low_part (match_operand:SI 0 "general_operand" "=d,r,d,r,r,m"))
+ [(set (strict_low_part (match_operand:SI 0 "general_operand" "+d,r,d,r,r,m"))
(match_operand:SI 1 "general_operand" "d,r,Q,m,i,r"))]
"register_operand (operands[0], SImode)
|| register_operand (operands[1], SImode)"
diff --git a/gcc/config/d30v/d30v.h b/gcc/config/d30v/d30v.h
index defdc496953..9a4d2a4c112 100644
--- a/gcc/config/d30v/d30v.h
+++ b/gcc/config/d30v/d30v.h
@@ -19,6 +19,8 @@
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
+#ifndef GCC_D30V_H
+
/* D30V specific macros */
/* Align an address */
@@ -5955,15 +5957,6 @@ fprintf (STREAM, "\t.word .L%d\n", VALUE)
is to pretend that the file's contents are enclosed in `extern "C" {...}'. */
/* #define NO_IMPLICIT_EXTERN_C */
-/* Define this macro if you want to implement any pragmas. If defined, it
- should be a C statement to be executed when `#pragma' is seen. The argument
- STREAM is the stdio input stream from which the source text can be read.
-
- It is generally a bad idea to implement new uses of `#pragma'. The only
- reason to define this macro is for compatibility with other compilers that
- do support `#pragma' for the sake of any user programs which already use it. */
-/* #define HANDLE_PRAGMA(STREAM) */
-
/* Define this macro to handle System V style pragmas (particularly #pack).
Defined in svr4.h. */
@@ -6081,3 +6074,5 @@ extern const char *d30v_cond_exec_string;
/* Indicate how many instructions can be issued at the same time. */
#define ISSUE_RATE 2
+
+#endif /* GCC_D30V_H */
diff --git a/gcc/config/fp-bit.c b/gcc/config/fp-bit.c
index 70a3f254ccd..5f88518982f 100644
--- a/gcc/config/fp-bit.c
+++ b/gcc/config/fp-bit.c
@@ -1169,6 +1169,38 @@ si_to_float (SItype arg_a)
}
#endif /* L_si_to_sf || L_si_to_df */
+#if defined(L_usi_to_sf) || defined(L_usi_to_df)
+FLO_type
+usi_to_float (USItype arg_a)
+{
+ fp_number_type in;
+
+ in.sign = 0;
+ if (!arg_a)
+ {
+ in.class = CLASS_ZERO;
+ }
+ else
+ {
+ in.class = CLASS_NUMBER;
+ in.normal_exp = FRACBITS + NGARDS;
+ in.fraction.ll = arg_a;
+
+ while (in.fraction.ll > (1LL << (FRACBITS + NGARDS)))
+ {
+ in.fraction.ll >>= 1;
+ in.normal_exp += 1;
+ }
+ while (in.fraction.ll < (1LL << (FRACBITS + NGARDS)))
+ {
+ in.fraction.ll <<= 1;
+ in.normal_exp -= 1;
+ }
+ }
+ return pack_d (&in);
+}
+#endif
+
#if defined(L_sf_to_si) || defined(L_df_to_si)
SItype
float_to_si (FLO_type arg_a)
diff --git a/gcc/config/fp-bit.h b/gcc/config/fp-bit.h
index 0a020e1f410..1eb134dadfa 100644
--- a/gcc/config/fp-bit.h
+++ b/gcc/config/fp-bit.h
@@ -66,6 +66,8 @@ Boston, MA 02111-1307, USA. */
#define L_le_df
#define L_unord_sf
#define L_unord_df
+#define L_usi_to_sf
+#define L_usi_to_df
#define L_si_to_sf
#define L_si_to_df
#define L_sf_to_si
@@ -193,6 +195,7 @@ typedef unsigned int UDItype __attribute__ ((mode (DI)));
# define _lt_f2 __ltsf2
# define _le_f2 __lesf2
# define _unord_f2 __unordsf2
+# define usi_to_float __floatunsisf
# define si_to_float __floatsisf
# define float_to_si __fixsfsi
# define float_to_usi __fixunssfsi
@@ -211,6 +214,7 @@ typedef unsigned int UDItype __attribute__ ((mode (DI)));
# define _lt_f2 __ltdf2
# define _le_f2 __ledf2
# define _unord_f2 __unorddf2
+# define usi_to_float __floatunsidf
# define si_to_float __floatsidf
# define float_to_si __fixdfsi
# define float_to_usi __fixunsdfsi
diff --git a/gcc/config/h8300/h8300-protos.h b/gcc/config/h8300/h8300-protos.h
index d8e4e69ffbb..1535b29c6f2 100644
--- a/gcc/config/h8300/h8300-protos.h
+++ b/gcc/config/h8300/h8300-protos.h
@@ -21,6 +21,9 @@ along with GNU CC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
+#ifndef GCC_H8300_PROTOS_H
+#define GCC_H8300_PROTOS_H
+
/* Declarations for functions used in insn-output.c. */
#ifdef RTX_CODE
extern const char *emit_a_shift PARAMS ((rtx, rtx *));
@@ -66,7 +69,6 @@ extern int h8300_tiny_data_p PARAMS ((tree));
extern void h8300_encode_label PARAMS ((tree));
#endif /* TREE_CODE */
-extern int handle_pragma PARAMS ((int (*)(void), void (*)(int), const char *));
extern void h8300_init_once PARAMS ((void));
extern void function_prologue PARAMS ((FILE *, int));
extern void function_epilogue PARAMS ((FILE *, int));
@@ -75,3 +77,10 @@ extern void asm_file_end PARAMS ((FILE *));
extern int ok_for_bclr PARAMS ((HOST_WIDE_INT));
extern int small_power_of_two PARAMS ((HOST_WIDE_INT));
extern int initial_offset PARAMS ((int, int));
+
+#ifdef _C_PRAGMA_H
+extern void h8300_pr_interrupt PARAMS ((cpp_reader *));
+extern void h8300_pr_saveall PARAMS ((cpp_reader *));
+#endif
+
+#endif /* GCC_H8300_PROTOS_H */
diff --git a/gcc/config/h8300/h8300.c b/gcc/config/h8300/h8300.c
index ec1432a1d8c..1ecda26af58 100644
--- a/gcc/config/h8300/h8300.c
+++ b/gcc/config/h8300/h8300.c
@@ -39,6 +39,7 @@ Boston, MA 02111-1307, USA. */
#include "function.h"
#include "obstack.h"
#include "toplev.h"
+#include "c-pragma.h"
#include "tm_p.h"
/* Forward declarations. */
@@ -730,22 +731,20 @@ eq_operator (x, mode)
an rte instruction rather than an rts. A pointer to a function
with this attribute may be safely used in an interrupt vector. */
-int
-handle_pragma (p_getc, p_ungetc, pname)
- int (* ATTRIBUTE_UNUSED p_getc) PARAMS ((void));
- void (* ATTRIBUTE_UNUSED p_ungetc) PARAMS ((int));
- const char *pname;
+void
+h8300_pr_interrupt (pfile)
+ cpp_reader *pfile ATTRIBUTE_UNUSED;
{
- int retval = 0;
-
- if (strcmp (pname, "interrupt") == 0)
- interrupt_handler = retval = 1;
- else if (strcmp (pname, "saveall") == 0)
- pragma_saveall = retval = 1;
+ interrupt_handler = 1;
+}
- return retval;
+void
+h8300_pr_saveall (pfile)
+ cpp_reader *pfile ATTRIBUTE_UNUSED;
+{
+ pragma_saveall = 1;
}
-
+
/* If the next arg with MODE and TYPE is to be passed in a register, return
the rtx to represent where it is passed. CUM represents the state after
the last argument. NAMED is not used. */
diff --git a/gcc/config/h8300/h8300.h b/gcc/config/h8300/h8300.h
index 707fb5ca6d8..55af2e297e1 100644
--- a/gcc/config/h8300/h8300.h
+++ b/gcc/config/h8300/h8300.h
@@ -22,6 +22,9 @@ along with GNU CC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
+#ifndef GCC_H8300_H
+#define GCC_H8300_H
+
/* Which CPU to compile for.
We use int for CPU_TYPE to avoid lots of casts. */
#if 0 /* defined in insn-attr.h, here for documentation */
@@ -80,14 +83,14 @@ extern int target_flags;
This is for debugging the compiler only. */
#define TARGET_RTL_DUMP (target_flags & 2048)
-/* Select between the h8/300 and h8/300h cpus. */
+/* Select between the H8/300 and H8/300H CPUs. */
#define TARGET_H8300 (! TARGET_H8300H && ! TARGET_H8300S)
#define TARGET_H8300H (target_flags & 4096)
#define TARGET_H8300S (target_flags & 1)
-/* Align all values on the h8/300h the same way as the h8/300. Specifically,
+/* Align all values on the H8/300H the same way as the H8/300. Specifically,
32 bit and larger values are aligned on 16 bit boundaries.
- This is all the hardware requires, but the default is 32 bits for the 300h.
+ This is all the hardware requires, but the default is 32 bits for the 300H.
??? Now watch someone add hardware floating point requiring 32 bit
alignment. */
#define TARGET_ALIGN_300 (target_flags & 8192)
@@ -1410,18 +1413,11 @@ do { char dstr[30]; \
#define PRINT_OPERAND_ADDRESS(FILE, ADDR) print_operand_address (FILE, ADDR)
-/* Define this macro if you want to implement any pragmas. If defined, it
- should be a C expression to be executed when #pragma is seen. The
- argument GETC is a function which will return the next character in the
- input stream, or EOF if no characters are left. The argument UNGETC is
- a function which will push a character back into the input stream. The
- argument NAME is the word following #pragma in the input stream. The input
- stream pointer will be pointing just beyond the end of this word. The
- expression should return true if it handled the pragma, false otherwise.
- The input stream should be left undistrubed if false is returned, otherwise
- it should be pointing at the last character after the end of the pragma
- (newline or end-of-file). */
-#define HANDLE_PRAGMA(GETC, UNGETC, NAME) handle_pragma (GETC, UNGETC, NAME)
+/* H8300 specific pragmas. */
+#define REGISTER_TARGET_PRAGMAS(PFILE) do { \
+ cpp_register_pragma (PFILE, 0, "saveall", h8300_pr_saveall); \
+ cpp_register_pragma (PFILE, 0, "interrupt", h8300_pr_interrupt); \
+} while (0)
#define FINAL_PRESCAN_INSN(insn, operand, nop) final_prescan_insn (insn, operand,nop)
@@ -1454,3 +1450,5 @@ do { char dstr[30]; \
} while (0)
#define MOVE_RATIO 3
+
+#endif /* GCC_H8300_H */
diff --git a/gcc/config/h8300/h8300.md b/gcc/config/h8300/h8300.md
index 1a3f662ce79..290b7addd4f 100644
--- a/gcc/config/h8300/h8300.md
+++ b/gcc/config/h8300/h8300.md
@@ -50,8 +50,8 @@
;; Long term, we want to expose the "e" half to the compiler (gives us
;; 8 more 16bit registers). At that point addhi and subhi can't use adds/subs.
-;; There's currently no way to have a insv/extzv expander for the h8/300h
-;; because word_mode is different for the h8/300 and h8/300h.
+;; There's currently no way to have a insv/extzv expander for the H8/300H
+;; because word_mode is different for the H8/300 and H8/300H.
;; Shifts/rotates by small constants should be handled by special
;; patterns so we get the length and cc status correct.
@@ -153,7 +153,7 @@
}")
(define_insn "movstrictqi"
- [(set (strict_low_part (match_operand:QI 0 "general_operand_dst" "=r,r,r,r"))
+ [(set (strict_low_part (match_operand:QI 0 "general_operand_dst" "+r,r,r,r"))
(match_operand:QI 1 "general_operand_src" "I,r,n,m"))]
""
"@
@@ -217,7 +217,7 @@
}")
(define_insn "movstricthi"
- [(set (strict_low_part (match_operand:HI 0 "general_operand_dst" "=r,r,r,r"))
+ [(set (strict_low_part (match_operand:HI 0 "general_operand_dst" "+r,r,r,r"))
(match_operand:HI 1 "general_operand_src" "I,r,i,m"))]
""
"@
@@ -561,7 +561,7 @@
"
{
/* Force operand1 into a register if we're compiling
- for the h8/300. */
+ for the H8/300. */
if (GET_CODE (operands[1]) != REG && TARGET_H8300)
operands[1] = force_reg (HImode, operands[1]);
}")
@@ -767,7 +767,7 @@
;; MULTIPLY INSTRUCTIONS
;; ----------------------------------------------------------------------
-;; Note that the h8/300 can only handle umulqihi3.
+;; Note that the H8/300 can only handle umulqihi3.
(define_insn "mulqihi3"
[(set (match_operand:HI 0 "register_operand" "=r")
@@ -1770,7 +1770,7 @@
;; this in both rtl and at insn emit time. Ideally, we'd use rtl as that would
;; give the optimizer more cracks at the code. However, we wish to do things
;; like optimizing shifting the sign bit to bit 0 by rotating the other way.
-;; There is rtl to handle this (rotate + and), but the h8/300 doesn't handle
+;; There is rtl to handle this (rotate + and), but the H8/300 doesn't handle
;; 16 bit rotates. Also, if we emit complicated rtl, combine may not be able
;; to detect cases it can optimize.
;;
diff --git a/gcc/config/h8300/lib1funcs.asm b/gcc/config/h8300/lib1funcs.asm
index 312e21d9d7c..41cb3bc9f55 100644
--- a/gcc/config/h8300/lib1funcs.asm
+++ b/gcc/config/h8300/lib1funcs.asm
@@ -1,8 +1,7 @@
-;; libgcc1 routines for the Hitachi h8/300 cpu.
-;; Contributed by Steve Chamberlain.
-;; sac@cygnus.com
+;; libgcc1 routines for the Hitachi H8/300 CPU.
+;; Contributed by Steve Chamberlain <sac@cygnus.com>
-/* Copyright (C) 1994 Free Software Foundation, Inc.
+/* Copyright (C) 1994, 2000 Free Software Foundation, Inc.
This file is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
diff --git a/gcc/config/i370/i370-protos.h b/gcc/config/i370/i370-protos.h
index 7e64acd8ed2..7ee1d3ff6e1 100644
--- a/gcc/config/i370/i370-protos.h
+++ b/gcc/config/i370/i370-protos.h
@@ -21,6 +21,9 @@ along with GNU CC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
+#ifndef GCC_I370_PROTOS_H
+#define GCC_I370_PROTOS_H
+
#ifdef RTX_CODE
extern int i370_branch_dest PARAMS ((rtx));
extern int i370_branch_length PARAMS ((rtx));
@@ -46,3 +49,9 @@ extern int mvs_check_alias PARAMS ((const char *, char *));
extern void i370_function_prolog PARAMS ((FILE *, int));
extern void check_label_emit PARAMS ((void));
extern void mvs_free_label_list PARAMS ((void));
+
+#ifdef _C_PRAGMA_H
+extern void i370_pr_map PARAMS ((cpp_reader *));
+#endif
+
+#endif
diff --git a/gcc/config/i370/i370.c b/gcc/config/i370/i370.c
index 2aa7d31ee25..73a78803e33 100644
--- a/gcc/config/i370/i370.c
+++ b/gcc/config/i370/i370.c
@@ -38,6 +38,9 @@ Boston, MA 02111-1307, USA. */
#include "flags.h"
#include "recog.h"
#include "toplev.h"
+#include "cpplib.h"
+#include "c-pragma.h"
+#include "c-lex.h"
#include "tm_p.h"
extern FILE *asm_out_file;
@@ -862,6 +865,17 @@ mvs_add_alias (realname, aliasname, emitted)
alias_node_t *ap;
ap = (alias_node_t *) xmalloc (sizeof (alias_node_t));
+ if (strlen (realname) > MAX_LONG_LABEL_SIZE)
+ {
+ warning ("real name is too long - alias ignored");
+ return;
+ }
+ if (strlen (aliasname) > MAX_MVS_LABEL_SIZE)
+ {
+ warning ("alias name is too long - alias ignored");
+ return;
+ }
+
strcpy (ap->real_name, realname);
strcpy (ap->alias_name, aliasname);
ap->alias_emitted = emitted;
@@ -1005,116 +1019,31 @@ mvs_check_alias (realname, aliasname)
return 0;
}
-/* Called from check_newline via the macro HANDLE_PRAGMA.
- p_getc is a pointer to get character routine.
- p_ungetc is a pointer to un-get character routine.
- pname is the pointer to the name of the pragma to process.
- The result is 1 if the pragma was handled. */
+/* #pragma map (name, alias) -
+ In this implementation both name and alias are required to be
+ identifiers. The older code seemed to be more permissive. Can
+ anyone clarify? */
-int
-handle_pragma (p_getc, p_ungetc, pname)
- int (* p_getc) PARAMS ((void));
- void (* p_ungetc) PARAMS ((int));
- const char *pname;
+void
+i370_pr_map (pfile)
+ cpp_reader *pfile ATTRIBUTE_UNUSED;
{
- int retval = 0;
- register int c;
+ tree name, alias, x;
- if (strcmp (pname, "map") == 0)
+ if (c_lex (&x) == CPP_OPEN_PAREN
+ && c_lex (&name) == CPP_NAME
+ && c_lex (&x) == CPP_COMMA
+ && c_lex (&alias) == CPP_NAME
+ && c_lex (&x) == CPP_CLOSE_PAREN)
{
- char realname[MAX_LONG_LABEL_SIZE + 1];
- char aliasname[MAX_MVS_LABEL_SIZE + 1];
- char *s;
+ if (c_lex (&x) != CPP_EOF)
+ warning ("junk at end of #pragma map");
- do {
- c = p_getc ();
- } while (c == ' ' || c == '\t');
-
- if (c == '(')
- {
- s = realname;
- do {
- c = p_getc ();
- } while (c == ' ' || c == '\t');
- if (c == '\n')
- goto PRAGMA_WARNING;
- do {
- *s++ = c;
- c = p_getc ();
- } while (ISALNUM(c) || c == '_');
- if (c == '\n')
- goto PRAGMA_WARNING;
- *s = 0;
-
- if (c == ' ' || c == '\t')
- do {
- c = p_getc ();
- } while (c == ' ' || c == '\t');
-
- if (c == ',')
- {
- do {
- c = p_getc ();
- } while (c == ' ' || c == '\t');
- if (c == '"')
- {
- s = aliasname;
- c = p_getc ();
- do {
- if (c == '\\')
- {
- int d = 0;
- do {
- c = p_getc ();
- if (c >= '0' && c <= '7')
- d = (d << 3) | (c - '0');
- } while (c >= '0' && c <= '7');
- p_ungetc (c);
- c = d;
- if (d < 1 || d > 255)
- warning ("Escape value out of range");
-#ifndef HOST_EBCDIC
- c = ebcasc[c];
-#endif
- }
- *s++ = c;
- c = p_getc ();
- if (ISSPACE(c) || c == ')')
- goto PRAGMA_WARNING;
- } while (c != '"');
- *s = 0;
- if (strlen (aliasname) > MAX_MVS_LABEL_SIZE)
- {
- warning ("#pragma map alias is too long, truncated");
- aliasname[MAX_MVS_LABEL_SIZE] = '\0';
- }
- do {
- c = p_getc ();
- } while (c == ' ' || c == '\t');
- if (c == ')')
- {
- mvs_add_alias (realname, aliasname, 1);
- retval = 1;
- }
- else
- goto PRAGMA_WARNING;
- }
- else
- goto PRAGMA_WARNING;
- }
- else
- goto PRAGMA_WARNING;
-
- }
- else
- {
- PRAGMA_WARNING:
- warning ("#pragma map options are missing or incorrect");
- }
-
+ mvs_add_alias (IDENTIFIER_POINTER (name), IDENTIFIER_POINTER (alias), 1);
+ return;
}
- return retval;
+ warning ("malformed #pragma map, ignored");
}
/* defines and functions specific to the HLASM assembler */
diff --git a/gcc/config/i370/i370.h b/gcc/config/i370/i370.h
index eccbcb6e56b..b7332830508 100644
--- a/gcc/config/i370/i370.h
+++ b/gcc/config/i370/i370.h
@@ -147,14 +147,9 @@ extern int mvs_function_name_length;
#endif
#ifdef TARGET_HLASM
-/* Define this macro if you want to implement any pragmas. If defined, it
- is a C expression to be executed when #pragma is seen. The
- argument FILE is the stdio input stream from which the source
- text can be read. CH is the first character after the #pragma. The
- result of the expression is the terminating character found
- (newline or EOF). */
-#define HANDLE_PRAGMA(GETC, UNGETC, NAME) \
- handle_pragma ((GETC), (UNGETC), (NAME))
+/* HLASM requires #pragma map. */
+#define REGISTER_TARGET_PRAGMAS(PFILE) \
+ cpp_register_pragma (PFILE, 0, "map", i370_pr_map)
#endif /* TARGET_HLASM */
/* Define maximum length of page minus page escape overhead. */
diff --git a/gcc/config/i370/i370.md b/gcc/config/i370/i370.md
index 3bdb025c2aa..33827e0d333 100644
--- a/gcc/config/i370/i370.md
+++ b/gcc/config/i370/i370.md
@@ -1065,7 +1065,7 @@ check_label_emit ();
;
(define_insn "movstrictqi"
- [(set (strict_low_part (match_operand:QI 0 "general_operand" "=d"))
+ [(set (strict_low_part (match_operand:QI 0 "general_operand" "+d"))
(match_operand:QI 1 "general_operand" "g"))]
""
"*
@@ -1087,7 +1087,7 @@ check_label_emit ();
;
(define_insn ""
- [(set (strict_low_part (match_operand:HI 0 "register_operand" "=d"))
+ [(set (strict_low_part (match_operand:HI 0 "register_operand" "+d"))
(match_operand:HI 1 "r_or_s_operand" "g"))]
""
"*
@@ -1110,7 +1110,7 @@ check_label_emit ();
)
(define_insn "movstricthi"
- [(set (strict_low_part (match_operand:HI 0 "general_operand" "=dm"))
+ [(set (strict_low_part (match_operand:HI 0 "general_operand" "+dm"))
(match_operand:HI 1 "general_operand" "d"))]
""
"*
@@ -2714,7 +2714,6 @@ check_label_emit ();
{
rtx dr = gen_reg_rtx (DImode);
rtx dr_0 = gen_rtx_SUBREG (SImode, dr, 0);
- rtx dr_1 = gen_rtx_SUBREG (SImode, dr, 1);
emit_insn (gen_rtx_SET (VOIDmode, dr_0, operands[1]));
@@ -4717,7 +4716,7 @@ check_label_emit ();
{
int i;
- emit_call_insn (gen_call (operands[0], const0_rtx, const0_rtx, const0_rtx));
+ emit_call_insn (GEN_CALL (operands[0], const0_rtx, const0_rtx, const0_rtx));
for (i = 0; i < XVECLEN (operands[2], 0); i++)
{
diff --git a/gcc/config/i386/i386-protos.h b/gcc/config/i386/i386-protos.h
index fb86b1b6f20..7ffb299ee88 100644
--- a/gcc/config/i386/i386-protos.h
+++ b/gcc/config/i386/i386-protos.h
@@ -51,11 +51,13 @@ extern int const1_operand PARAMS ((rtx, enum machine_mode));
extern int const248_operand PARAMS ((rtx, enum machine_mode));
extern int incdec_operand PARAMS ((rtx, enum machine_mode));
extern int reg_no_sp_operand PARAMS ((rtx, enum machine_mode));
+extern int mmx_reg_operand PARAMS ((rtx, enum machine_mode));
extern int general_no_elim_operand PARAMS ((rtx, enum machine_mode));
extern int nonmemory_no_elim_operand PARAMS ((rtx, enum machine_mode));
extern int q_regs_operand PARAMS ((rtx, enum machine_mode));
extern int non_q_regs_operand PARAMS ((rtx, enum machine_mode));
extern int no_comparison_operator PARAMS ((rtx, enum machine_mode));
+extern int sse_comparison_operator PARAMS ((rtx, enum machine_mode));
extern int fcmov_comparison_operator PARAMS ((rtx, enum machine_mode));
extern int uno_comparison_operator PARAMS ((rtx, enum machine_mode));
extern int cmp_fp_expander_operand PARAMS ((rtx, enum machine_mode));
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 2188b11d966..6667a128e63 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -1186,6 +1186,14 @@ reg_no_sp_operand (op, mode)
return register_operand (op, mode);
}
+int
+mmx_reg_operand (op, mode)
+ register rtx op;
+ enum machine_mode mode;
+{
+ return MMX_REG_P (op);
+}
+
/* Return false if this is any eliminable register. Otherwise
general_operand. */
@@ -1276,6 +1284,17 @@ no_comparison_operator (op, mode)
}
}
+/* Return 1 if OP is a comparison that can be used in the CMPSS/CMPPS
+ insns. */
+int
+sse_comparison_operator (op, mode)
+ rtx op;
+ enum machine_mode mode ATTRIBUTE_UNUSED;
+{
+ enum rtx_code code = GET_CODE (op);
+ return code == EQ || code == LT || code == LE || code == UNORDERED;
+}
+
/* Return 1 if OP is a comparison operator that can be issued by fcmov. */
int
diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
index ff396df357f..ab0b5369012 100644
--- a/gcc/config/i386/i386.h
+++ b/gcc/config/i386/i386.h
@@ -2584,6 +2584,7 @@ do { long l; \
{"const1_operand", {CONST_INT}}, \
{"const248_operand", {CONST_INT}}, \
{"incdec_operand", {CONST_INT}}, \
+ {"mmx_reg_operand", {REG}}, \
{"reg_no_sp_operand", {SUBREG, REG}}, \
{"general_no_elim_operand", {CONST_INT, CONST_DOUBLE, CONST, \
SYMBOL_REF, LABEL_REF, SUBREG, REG, MEM}}, \
@@ -2592,6 +2593,7 @@ do { long l; \
{"non_q_regs_operand", {SUBREG, REG}}, \
{"no_comparison_operator", {EQ, NE, LT, GE, LTU, GTU, LEU, GEU}}, \
{"fcmov_comparison_operator", {EQ, NE, LTU, GTU, LEU, GEU}}, \
+ {"sse_comparison_operator", {EQ, LT, LE, UNORDERED }}, \
{"uno_comparison_operator", {EQ, NE, LE, LT, GE, GT, LEU, LTU, GEU, \
GTU, UNORDERED, ORDERED}}, \
{"cmp_fp_expander_operand", {CONST_DOUBLE, SUBREG, REG, MEM}}, \
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 72fd72088c0..9bcd4e4219c 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -71,7 +71,25 @@
;; 9 This is an `fnstsw' operation.
;; 10 This is a `sahf' operation.
;; 11 This is a `fstcw' operation
-;;
+
+;; For SSE/MMX support:
+;; 30 This is `fix', guaranteed to be truncating.
+;; 31 This is a `emms' operation.
+;; 32 This is a `maskmov' operation.
+;; 33 This is a `movmsk' operation.
+;; 34 This is a `non-temporal' move.
+;; 35 This is a `prefetch' operation.
+;; 36 This is used to distinguish COMISS from UCOMISS.
+;; 37 This is a `ldmxcsr' operation.
+;; 38 This is a forced `movaps' instruction (rather than whatever movti does)
+;; 39 This is a forced `movups' instruction (rather than whatever movti does)
+;; 40 This is a `stmxcsr' operation.
+;; 41 This is a `shuffle' operation.
+;; 42 This is a `rcp' operation.
+;; 43 This is a `rsqsrt' operation.
+;; 44 This is a `sfence' operation.
+;; 45 This is a noop to prevent excessive combiner cleverness.
+
;; Insns whose names begin with "x86_" are emitted by gen_FOO calls
;; from i386.c.
@@ -84,7 +102,7 @@
;; A basic instruction type. Refinements due to arguments to be
;; provided in other attributes.
(define_attr "type"
- "other,multi,alu1,negnot,alu,icmp,test,imov,imovx,lea,incdec,ishift,imul,idiv,ibr,setcc,push,pop,call,callv,icmov,fmov,fop,fop1,fsgn,fmul,fdiv,fpspc,fcmov,fcmp,fxch,str,cld"
+ "other,multi,alu1,negnot,alu,icmp,test,imov,imovx,lea,incdec,ishift,imul,idiv,ibr,setcc,push,pop,call,callv,icmov,fmov,fop,fop1,fsgn,fmul,fdiv,fpspc,fcmov,fcmp,fxch,str,cld,sse,mmx"
(const_string "other"))
;; Main data type used by the insn
@@ -234,7 +252,7 @@
(const_string "store")
(match_operand 1 "memory_operand" "")
(const_string "load")
- (and (eq_attr "type" "!icmp,test,alu1,negnot,fop1,fsgn,imov,imovx,fmov,fcmp")
+ (and (eq_attr "type" "!icmp,test,alu1,negnot,fop1,fsgn,imov,imovx,fmov,fcmp,sse,mmx")
(match_operand 2 "memory_operand" ""))
(const_string "load")
(and (eq_attr "type" "icmov")
@@ -1530,15 +1548,19 @@
(set_attr "length_immediate" "1")])
(define_insn "*movsi_1"
- [(set (match_operand:SI 0 "nonimmediate_operand" "=*a,r,*a,m")
- (match_operand:SI 1 "general_operand" "im,rinm,rinm,rin"))]
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=*a,r,*a,m,!*y,!r")
+ (match_operand:SI 1 "general_operand" "im,rinm,rinm,rin,r,*y"))]
"GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM"
"*
{
switch (get_attr_type (insn))
{
+ case TYPE_MMX:
+ return \"movd\\t{%1, %0|%0, %1}\";
+
case TYPE_LEA:
return \"lea{l}\\t{%1, %0|%0, %1}\";
+
default:
if (flag_pic && SYMBOLIC_CONST (operands[1]))
abort();
@@ -1546,12 +1568,15 @@
}
}"
[(set (attr "type")
- (cond [(and (ne (symbol_ref "flag_pic") (const_int 0))
+ (cond [(ior (match_operand:SI 0 "mmx_reg_operand" "")
+ (match_operand:SI 1 "mmx_reg_operand" ""))
+ (const_string "mmx")
+ (and (ne (symbol_ref "flag_pic") (const_int 0))
(match_operand:SI 1 "symbolic_operand" ""))
(const_string "lea")
]
(const_string "imov")))
- (set_attr "modrm" "0,*,0,*")
+ (set_attr "modrm" "0,*,0,*,*,*")
(set_attr "mode" "SI")])
(define_insn "*swapsi"
@@ -1692,7 +1717,7 @@
(set_attr "mode" "HI")])
(define_insn "*movstricthi_xor"
- [(set (strict_low_part (match_operand:HI 0 "register_operand" "=r"))
+ [(set (strict_low_part (match_operand:HI 0 "register_operand" "+r"))
(match_operand:HI 1 "const0_operand" "i"))
(clobber (reg:CC 17))]
"reload_completed && (!TARGET_USE_MOV0 || optimize_size)"
@@ -1983,15 +2008,20 @@
"#")
(define_insn "*movdi_2"
- [(set (match_operand:DI 0 "nonimmediate_operand" "=r,o")
- (match_operand:DI 1 "general_operand" "riFo,riF"))]
+ [(set (match_operand:DI 0 "nonimmediate_operand" "=r,o,!m*y,!*y")
+ (match_operand:DI 1 "general_operand" "riFo,riF,*y,m"))]
"GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM"
- "#")
+ "@
+ #
+ #
+ movq\\t{%1, %0|%0, %1}
+ movq\\t{%1, %0|%0, %1}"
+ [(set_attr "type" "*,*,mmx,mmx")])
(define_split
[(set (match_operand:DI 0 "push_operand" "")
(match_operand:DI 1 "general_operand" ""))]
- "reload_completed"
+ "reload_completed && ! MMX_REG_P (operands[1])"
[(const_int 0)]
"if (!ix86_split_long_move (operands)) abort (); DONE;")
@@ -1999,7 +2029,7 @@
(define_split
[(set (match_operand:DI 0 "nonimmediate_operand" "")
(match_operand:DI 1 "general_operand" ""))]
- "reload_completed"
+ "reload_completed && ! MMX_REG_P (operands[0]) && ! MMX_REG_P (operands[1])"
[(set (match_dup 2) (match_dup 5))
(set (match_dup 3) (match_dup 6))]
"if (ix86_split_long_move (operands)) DONE;")
@@ -3967,10 +3997,55 @@
(set_attr "mode" "SI")])
(define_insn "*addsi_3"
+ [(set (reg 17)
+ (compare (neg:SI (match_operand:SI 2 "general_operand" "rmni"))
+ (match_operand:SI 1 "nonimmediate_operand" "%0")))
+ (clobber (match_scratch:SI 0 "=r"))]
+ "ix86_match_ccmode (insn, CCNOmode)
+ && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)
+ /* Current assemblers are broken and do not allow @GOTOFF in
+ ought but a memory context. */
+ && ! pic_symbolic_operand (operands[2], VOIDmode)"
+ "*
+{
+ switch (get_attr_type (insn))
+ {
+ case TYPE_INCDEC:
+ if (! rtx_equal_p (operands[0], operands[1]))
+ abort ();
+ if (operands[2] == const1_rtx)
+ return \"inc{l}\\t%0\";
+ else if (operands[2] == constm1_rtx)
+ return \"dec{l}\\t%0\";
+ else
+ abort();
+
+ default:
+ if (! rtx_equal_p (operands[0], operands[1]))
+ abort ();
+ /* Make things pretty and `subl $4,%eax' rather than `addl $-4, %eax'.
+ Exceptions: -128 encodes smaller than 128, so swap sign and op. */
+ if (GET_CODE (operands[2]) == CONST_INT
+ && (INTVAL (operands[2]) == 128
+ || (INTVAL (operands[2]) < 0
+ && INTVAL (operands[2]) != -128)))
+ {
+ operands[2] = GEN_INT (-INTVAL (operands[2]));
+ return \"sub{l}\\t{%2, %0|%0, %2}\";
+ }
+ return \"add{l}\\t{%2, %0|%0, %2}\";
+ }
+}"
+ [(set (attr "type")
+ (if_then_else (match_operand:SI 2 "incdec_operand" "")
+ (const_string "incdec")
+ (const_string "alu")))
+ (set_attr "mode" "SI")])
+
+(define_insn "*addsi_4"
[(set (reg:CC 17)
- (compare:CC (plus:SI (match_operand:SI 1 "nonimmediate_operand" "%0,0")
- (match_operand:SI 2 "general_operand" "rmni,rni"))
- (const_int 0)))
+ (compare:CC (neg:SI (match_operand:SI 2 "general_operand" "rmni,rni"))
+ (match_operand:SI 1 "nonimmediate_operand" "%0,0")))
(set (match_operand:SI 0 "nonimmediate_operand" "=r,rm")
(plus:SI (match_dup 1) (match_dup 2)))]
"ix86_binary_operator_ok (PLUS, SImode, operands)
@@ -3981,6 +4056,19 @@
[(set_attr "type" "alu")
(set_attr "mode" "SI")])
+(define_insn "*addsi_5"
+ [(set (reg:CC 17)
+ (compare:CC (neg:SI (match_operand:SI 2 "general_operand" "rmni"))
+ (match_operand:SI 1 "nonimmediate_operand" "%0")))
+ (clobber (match_scratch:SI 0 "=r"))]
+ "(GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)
+ /* Current assemblers are broken and do not allow @GOTOFF in
+ ought but a memory context. */
+ && ! pic_symbolic_operand (operands[2], VOIDmode)"
+ "add{l}\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "alu")
+ (set_attr "mode" "SI")])
+
(define_expand "addhi3"
[(parallel [(set (match_operand:HI 0 "nonimmediate_operand" "")
(plus:HI (match_operand:HI 1 "nonimmediate_operand" "")
@@ -4121,10 +4209,49 @@
(set_attr "mode" "HI")])
(define_insn "*addhi_3"
+ [(set (reg 17)
+ (compare (neg:HI (match_operand:HI 2 "general_operand" "rmni"))
+ (match_operand:HI 1 "nonimmediate_operand" "%0")))
+ (clobber (match_scratch:HI 0 "=r"))]
+ "ix86_match_ccmode (insn, CCNOmode)
+ && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
+ "*
+{
+ switch (get_attr_type (insn))
+ {
+ case TYPE_INCDEC:
+ if (operands[2] == const1_rtx)
+ return \"inc{w}\\t%0\";
+ else if (operands[2] == constm1_rtx
+ || (GET_CODE (operands[2]) == CONST_INT
+ && INTVAL (operands[2]) == 65535))
+ return \"dec{w}\\t%0\";
+ abort();
+
+ default:
+ /* Make things pretty and `subl $4,%eax' rather than `addl $-4, %eax'.
+ Exceptions: -128 encodes smaller than 128, so swap sign and op. */
+ if (GET_CODE (operands[2]) == CONST_INT
+ && (INTVAL (operands[2]) == 128
+ || (INTVAL (operands[2]) < 0
+ && INTVAL (operands[2]) != -128)))
+ {
+ operands[2] = GEN_INT (-INTVAL (operands[2]));
+ return \"sub{w}\\t{%2, %0|%0, %2}\";
+ }
+ return \"add{w}\\t{%2, %0|%0, %2}\";
+ }
+}"
+ [(set (attr "type")
+ (if_then_else (match_operand:HI 2 "incdec_operand" "")
+ (const_string "incdec")
+ (const_string "alu")))
+ (set_attr "mode" "HI")])
+
+(define_insn "*addhi_4"
[(set (reg:CC 17)
- (compare:CC (plus:HI (match_operand:HI 1 "nonimmediate_operand" "%0,0")
- (match_operand:HI 2 "general_operand" "rmni,rni"))
- (const_int 0)))
+ (compare:CC (neg:HI (match_operand:HI 2 "general_operand" "rmni,rni"))
+ (match_operand:HI 1 "nonimmediate_operand" "%0,0")))
(set (match_operand:HI 0 "nonimmediate_operand" "=r,rm")
(plus:HI (match_dup 1) (match_dup 2)))]
"ix86_binary_operator_ok (PLUS, HImode, operands)"
@@ -4132,6 +4259,16 @@
[(set_attr "type" "alu")
(set_attr "mode" "HI")])
+(define_insn "*addhi_5"
+ [(set (reg:CC 17)
+ (compare:CC (neg:HI (match_operand:HI 2 "general_operand" "rmni"))
+ (match_operand:HI 1 "nonimmediate_operand" "%0")))
+ (clobber (match_scratch:HI 0 "=r"))]
+ "(GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
+ "add{w}\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "alu")
+ (set_attr "mode" "HI")])
+
(define_expand "addqi3"
[(parallel [(set (match_operand:QI 0 "nonimmediate_operand" "")
(plus:QI (match_operand:QI 1 "nonimmediate_operand" "")
@@ -4280,10 +4417,46 @@
(set_attr "mode" "QI")])
(define_insn "*addqi_3"
+ [(set (reg 17)
+ (compare (neg:QI (match_operand:QI 2 "general_operand" "qmni"))
+ (match_operand:QI 1 "nonimmediate_operand" "%0")))
+ (clobber (match_scratch:QI 0 "=r"))]
+ "ix86_match_ccmode (insn, CCNOmode)
+ && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
+ "*
+{
+ switch (get_attr_type (insn))
+ {
+ case TYPE_INCDEC:
+ if (operands[2] == const1_rtx)
+ return \"inc{b}\\t%0\";
+ else if (operands[2] == constm1_rtx
+ || (GET_CODE (operands[2]) == CONST_INT
+ && INTVAL (operands[2]) == 255))
+ return \"dec{b}\\t%0\";
+ abort();
+
+ default:
+ /* Make things pretty and `subb $4,%al' rather than `addb $-4, %al'. */
+ if (GET_CODE (operands[2]) == CONST_INT
+ && INTVAL (operands[2]) < 0)
+ {
+ operands[2] = GEN_INT (-INTVAL (operands[2]));
+ return \"sub{b}\\t{%2, %0|%0, %2}\";
+ }
+ return \"add{b}\\t{%2, %0|%0, %2}\";
+ }
+}"
+ [(set (attr "type")
+ (if_then_else (match_operand:QI 2 "incdec_operand" "")
+ (const_string "incdec")
+ (const_string "alu")))
+ (set_attr "mode" "QI")])
+
+(define_insn "*addqi_4"
[(set (reg:CC 17)
- (compare:CC (plus:QI (match_operand:QI 1 "nonimmediate_operand" "%0,0")
- (match_operand:QI 2 "general_operand" "qmni,qni"))
- (const_int 0)))
+ (compare:CC (neg:QI (match_operand:QI 2 "general_operand" "qmni,qni"))
+ (match_operand:QI 1 "nonimmediate_operand" "%0,0")))
(set (match_operand:QI 0 "nonimmediate_operand" "=q,qm")
(plus:QI (match_dup 1) (match_dup 2)))]
"ix86_binary_operator_ok (PLUS, QImode, operands)"
@@ -4291,6 +4464,16 @@
[(set_attr "type" "alu")
(set_attr "mode" "QI")])
+(define_insn "*addqi_5"
+ [(set (reg:CC 17)
+ (compare:CC (neg:QI (match_operand:QI 2 "general_operand" "qmni"))
+ (match_operand:QI 1 "nonimmediate_operand" "%0")))
+ (clobber (match_scratch:QI 0 "=r"))]
+ "(GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
+ "add{b}\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "alu")
+ (set_attr "mode" "QI")])
+
(define_insn "addqi_ext_1"
[(set (zero_extract:SI (match_operand 0 "ext_register_operand" "=q")
@@ -4448,6 +4631,18 @@
(const_int 0)))
(set (match_operand:SI 0 "nonimmediate_operand" "=rm,r")
(minus:SI (match_dup 1) (match_dup 2)))]
+ "ix86_match_ccmode (insn, CCNOmode)
+ && ix86_binary_operator_ok (MINUS, SImode, operands)"
+ "sub{l}\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "alu")
+ (set_attr "mode" "SI")])
+
+(define_insn "*subsi_3"
+ [(set (reg 17)
+ (compare (match_operand:SI 1 "nonimmediate_operand" "0,0")
+ (match_operand:SI 2 "general_operand" "ri,rm")))
+ (set (match_operand:SI 0 "nonimmediate_operand" "=rm,r")
+ (minus:SI (match_dup 1) (match_dup 2)))]
"ix86_match_ccmode (insn, CCmode)
&& ix86_binary_operator_ok (MINUS, SImode, operands)"
"sub{l}\\t{%2, %0|%0, %2}"
@@ -4480,6 +4675,18 @@
(const_int 0)))
(set (match_operand:HI 0 "nonimmediate_operand" "=rm,r")
(minus:HI (match_dup 1) (match_dup 2)))]
+ "ix86_match_ccmode (insn, CCNOmode)
+ && ix86_binary_operator_ok (MINUS, HImode, operands)"
+ "sub{w}\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "alu")
+ (set_attr "mode" "HI")])
+
+(define_insn "*subhi_3"
+ [(set (reg 17)
+ (compare (match_operand:HI 1 "nonimmediate_operand" "0,0")
+ (match_operand:HI 2 "general_operand" "ri,rm")))
+ (set (match_operand:HI 0 "nonimmediate_operand" "=rm,r")
+ (minus:HI (match_dup 1) (match_dup 2)))]
"ix86_match_ccmode (insn, CCmode)
&& ix86_binary_operator_ok (MINUS, HImode, operands)"
"sub{w}\\t{%2, %0|%0, %2}"
@@ -4512,6 +4719,18 @@
(const_int 0)))
(set (match_operand:HI 0 "nonimmediate_operand" "=qm,q")
(minus:HI (match_dup 1) (match_dup 2)))]
+ "ix86_match_ccmode (insn, CCNOmode)
+ && ix86_binary_operator_ok (MINUS, QImode, operands)"
+ "sub{b}\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "alu")
+ (set_attr "mode" "QI")])
+
+(define_insn "*subqi_3"
+ [(set (reg 17)
+ (compare (match_operand:QI 1 "nonimmediate_operand" "0,0")
+ (match_operand:QI 2 "general_operand" "qi,qm")))
+ (set (match_operand:HI 0 "nonimmediate_operand" "=qm,q")
+ (minus:HI (match_dup 1) (match_dup 2)))]
"ix86_match_ccmode (insn, CCmode)
&& ix86_binary_operator_ok (MINUS, QImode, operands)"
"sub{b}\\t{%2, %0|%0, %2}"
@@ -5461,6 +5680,18 @@
[(set_attr "type" "alu")
(set_attr "mode" "SI")])
+(define_insn "*iorsi_3"
+ [(set (reg 17)
+ (compare (ior:SI (match_operand:SI 1 "nonimmediate_operand" "%0")
+ (match_operand:SI 2 "general_operand" "rim"))
+ (const_int 0)))
+ (clobber (match_scratch:SI 0 "=r"))]
+ "ix86_match_ccmode (insn, CCNOmode)
+ && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
+ "or{l}\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "alu")
+ (set_attr "mode" "SI")])
+
(define_expand "iorhi3"
[(set (match_operand:HI 0 "nonimmediate_operand" "")
(ior:HI (match_operand:HI 1 "nonimmediate_operand" "")
@@ -5492,6 +5723,18 @@
[(set_attr "type" "alu")
(set_attr "mode" "HI")])
+(define_insn "*iorhi_3"
+ [(set (reg 17)
+ (compare (ior:HI (match_operand:HI 1 "nonimmediate_operand" "%0")
+ (match_operand:HI 2 "general_operand" "rim"))
+ (const_int 0)))
+ (clobber (match_scratch:HI 0 "=r"))]
+ "ix86_match_ccmode (insn, CCNOmode)
+ && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
+ "or{w}\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "alu")
+ (set_attr "mode" "HI")])
+
(define_expand "iorqi3"
[(set (match_operand:QI 0 "nonimmediate_operand" "")
(ior:QI (match_operand:QI 1 "nonimmediate_operand" "")
@@ -5526,6 +5769,19 @@
"or{b}\\t{%2, %0|%0, %2}"
[(set_attr "type" "alu")
(set_attr "mode" "QI")])
+
+(define_insn "*iorqi_3"
+ [(set (reg 17)
+ (compare (ior:QI (match_operand:QI 1 "nonimmediate_operand" "%0")
+ (match_operand:QI 2 "general_operand" "qim"))
+ (const_int 0)))
+ (clobber (match_scratch:QI 0 "=r"))]
+ "ix86_match_ccmode (insn, CCNOmode)
+ && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
+ "or{b}\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "alu")
+ (set_attr "mode" "QI")])
+
;; Logical XOR instructions
@@ -5563,6 +5819,18 @@
[(set_attr "type" "alu")
(set_attr "mode" "SI")])
+(define_insn "*xorsi_3"
+ [(set (reg 17)
+ (compare (xor:SI (match_operand:SI 1 "nonimmediate_operand" "%0")
+ (match_operand:SI 2 "general_operand" "rim"))
+ (const_int 0)))
+ (clobber (match_scratch:SI 0 "=r"))]
+ "ix86_match_ccmode (insn, CCNOmode)
+ && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
+ "xor{l}\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "alu")
+ (set_attr "mode" "SI")])
+
(define_expand "xorhi3"
[(set (match_operand:HI 0 "nonimmediate_operand" "")
(xor:HI (match_operand:HI 1 "nonimmediate_operand" "")
@@ -5594,6 +5862,18 @@
[(set_attr "type" "alu")
(set_attr "mode" "HI")])
+(define_insn "*xorhi_3"
+ [(set (reg 17)
+ (compare (xor:HI (match_operand:HI 1 "nonimmediate_operand" "%0")
+ (match_operand:HI 2 "general_operand" "rim"))
+ (const_int 0)))
+ (clobber (match_scratch:HI 0 "=r"))]
+ "ix86_match_ccmode (insn, CCNOmode)
+ && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
+ "xor{w}\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "alu")
+ (set_attr "mode" "HI")])
+
(define_expand "xorqi3"
[(set (match_operand:QI 0 "nonimmediate_operand" "")
(xor:QI (match_operand:QI 1 "nonimmediate_operand" "")
@@ -5648,6 +5928,19 @@
[(set_attr "type" "alu")
(set_attr "mode" "QI")])
+(define_insn "*xorqi_cc_2"
+ [(set (reg 17)
+ (compare
+ (xor:QI (match_operand:QI 1 "nonimmediate_operand" "%0")
+ (match_operand:QI 2 "general_operand" "qim"))
+ (const_int 0)))
+ (clobber (match_scratch:QI 0 "=r"))]
+ "ix86_match_ccmode (insn, CCNOmode)
+ && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
+ "xor{b}\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "alu")
+ (set_attr "mode" "QI")])
+
(define_insn "xorqi_cc_ext_1"
[(set (reg:CCNO 17)
(compare:CCNO
@@ -7864,7 +8157,7 @@
[(set_attr "type" "setcc")
(set_attr "mode" "QI")])
-(define_insn "*setcc_4"
+(define_insn "setcc_4"
[(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+qm"))
(match_operator:QI 1 "uno_comparison_operator"
[(reg:CC 17) (const_int 0)]))]
@@ -11170,3 +11463,1579 @@
CODE_LABEL_NUMBER (operands[2]));
RET;
}")
+
+ ;; Pentium III SIMD instructions.
+
+;; Moves for SSE/MMX regs.
+
+(define_insn "movv4sf_internal"
+ [(set (match_operand:V4SF 0 "nonimmediate_operand" "=x,m")
+ (match_operand:V4SF 1 "general_operand" "xm,x"))]
+ "TARGET_SSE"
+ ;; @@@ let's try to use movaps here.
+ "movaps\\t{%1, %0|%0, %1}"
+ [(set_attr "type" "sse")])
+
+(define_insn "movv4si_internal"
+ [(set (match_operand:V4SI 0 "nonimmediate_operand" "=x,m")
+ (match_operand:V4SI 1 "general_operand" "xm,x"))]
+ "TARGET_SSE"
+ ;; @@@ let's try to use movaps here.
+ "movaps\\t{%1, %0|%0, %1}"
+ [(set_attr "type" "sse")])
+
+(define_insn "movv8qi_internal"
+ [(set (match_operand:V8QI 0 "nonimmediate_operand" "=y,m")
+ (match_operand:V8QI 1 "general_operand" "ym,y"))]
+ "TARGET_MMX"
+ "movq\\t{%1, %0|%0, %1}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "movv4hi_internal"
+ [(set (match_operand:V4HI 0 "nonimmediate_operand" "=y,m")
+ (match_operand:V4HI 1 "general_operand" "ym,y"))]
+ "TARGET_MMX"
+ "movq\\t{%1, %0|%0, %1}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "movv2si_internal"
+ [(set (match_operand:V2SI 0 "nonimmediate_operand" "=y,m")
+ (match_operand:V2SI 1 "general_operand" "ym,y"))]
+ "TARGET_MMX"
+ "movq\\t{%1, %0|%0, %1}"
+ [(set_attr "type" "mmx")])
+
+(define_expand "movti"
+ [(set (match_operand:TI 0 "general_operand" "")
+ (match_operand:TI 1 "general_operand" ""))]
+ "TARGET_SSE"
+ "
+{
+ /* For constants other than zero into memory. We do not know how the
+ instructions used to build constants modify the upper 64 bits
+ of the register, once we have that information we may be able
+ to handle some of them more efficiently. */
+ if ((reload_in_progress | reload_completed) == 0
+ && register_operand (operands[0], TImode)
+ && CONSTANT_P (operands[1]))
+ {
+ rtx addr = gen_reg_rtx (Pmode);
+
+ emit_move_insn (addr, XEXP (force_const_mem (TImode, operands[1]), 0));
+ operands[1] = gen_rtx_MEM (TImode, addr);
+ }
+
+ /* Make operand1 a register if it isn't already. */
+ if ((reload_in_progress | reload_completed) == 0
+ && !register_operand (operands[0], TImode)
+ && !register_operand (operands[1], TImode)
+ && operands[1] != CONST0_RTX (TImode))
+ {
+ rtx temp = force_reg (TImode, operands[1]);
+ emit_move_insn (operands[0], temp);
+ DONE;
+ }
+}")
+
+(define_expand "movv4sf"
+ [(set (match_operand:V4SF 0 "general_operand" "")
+ (match_operand:V4SF 1 "general_operand" ""))]
+ "TARGET_SSE"
+ "
+{
+ /* For constants other than zero into memory. We do not know how the
+ instructions used to build constants modify the upper 64 bits
+ of the register, once we have that information we may be able
+ to handle some of them more efficiently. */
+ if ((reload_in_progress | reload_completed) == 0
+ && register_operand (operands[0], V4SFmode)
+ && CONSTANT_P (operands[1]))
+ {
+ rtx addr = gen_reg_rtx (Pmode);
+
+ emit_move_insn (addr, XEXP (force_const_mem (V4SFmode, operands[1]), 0));
+ operands[1] = gen_rtx_MEM (V4SFmode, addr);
+ }
+
+ /* Make operand1 a register if it isn't already. */
+ if ((reload_in_progress | reload_completed) == 0
+ && !register_operand (operands[0], V4SFmode)
+ && !register_operand (operands[1], V4SFmode)
+ && operands[1] != CONST0_RTX (V4SFmode))
+ {
+ rtx temp = force_reg (V4SFmode, operands[1]);
+ emit_move_insn (operands[0], temp);
+ DONE;
+ }
+}")
+
+(define_expand "movv4si"
+ [(set (match_operand:V4SI 0 "general_operand" "")
+ (match_operand:V4SI 1 "general_operand" ""))]
+ "TARGET_MMX"
+ "
+{
+ /* For constants other than zero into memory. We do not know how the
+ instructions used to build constants modify the upper 64 bits
+ of the register, once we have that information we may be able
+ to handle some of them more efficiently. */
+ if ((reload_in_progress | reload_completed) == 0
+ && register_operand (operands[0], V4SImode)
+ && CONSTANT_P (operands[1]))
+ {
+ rtx addr = gen_reg_rtx (Pmode);
+
+ emit_move_insn (addr, XEXP (force_const_mem (V4SImode, operands[1]), 0));
+ operands[1] = gen_rtx_MEM (V4SImode, addr);
+ }
+
+ /* Make operand1 a register if it isn't already. */
+ if ((reload_in_progress | reload_completed) == 0
+ && !register_operand (operands[0], V4SImode)
+ && !register_operand (operands[1], V4SImode)
+ && operands[1] != CONST0_RTX (V4SImode))
+ {
+ rtx temp = force_reg (V4SImode, operands[1]);
+ emit_move_insn (operands[0], temp);
+ DONE;
+ }
+}")
+
+(define_expand "movv2si"
+ [(set (match_operand:V2SI 0 "general_operand" "")
+ (match_operand:V2SI 1 "general_operand" ""))]
+ "TARGET_MMX"
+ "
+{
+ /* For constants other than zero into memory. We do not know how the
+ instructions used to build constants modify the upper 64 bits
+ of the register, once we have that information we may be able
+ to handle some of them more efficiently. */
+ if ((reload_in_progress | reload_completed) == 0
+ && register_operand (operands[0], V2SImode)
+ && CONSTANT_P (operands[1]))
+ {
+ rtx addr = gen_reg_rtx (Pmode);
+
+ emit_move_insn (addr, XEXP (force_const_mem (V2SImode, operands[1]), 0));
+ operands[1] = gen_rtx_MEM (V2SImode, addr);
+ }
+
+ /* Make operand1 a register if it isn't already. */
+ if ((reload_in_progress | reload_completed) == 0
+ && !register_operand (operands[0], V2SImode)
+ && !register_operand (operands[1], V2SImode)
+ && operands[1] != CONST0_RTX (V2SImode))
+ {
+ rtx temp = force_reg (V2SImode, operands[1]);
+ emit_move_insn (operands[0], temp);
+ DONE;
+ }
+}")
+
+(define_expand "movv4hi"
+ [(set (match_operand:V4HI 0 "general_operand" "")
+ (match_operand:V4HI 1 "general_operand" ""))]
+ "TARGET_MMX"
+ "
+{
+ /* For constants other than zero into memory. We do not know how the
+ instructions used to build constants modify the upper 64 bits
+ of the register, once we have that information we may be able
+ to handle some of them more efficiently. */
+ if ((reload_in_progress | reload_completed) == 0
+ && register_operand (operands[0], V4HImode)
+ && CONSTANT_P (operands[1]))
+ {
+ rtx addr = gen_reg_rtx (Pmode);
+
+ emit_move_insn (addr, XEXP (force_const_mem (V4HImode, operands[1]), 0));
+ operands[1] = gen_rtx_MEM (V4HImode, addr);
+ }
+
+ /* Make operand1 a register if it isn't already. */
+ if ((reload_in_progress | reload_completed) == 0
+ && !register_operand (operands[0], V4HImode)
+ && !register_operand (operands[1], V4HImode)
+ && operands[1] != CONST0_RTX (V4HImode))
+ {
+ rtx temp = force_reg (V4HImode, operands[1]);
+ emit_move_insn (operands[0], temp);
+ DONE;
+ }
+}")
+
+(define_expand "movv8qi"
+ [(set (match_operand:V8QI 0 "general_operand" "")
+ (match_operand:V8QI 1 "general_operand" ""))]
+ "TARGET_MMX"
+ "
+{
+ /* For constants other than zero into memory. We do not know how the
+ instructions used to build constants modify the upper 64 bits
+ of the register, once we have that information we may be able
+ to handle some of them more efficiently. */
+ if ((reload_in_progress | reload_completed) == 0
+ && register_operand (operands[0], V8QImode)
+ && CONSTANT_P (operands[1]))
+ {
+ rtx addr = gen_reg_rtx (Pmode);
+
+ emit_move_insn (addr, XEXP (force_const_mem (V8QImode, operands[1]), 0));
+ operands[1] = gen_rtx_MEM (V8QImode, addr);
+ }
+
+ /* Make operand1 a register if it isn't already. */
+ if ((reload_in_progress | reload_completed) == 0
+ && !register_operand (operands[0], V8QImode)
+ && !register_operand (operands[1], V8QImode)
+ && operands[1] != CONST0_RTX (V8QImode))
+ {
+ rtx temp = force_reg (V8QImode, operands[1]);
+ emit_move_insn (operands[0], temp);
+ DONE;
+ }
+}")
+
+(define_insn_and_split "*pushti"
+ [(set (match_operand:TI 0 "push_operand" "=<")
+ (match_operand:TI 1 "nonmemory_operand" "x"))]
+ "TARGET_SSE"
+ "#"
+ ""
+ [(set (reg:SI 7) (plus:SI (reg:SI 7) (const_int -16)))
+ (set (mem:TI (reg:SI 7)) (match_dup 1))]
+ ""
+ [(set_attr "type" "sse")])
+
+(define_insn_and_split "*pushv4sf"
+ [(set (match_operand:V4SF 0 "push_operand" "=<")
+ (match_operand:V4SF 1 "nonmemory_operand" "x"))]
+ "TARGET_SSE"
+ "#"
+ ""
+ [(set (reg:SI 7) (plus:SI (reg:SI 7) (const_int -16)))
+ (set (mem:V4SF (reg:SI 7)) (match_dup 1))]
+ ""
+ [(set_attr "type" "sse")])
+
+(define_insn_and_split "*pushv4si"
+ [(set (match_operand:V4SI 0 "push_operand" "=<")
+ (match_operand:V4SI 1 "nonmemory_operand" "x"))]
+ "TARGET_SSE"
+ "#"
+ ""
+ [(set (reg:SI 7) (plus:SI (reg:SI 7) (const_int -16)))
+ (set (mem:V4SI (reg:SI 7)) (match_dup 1))]
+ ""
+ [(set_attr "type" "sse")])
+
+(define_insn_and_split "*pushv2si"
+ [(set (match_operand:V2SI 0 "push_operand" "=<")
+ (match_operand:V2SI 1 "nonmemory_operand" "y"))]
+ "TARGET_MMX"
+ "#"
+ ""
+ [(set (reg:SI 7) (plus:SI (reg:SI 7) (const_int -8)))
+ (set (mem:V2SI (reg:SI 7)) (match_dup 1))]
+ ""
+ [(set_attr "type" "mmx")])
+
+(define_insn_and_split "*pushv4hi"
+ [(set (match_operand:V4HI 0 "push_operand" "=<")
+ (match_operand:V4HI 1 "nonmemory_operand" "y"))]
+ "TARGET_MMX"
+ "#"
+ ""
+ [(set (reg:SI 7) (plus:SI (reg:SI 7) (const_int -8)))
+ (set (mem:V4HI (reg:SI 7)) (match_dup 1))]
+ ""
+ [(set_attr "type" "mmx")])
+
+(define_insn_and_split "*pushv8qi"
+ [(set (match_operand:V8QI 0 "push_operand" "=<")
+ (match_operand:V8QI 1 "nonmemory_operand" "y"))]
+ "TARGET_MMX"
+ "#"
+ ""
+ [(set (reg:SI 7) (plus:SI (reg:SI 7) (const_int -8)))
+ (set (mem:V8QI (reg:SI 7)) (match_dup 1))]
+ ""
+ [(set_attr "type" "mmx")])
+
+(define_insn "movti_internal"
+ [(set (match_operand:TI 0 "nonimmediate_operand" "=x,m")
+ (match_operand:TI 1 "general_operand" "xm,x"))]
+ "TARGET_SSE"
+ "@
+ movaps\\t{%1, %0|%0, %1}
+ movaps\\t{%1, %0|%0, %1}"
+ [(set_attr "type" "sse")])
+
+;; These two patterns are useful for specifying exactly whether to use
+;; movaps or movups
+(define_insn "sse_movaps"
+ [(set (match_operand:V4SF 0 "nonimmediate_operand" "=x,m")
+ (unspec:V4SF [(match_operand:V4SF 1 "general_operand" "xm,x")] 38))]
+ "TARGET_SSE"
+ "@
+ movaps\\t{%1, %0|%0, %1}
+ movaps\\t{%1, %0|%0, %1}"
+ [(set_attr "type" "sse")])
+
+(define_insn "sse_movups"
+ [(set (match_operand:V4SF 0 "nonimmediate_operand" "=x,m")
+ (unspec:V4SF [(match_operand:V4SF 1 "general_operand" "xm,x")] 39))]
+ "TARGET_SSE"
+ "@
+ movups\\t{%1, %0|%0, %1}
+ movups\\t{%1, %0|%0, %1}"
+ [(set_attr "type" "sse")])
+
+
+;; SSE Strange Moves.
+
+(define_insn "sse_movmskps"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:V4SF 1 "register_operand" "x")] 33))]
+ "TARGET_SSE"
+ "movmskps\\t{%1, %0|%0, %1}"
+ [(set_attr "type" "sse")])
+
+(define_insn "mmx_pmovmskb"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:V8QI 1 "register_operand" "y")] 33))]
+ "TARGET_SSE"
+ "pmovmskb\\t{%1, %0|%0, %1}"
+ [(set_attr "type" "sse")])
+
+(define_insn "mmx_maskmovq"
+ [(set (mem:V8QI (match_operand:SI 0 "register_operand" "D"))
+ (unspec:V8QI [(match_operand:V8QI 1 "register_operand" "y")
+ (match_operand:V8QI 2 "register_operand" "y")] 32))]
+ "TARGET_SSE"
+ ;; @@@ check ordering of operands in intel/nonintel syntax
+ "maskmovq\\t{%2, %1|%1, %2}"
+ [(set_attr "type" "sse")])
+
+(define_insn "sse_movntv4sf"
+ [(set (match_operand:V4SF 0 "memory_operand" "=m")
+ (unspec:V4SF [(match_operand:V4SF 1 "register_operand" "x")] 34))]
+ "TARGET_SSE"
+ "movntps\\t{%1, %0|%0, %1}"
+ [(set_attr "type" "sse")])
+
+(define_insn "sse_movntdi"
+ [(set (match_operand:DI 0 "memory_operand" "=m")
+ (unspec:DI [(match_operand:DI 1 "register_operand" "x")] 34))]
+ "TARGET_SSE"
+ "movntq\\t{%1, %0|%0, %1}"
+ [(set_attr "type" "sse")])
+
+(define_insn "sse_movhlps"
+ [(set (match_operand:V4SF 0 "register_operand" "=x")
+ (vec_merge:V4SF
+ (match_operand:V4SF 1 "register_operand" "0")
+ (vec_select:V4SF (match_operand:V4SF 2 "register_operand" "x")
+ (parallel [(const_int 2)
+ (const_int 3)
+ (const_int 0)
+ (const_int 1)]))
+ (const_int 3)))]
+ "TARGET_SSE"
+ "movhlps\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
+
+(define_insn "sse_movlhps"
+ [(set (match_operand:V4SF 0 "register_operand" "=x")
+ (vec_merge:V4SF
+ (match_operand:V4SF 1 "register_operand" "0")
+ (vec_select:V4SF (match_operand:V4SF 2 "register_operand" "x")
+ (parallel [(const_int 2)
+ (const_int 3)
+ (const_int 0)
+ (const_int 1)]))
+ (const_int 12)))]
+ "TARGET_SSE"
+ "movlhps\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
+
+(define_insn "sse_movhps"
+ [(set (match_operand:V4SF 0 "nonimmediate_operand" "=x,m")
+ (vec_merge:V4SF
+ (match_operand:V4SF 1 "nonimmediate_operand" "0,0")
+ (match_operand:V4SF 2 "nonimmediate_operand" "m,x")
+ (const_int 12)))]
+ "TARGET_SSE && (GET_CODE (operands[1]) == MEM || GET_CODE (operands[2]) == MEM)"
+ "movhps\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
+
+(define_insn "sse_movlps"
+ [(set (match_operand:V4SF 0 "nonimmediate_operand" "=x,m")
+ (vec_merge:V4SF
+ (match_operand:V4SF 1 "nonimmediate_operand" "0,0")
+ (match_operand:V4SF 2 "nonimmediate_operand" "m,x")
+ (const_int 3)))]
+ "TARGET_SSE && (GET_CODE (operands[1]) == MEM || GET_CODE (operands[2]) == MEM)"
+ "movlps\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
+
+(define_insn "sse_loadss"
+ [(set (match_operand:V4SF 0 "register_operand" "=x")
+ (vec_merge:V4SF
+ (match_operand:V4SF 1 "memory_operand" "m")
+ (vec_duplicate:V4SF (float:SF (const_int 0)))
+ (const_int 1)))]
+ "TARGET_SSE"
+ "movss\\t{%1, %0|%0, %1}"
+ [(set_attr "type" "sse")])
+
+(define_insn "sse_movss"
+ [(set (match_operand:V4SF 0 "register_operand" "=x")
+ (vec_merge:V4SF
+ (match_operand:V4SF 1 "register_operand" "0")
+ (match_operand:V4SF 2 "register_operand" "x")
+ (const_int 1)))]
+ "TARGET_SSE"
+ "movss\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
+
+(define_insn "sse_storess"
+ [(set (match_operand:SF 0 "memory_operand" "=m")
+ (vec_select:SF
+ (match_operand:V4SF 1 "register_operand" "x")
+ (parallel [(const_int 0)])))]
+ "TARGET_SSE"
+ "movss\\t{%1, %0|%0, %1}"
+ [(set_attr "type" "sse")])
+
+(define_insn "sse_shufps"
+ [(set (match_operand:V4SF 0 "register_operand" "=x")
+ (unspec:V4SF [(match_operand:V4SF 1 "register_operand" "0")
+ (match_operand:V4SF 2 "nonimmediate_operand" "xm")
+ (match_operand:SI 3 "immediate_operand" "i")] 41))]
+ "TARGET_SSE"
+ ;; @@@ check operand order for intel/nonintel syntax
+ "shufps\\t{%3, %2, %0|%0, %2, %3}"
+ [(set_attr "type" "sse")])
+
+
+;; SSE arithmetic
+
+(define_insn "addv4sf3"
+ [(set (match_operand:V4SF 0 "register_operand" "=x")
+ (plus:V4SF (match_operand:V4SF 1 "register_operand" "0")
+ (match_operand:V4SF 2 "nonimmediate_operand" "xm")))]
+ "TARGET_SSE"
+ "addps\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
+
+(define_insn "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"))
+ (match_dup 1)
+ (const_int 1)))]
+ "TARGET_SSE"
+ "addss\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
+
+(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}"
+ [(set_attr "type" "sse")])
+
+(define_insn "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"))
+ (match_dup 1)
+ (const_int 1)))]
+ "TARGET_SSE"
+ "subss\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
+
+(define_insn "mulv4sf3"
+ [(set (match_operand:V4SF 0 "register_operand" "=x")
+ (mult:V4SF (match_operand:V4SF 1 "register_operand" "0")
+ (match_operand:V4SF 2 "nonimmediate_operand" "xm")))]
+ "TARGET_SSE"
+ "mulps\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
+
+(define_insn "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"))
+ (match_dup 1)
+ (const_int 1)))]
+ "TARGET_SSE"
+ "mulss\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
+
+(define_insn "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}"
+ [(set_attr "type" "sse")])
+
+(define_insn "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"))
+ (match_dup 1)
+ (const_int 1)))]
+ "TARGET_SSE"
+ "divss\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
+
+
+;; SSE square root/reciprocal
+
+(define_insn "rcpv4sf2"
+ [(set (match_operand:V4SF 0 "register_operand" "=x")
+ (unspec:V4SF [(match_operand:V4SF 1 "register_operand" "xm")] 42))]
+ "TARGET_SSE"
+ "rcpps\\t{%1, %0|%0, %1}"
+ [(set_attr "type" "sse")])
+
+(define_insn "vmrcpv4sf2"
+ [(set (match_operand:V4SF 0 "register_operand" "=x")
+ (vec_merge:V4SF (unspec:V4SF [(match_operand:V4SF 1 "register_operand" "xm")] 42)
+ (match_operand:V4SF 2 "register_operand" "0")
+ (const_int 1)))]
+ "TARGET_SSE"
+ "rcpss\\t{%1, %0|%0, %1}"
+ [(set_attr "type" "sse")])
+
+(define_insn "rsqrtv4sf2"
+ [(set (match_operand:V4SF 0 "register_operand" "=x")
+ (unspec:V4SF [(match_operand:V4SF 1 "register_operand" "xm")] 43))]
+ "TARGET_SSE"
+ "rsqrtps\\t{%1, %0|%0, %1}"
+ [(set_attr "type" "sse")])
+
+(define_insn "vmrsqrtv4sf2"
+ [(set (match_operand:V4SF 0 "register_operand" "=x")
+ (vec_merge:V4SF (unspec:V4SF [(match_operand:V4SF 1 "register_operand" "xm")] 43)
+ (match_operand:V4SF 2 "register_operand" "0")
+ (const_int 1)))]
+ "TARGET_SSE"
+ "rsqrtss\\t{%1, %0|%0, %1}"
+ [(set_attr "type" "sse")])
+
+(define_insn "sqrtv4sf2"
+ [(set (match_operand:V4SF 0 "register_operand" "=x")
+ (sqrt:V4SF (match_operand:V4SF 1 "register_operand" "xm")))]
+ "TARGET_SSE"
+ "sqrtps\\t{%1, %0|%0, %1}"
+ [(set_attr "type" "sse")])
+
+(define_insn "vmsqrtv4sf2"
+ [(set (match_operand:V4SF 0 "register_operand" "=x")
+ (vec_merge:V4SF (sqrt:V4SF (match_operand:V4SF 1 "register_operand" "xm"))
+ (match_operand:V4SF 2 "register_operand" "0")
+ (const_int 1)))]
+ "TARGET_SSE"
+ "sqrtss\\t{%1, %0|%0, %1}"
+ [(set_attr "type" "sse")])
+
+
+;; SSE logical operations.
+
+;; These are not called andti3 etc. because we really really don't want
+;; the compiler to widen DImode ands to TImode ands and then try to move
+;; into DImode subregs of SSE registers, and them together, and move out
+;; of DImode subregs again!
+
+(define_insn "sse_andti3"
+ [(set (match_operand:TI 0 "register_operand" "=x")
+ (and:TI (match_operand:TI 1 "register_operand" "0")
+ (match_operand:TI 2 "nonimmediate_operand" "xm")))]
+ "TARGET_SSE"
+ "andps\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
+
+(define_insn "sse_nandti3"
+ [(set (match_operand:TI 0 "register_operand" "=x")
+ (and:TI (not:TI (match_operand:TI 1 "register_operand" "0"))
+ (match_operand:TI 2 "nonimmediate_operand" "xm")))]
+ "TARGET_SSE"
+ "andnps\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
+
+(define_insn "sse_iorti3"
+ [(set (match_operand:TI 0 "register_operand" "=x")
+ (ior:TI (match_operand:TI 1 "register_operand" "0")
+ (match_operand:TI 2 "nonimmediate_operand" "xm")))]
+ "TARGET_SSE"
+ "iorps\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
+
+(define_insn "sse_xorti3"
+ [(set (match_operand:TI 0 "register_operand" "=x")
+ (xor:TI (match_operand:TI 1 "register_operand" "0")
+ (match_operand:TI 2 "nonimmediate_operand" "xm")))]
+ "TARGET_SSE"
+ "xorps\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
+
+;; Use xor, but don't show input operands so they aren't live before
+;; this insn.
+(define_insn "sse_clrti"
+ [(set (match_operand:TI 0 "register_operand" "=x")
+ (unspec:TI [(const_int 0)] 45))]
+ "TARGET_SSE"
+ "xorps\\t{%0, %0|%0, %0}"
+ [(set_attr "type" "sse")])
+
+
+;; SSE mask-generating compares
+
+(define_insn "maskcmpv4sf3"
+ [(set (match_operand:V4SI 0 "register_operand" "=x")
+ (match_operator:V4SI 3 "sse_comparison_operator"
+ [(match_operand:V4SF 1 "register_operand" "0")
+ (match_operand:V4SF 2 "nonimmediate_operand" "x")]))]
+ "TARGET_SSE"
+ "*
+{
+ switch (GET_CODE (operands[3]))
+ {
+ case EQ:
+ return \"cmpeqps\\t{%2, %0|%0, %2}\";
+ case LT:
+ return \"cmpltps\\t{%2, %0|%0, %2}\";
+ case LE:
+ return \"cmpleps\\t{%2, %0|%0, %2}\";
+ case UNORDERED:
+ return \"cmpunordps\\t{%2, %0|%0, %2}\";
+ default:
+ abort ();
+ }
+}"
+ [(set_attr "type" "sse")])
+
+(define_insn "maskncmpv4sf3"
+ [(set (match_operand:V4SI 0 "register_operand" "=x")
+ (not:V4SI
+ (match_operator:V4SI 3 "sse_comparison_operator"
+ [(match_operand:V4SF 1 "register_operand" "0")
+ (match_operand:V4SF 2 "nonimmediate_operand" "x")])))]
+ "TARGET_SSE"
+ "*
+{
+ switch (GET_CODE (operands[3]))
+ {
+ case EQ:
+ return \"cmpneqps\\t{%2, %0|%0, %2}\";
+ case LT:
+ return \"cmpnltps\\t{%2, %0|%0, %2}\";
+ case LE:
+ return \"cmpnleps\\t{%2, %0|%0, %2}\";
+ case UNORDERED:
+ return \"cmpordps\\t{%2, %0|%0, %2}\";
+ default:
+ abort ();
+ }
+}"
+ [(set_attr "type" "sse")])
+
+(define_insn "vmmaskcmpv4sf3"
+ [(set (match_operand:V4SI 0 "register_operand" "=x")
+ (vec_merge:V4SI
+ (match_operator:V4SI 3 "sse_comparison_operator"
+ [(match_operand:V4SF 1 "register_operand" "0")
+ (match_operand:V4SF 2 "nonimmediate_operand" "x")])
+ (match_dup 1)
+ (const_int 1)))]
+ "TARGET_SSE"
+ "*
+{
+ switch (GET_CODE (operands[3]))
+ {
+ case EQ:
+ return \"cmpeqss\\t{%2, %0|%0, %2}\";
+ case LT:
+ return \"cmpltss\\t{%2, %0|%0, %2}\";
+ case LE:
+ return \"cmpless\\t{%2, %0|%0, %2}\";
+ case UNORDERED:
+ return \"cmpunordss\\t{%2, %0|%0, %2}\";
+ default:
+ abort ();
+ }
+}"
+ [(set_attr "type" "sse")])
+
+(define_insn "vmmaskncmpv4sf3"
+ [(set (match_operand:V4SI 0 "register_operand" "=x")
+ (vec_merge:V4SI
+ (not:V4SI
+ (match_operator:V4SI 3 "sse_comparison_operator"
+ [(match_operand:V4SF 1 "register_operand" "0")
+ (match_operand:V4SF 2 "nonimmediate_operand" "x")]))
+ (subreg:V4SI (match_dup 1) 0)
+ (const_int 1)))]
+ "TARGET_SSE"
+ "*
+{
+ switch (GET_CODE (operands[3]))
+ {
+ case EQ:
+ return \"cmpneqss\\t{%2, %0|%0, %2}\";
+ case LT:
+ return \"cmpnltss\\t{%2, %0|%0, %2}\";
+ case LE:
+ return \"cmpnless\\t{%2, %0|%0, %2}\";
+ case UNORDERED:
+ return \"cmpordss\\t{%2, %0|%0, %2}\";
+ default:
+ abort ();
+ }
+}"
+ [(set_attr "type" "sse")])
+
+(define_insn "sse_comi"
+ [(set (reg:CCFP 17)
+ (match_operator:CCFP 2 "sse_comparison_operator"
+ [(vec_select:SF
+ (match_operand:V4SF 0 "register_operand" "x")
+ (parallel [(const_int 0)]))
+ (vec_select:SF
+ (match_operand:V4SF 1 "register_operand" "x")
+ (parallel [(const_int 0)]))]))]
+ "TARGET_SSE"
+ "comiss\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
+
+(define_insn "sse_ucomi"
+ [(set (reg:CCFPU 17)
+ (match_operator:CCFPU 2 "sse_comparison_operator"
+ [(vec_select:SF
+ (match_operand:V4SF 0 "register_operand" "x")
+ (parallel [(const_int 0)]))
+ (vec_select:SF
+ (match_operand:V4SF 1 "register_operand" "x")
+ (parallel [(const_int 0)]))]))]
+ "TARGET_SSE"
+ "ucomiss\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
+
+
+;; SSE unpack
+
+(define_insn "sse_unpckhps"
+ [(set (match_operand:V4SF 0 "register_operand" "=x")
+ (vec_merge:V4SF
+ (vec_select:V4SF (match_operand:V4SF 1 "register_operand" "0")
+ (parallel [(const_int 2)
+ (const_int 0)
+ (const_int 3)
+ (const_int 1)]))
+ (vec_select:V8QI (match_operand:V8QI 2 "register_operand" "x")
+ (parallel [(const_int 0)
+ (const_int 2)
+ (const_int 1)
+ (const_int 3)]))
+ (const_int 5)))]
+ "TARGET_SSE"
+ "unpckhps\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
+
+(define_insn "sse_unpcklps"
+ [(set (match_operand:V4SF 0 "register_operand" "=x")
+ (vec_merge:V4SF
+ (vec_select:V4SF (match_operand:V4SF 1 "register_operand" "0")
+ (parallel [(const_int 0)
+ (const_int 2)
+ (const_int 1)
+ (const_int 3)]))
+ (vec_select:V8QI (match_operand:V8QI 2 "register_operand" "x")
+ (parallel [(const_int 2)
+ (const_int 0)
+ (const_int 3)
+ (const_int 1)]))
+ (const_int 5)))]
+ "TARGET_SSE"
+ "unpcklps\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
+
+
+;; SSE min/max
+
+(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")])
+
+(define_insn "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"))
+ (match_dup 1)
+ (const_int 1)))]
+ "TARGET_SSE"
+ "maxss\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
+
+(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")])
+
+(define_insn "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")])
+
+
+;; SSE <-> integer/MMX conversions
+
+(define_insn "cvtpi2ps"
+ [(set (match_operand:V4SF 0 "register_operand" "=x")
+ (vec_merge:V4SF (match_operand:V4SF 1 "register_operand" "0")
+ (vec_duplicate:V4SF
+ (float:V2SF (match_operand:V2SI 2 "register_operand" "ym")))
+ (const_int 12)))]
+ "TARGET_SSE"
+ "cvtpi2ps\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
+
+(define_insn "cvtps2pi"
+ [(set (match_operand:V2SI 0 "register_operand" "=y")
+ (vec_select:V2SI (fix:V4SI (match_operand:V4SF 1 "register_operand" "xm"))
+ (parallel
+ [(const_int 0)
+ (const_int 1)])))]
+ "TARGET_SSE"
+ "cvtps2pi\\t{%1, %0|%0, %1}"
+ [(set_attr "type" "sse")])
+
+(define_insn "cvttps2pi"
+ [(set (match_operand:V2SI 0 "register_operand" "=y")
+ (vec_select:V2SI (unspec:V4SI [(match_operand:V4SF 1 "register_operand" "xm")] 30)
+ (parallel
+ [(const_int 0)
+ (const_int 1)])))]
+ "TARGET_SSE"
+ "cvttps2pi\\t{%1, %0|%0, %1}"
+ [(set_attr "type" "sse")])
+
+(define_insn "cvtsi2ss"
+ [(set (match_operand:V4SF 0 "register_operand" "=x")
+ (vec_merge:V4SF (match_operand:V4SF 1 "register_operand" "0")
+ (vec_duplicate:V4SF
+ (float:SF (match_operand:SI 2 "register_operand" "rm")))
+ (const_int 15)))]
+ "TARGET_SSE"
+ "cvtsi2ss\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
+
+(define_insn "cvtss2si"
+ [(set (match_operand:SI 0 "register_operand" "=y")
+ (vec_select:SI (fix:V4SI (match_operand:V4SF 1 "register_operand" "xm"))
+ (parallel [(const_int 0)])))]
+ "TARGET_SSE"
+ "cvtss2si\\t{%1, %0|%0, %1}"
+ [(set_attr "type" "sse")])
+
+(define_insn "cvttss2si"
+ [(set (match_operand:SI 0 "register_operand" "=y")
+ (vec_select:SI (unspec:V4SI [(match_operand:V4SF 1 "register_operand" "xm")] 30)
+ (parallel [(const_int 0)])))]
+ "TARGET_SSE"
+ "cvttss2si\\t{%1, %0|%0, %1}"
+ [(set_attr "type" "sse")])
+
+
+;; MMX insns
+
+;; MMX arithmetic
+
+(define_insn "addv8qi3"
+ [(set (match_operand:V8QI 0 "register_operand" "=y")
+ (plus:V8QI (match_operand:V8QI 1 "register_operand" "0")
+ (match_operand:V8QI 2 "nonimmediate_operand" "ym")))]
+ "TARGET_MMX"
+ "paddb\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "addv4hi3"
+ [(set (match_operand:V4HI 0 "register_operand" "=y")
+ (plus:V4HI (match_operand:V4HI 1 "register_operand" "0")
+ (match_operand:V4HI 2 "nonimmediate_operand" "ym")))]
+ "TARGET_MMX"
+ "paddw\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "addv2si3"
+ [(set (match_operand:V2SI 0 "register_operand" "=y")
+ (plus:V2SI (match_operand:V2SI 1 "register_operand" "0")
+ (match_operand:V2SI 2 "nonimmediate_operand" "ym")))]
+ "TARGET_MMX"
+ "paddd\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "ssaddv8qi3"
+ [(set (match_operand:V8QI 0 "register_operand" "=y")
+ (ss_plus:V8QI (match_operand:V8QI 1 "register_operand" "0")
+ (match_operand:V8QI 2 "nonimmediate_operand" "ym")))]
+ "TARGET_MMX"
+ "paddsb\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "ssaddv4hi3"
+ [(set (match_operand:V4HI 0 "register_operand" "=y")
+ (ss_plus:V4HI (match_operand:V4HI 1 "register_operand" "0")
+ (match_operand:V4HI 2 "nonimmediate_operand" "ym")))]
+ "TARGET_MMX"
+ "paddsw\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "usaddv8qi3"
+ [(set (match_operand:V8QI 0 "register_operand" "=y")
+ (us_plus:V8QI (match_operand:V8QI 1 "register_operand" "0")
+ (match_operand:V8QI 2 "nonimmediate_operand" "ym")))]
+ "TARGET_MMX"
+ "paddusb\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "usaddv4hi3"
+ [(set (match_operand:V4HI 0 "register_operand" "=y")
+ (us_plus:V4HI (match_operand:V4HI 1 "register_operand" "0")
+ (match_operand:V4HI 2 "nonimmediate_operand" "ym")))]
+ "TARGET_MMX"
+ "paddusw\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "subv8qi3"
+ [(set (match_operand:V8QI 0 "register_operand" "=y")
+ (minus:V8QI (match_operand:V8QI 1 "register_operand" "0")
+ (match_operand:V8QI 2 "nonimmediate_operand" "ym")))]
+ "TARGET_MMX"
+ "psubb\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "subv4hi3"
+ [(set (match_operand:V4HI 0 "register_operand" "=y")
+ (minus:V4HI (match_operand:V4HI 1 "register_operand" "0")
+ (match_operand:V4HI 2 "nonimmediate_operand" "ym")))]
+ "TARGET_MMX"
+ "psubw\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "subv2si3"
+ [(set (match_operand:V2SI 0 "register_operand" "=y")
+ (minus:V2SI (match_operand:V2SI 1 "register_operand" "0")
+ (match_operand:V2SI 2 "nonimmediate_operand" "ym")))]
+ "TARGET_MMX"
+ "psubd\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "sssubv8qi3"
+ [(set (match_operand:V8QI 0 "register_operand" "=y")
+ (ss_minus:V8QI (match_operand:V8QI 1 "register_operand" "0")
+ (match_operand:V8QI 2 "nonimmediate_operand" "ym")))]
+ "TARGET_MMX"
+ "psubsb\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "sssubv4hi3"
+ [(set (match_operand:V4HI 0 "register_operand" "=y")
+ (ss_minus:V4HI (match_operand:V4HI 1 "register_operand" "0")
+ (match_operand:V4HI 2 "nonimmediate_operand" "ym")))]
+ "TARGET_MMX"
+ "psubsw\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "ussubv8qi3"
+ [(set (match_operand:V8QI 0 "register_operand" "=y")
+ (us_minus:V8QI (match_operand:V8QI 1 "register_operand" "0")
+ (match_operand:V8QI 2 "nonimmediate_operand" "ym")))]
+ "TARGET_MMX"
+ "psubusb\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "ussubv4hi3"
+ [(set (match_operand:V4HI 0 "register_operand" "=y")
+ (us_minus:V4HI (match_operand:V4HI 1 "register_operand" "0")
+ (match_operand:V4HI 2 "nonimmediate_operand" "ym")))]
+ "TARGET_MMX"
+ "psubusw\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "mulv4hi3"
+ [(set (match_operand:V4HI 0 "register_operand" "=y")
+ (mult:V4HI (match_operand:V4HI 1 "register_operand" "0")
+ (match_operand:V4HI 2 "nonimmediate_operand" "ym")))]
+ "TARGET_MMX"
+ "pmullw\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "smulv4hi3_highpart"
+ [(set (match_operand:V4HI 0 "register_operand" "=y")
+ (truncate:V4HI
+ (lshiftrt:V4SI
+ (mult:V4SI (sign_extend:V4SI (match_operand:V4HI 1 "register_operand" "0"))
+ (sign_extend:V4SI (match_operand:V4HI 2 "nonimmediate_operand" "ym")))
+ (const_int 16))))]
+ "TARGET_MMX"
+ "pmulhw\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "umulv4hi3_highpart"
+ [(set (match_operand:V4HI 0 "register_operand" "=y")
+ (truncate:V4HI
+ (lshiftrt:V4SI
+ (mult:V4SI (zero_extend:V4SI (match_operand:V4HI 1 "register_operand" "0"))
+ (zero_extend:V4SI (match_operand:V4HI 2 "nonimmediate_operand" "ym")))
+ (const_int 16))))]
+ "TARGET_MMX"
+ "pmulhuw\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "mmx_pmaddwd"
+ [(set (match_operand:V2SI 0 "register_operand" "=y")
+ (plus:V2SI
+ (mult:V2SI
+ (sign_extend:V2SI (vec_select:V2HI (match_operand:V4HI 1 "register_operand" "0")
+ (parallel [(const_int 0)
+ (const_int 2)])))
+ (sign_extend:V2SI (vec_select:V2HI (match_operand:V4HI 2 "nonimmediate_operand" "ym")
+ (parallel [(const_int 0)
+ (const_int 2)]))))
+ (mult:V2SI
+ (sign_extend:V2SI (vec_select:V2HI (match_dup 1)
+ (parallel [(const_int 1)
+ (const_int 3)])))
+ (sign_extend:V2SI (vec_select:V2HI (match_dup 2)
+ (parallel [(const_int 1)
+ (const_int 3)]))))))]
+ "TARGET_MMX"
+ "pmaddwd\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+
+;; MMX logical operations
+;; Note we don't want to declare these as regular iordi3 insns to prevent
+;; normal code that also wants to use the FPU from getting broken.
+;; The UNSPECs are there to prevent the combiner from getting overly clever.
+(define_insn "mmx_iordi3"
+ [(set (match_operand:DI 0 "register_operand" "=y")
+ (unspec:DI
+ [(ior:DI (match_operand:DI 1 "register_operand" "0")
+ (match_operand:DI 2 "nonimmediate_operand" "ym"))] 45))]
+ "TARGET_MMX"
+ "por\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "mmx_xordi3"
+ [(set (match_operand:DI 0 "register_operand" "=y")
+ (unspec:DI
+ [(xor:DI (match_operand:DI 1 "register_operand" "0")
+ (match_operand:DI 2 "nonimmediate_operand" "ym"))] 45))]
+ "TARGET_MMX"
+ "pxor\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+;; Same as pxor, but don't show input operands so that we don't think
+;; they are live.
+(define_insn "mmx_clrdi"
+ [(set (match_operand:DI 0 "register_operand" "=y")
+ (unspec:DI [(const_int 0)] 45))]
+ "TARGET_MMX"
+ "pxor\\t{%0, %0|%0, %0}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "mmx_anddi3"
+ [(set (match_operand:DI 0 "register_operand" "=y")
+ (unspec:DI
+ [(and:DI (match_operand:DI 1 "register_operand" "0")
+ (match_operand:DI 2 "nonimmediate_operand" "ym"))] 45))]
+ "TARGET_MMX"
+ "pand\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "mmx_nanddi3"
+ [(set (match_operand:DI 0 "register_operand" "=y")
+ (unspec:DI
+ [(and:DI (not:DI (match_operand:DI 1 "register_operand" "0"))
+ (match_operand:DI 2 "nonimmediate_operand" "ym"))] 45))]
+ "TARGET_MMX"
+ "pandn\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+
+;; MMX unsigned averages/sum of absolute differences
+
+(define_insn "mmx_uavgv8qi3"
+ [(set (match_operand:V8QI 0 "register_operand" "=y")
+ (ashiftrt:V8QI
+ (plus:V8QI (plus:V8QI
+ (match_operand:V8QI 1 "register_operand" "0")
+ (match_operand:V8QI 2 "nonimmediate_operand" "ym"))
+ (vec_const:V8QI (parallel [(const_int 1)
+ (const_int 1)
+ (const_int 1)
+ (const_int 1)
+ (const_int 1)
+ (const_int 1)
+ (const_int 1)
+ (const_int 1)])))
+ (const_int 1)))]
+ "TARGET_SSE"
+ "pavgbn\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
+
+(define_insn "mmx_uavgv4hi3"
+ [(set (match_operand:V4HI 0 "register_operand" "=y")
+ (ashiftrt:V4HI
+ (plus:V4HI (plus:V4HI
+ (match_operand:V4HI 1 "register_operand" "0")
+ (match_operand:V4HI 2 "nonimmediate_operand" "ym"))
+ (vec_const:V4HI (parallel [(const_int 1)
+ (const_int 1)
+ (const_int 1)
+ (const_int 1)])))
+ (const_int 1)))]
+ "TARGET_SSE"
+ "pavgwn\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
+
+(define_insn "mmx_psadbw"
+ [(set (match_operand:V8QI 0 "register_operand" "=y")
+ (abs:V8QI (minus:V8QI (match_operand:DI 1 "register_operand" "0")
+ (match_operand:DI 2 "nonimmediate_operand" "ym"))))]
+ "TARGET_SSE"
+ "padbw\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
+
+
+;; MMX insert/extract/shuffle
+
+(define_insn "mmx_pinsrw"
+ [(set (match_operand:V4HI 0 "register_operand" "=y")
+ (vec_merge:V4HI (match_operand:V4HI 1 "register_operand" "0")
+ (vec_duplicate:V4HI
+ (truncate:HI (match_operand:SI 2 "nonimmediate_operand" "rm")))
+ (match_operand:SI 3 "immediate_operand" "i")))]
+ "TARGET_SSE"
+ ;; @@@ check operand order for intel/nonintel syntax.
+ "pinsrw\\t%3, {%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
+
+(define_insn "mmx_pextrw"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (zero_extend:SI (vec_select:HI (match_operand:V4HI 1 "register_operand" "y")
+ (parallel
+ [(match_operand:SI 2 "immediate_operand" "i")]))))]
+ "TARGET_SSE"
+ ;; @@@ check operand order for intel/nonintel syntax.
+ "pextrw\\t%2, {%1, %0|%0, %1}"
+ [(set_attr "type" "sse")])
+
+(define_insn "mmx_pshufw"
+ [(set (match_operand:V4HI 0 "register_operand" "=y")
+ (unspec:V4HI [(match_operand:V4HI 1 "register_operand" "0")
+ (match_operand:V4HI 2 "nonimmediate_operand" "ym")
+ (match_operand:SI 3 "immediate_operand" "i")] 41))]
+ "TARGET_SSE"
+ ;; @@@ check operand order for intel/nonintel syntax
+ "pshufw\\t %3,{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
+
+
+;; MMX mask-generating comparisons
+
+(define_insn "eqv8qi3"
+ [(set (match_operand:V8QI 0 "register_operand" "=y")
+ (eq:V8QI (match_operand:V8QI 1 "register_operand" "0")
+ (match_operand:V8QI 2 "nonimmediate_operand" "ym")))]
+ "TARGET_MMX"
+ "pcmpeqb\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "eqv4hi3"
+ [(set (match_operand:V4HI 0 "register_operand" "=y")
+ (eq:V4HI (match_operand:V4HI 1 "register_operand" "0")
+ (match_operand:V4HI 2 "nonimmediate_operand" "ym")))]
+ "TARGET_MMX"
+ "pcmpeqw\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "eqv2si3"
+ [(set (match_operand:V2SI 0 "register_operand" "=y")
+ (eq:V2SI (match_operand:V2SI 1 "register_operand" "0")
+ (match_operand:V2SI 2 "nonimmediate_operand" "ym")))]
+ "TARGET_MMX"
+ "pcmpeqd\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "gtv8qi3"
+ [(set (match_operand:V8QI 0 "register_operand" "=y")
+ (gt:V8QI (match_operand:V8QI 1 "register_operand" "0")
+ (match_operand:V8QI 2 "nonimmediate_operand" "ym")))]
+ "TARGET_MMX"
+ "pcmpgtb\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "gtv4hi3"
+ [(set (match_operand:V4HI 0 "register_operand" "=y")
+ (gt:V4HI (match_operand:V4HI 1 "register_operand" "0")
+ (match_operand:V4HI 2 "nonimmediate_operand" "ym")))]
+ "TARGET_MMX"
+ "pcmpgtw\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "gtv2si3"
+ [(set (match_operand:V2SI 0 "register_operand" "=y")
+ (gt:V2SI (match_operand:V2SI 1 "register_operand" "0")
+ (match_operand:V2SI 2 "nonimmediate_operand" "ym")))]
+ "TARGET_MMX"
+ "pcmpgtd\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+
+;; MMX max/min insns
+
+(define_insn "umaxv8qi3"
+ [(set (match_operand:V8QI 0 "register_operand" "=y")
+ (umax:V8QI (match_operand:V8QI 1 "register_operand" "0")
+ (match_operand:V8QI 2 "nonimmediate_operand" "ym")))]
+ "TARGET_SSE"
+ "pmaxub\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
+
+(define_insn "smaxv4hi3"
+ [(set (match_operand:V4HI 0 "register_operand" "=y")
+ (smax:V4HI (match_operand:V4HI 1 "register_operand" "0")
+ (match_operand:V4HI 2 "nonimmediate_operand" "ym")))]
+ "TARGET_SSE"
+ "pmaxsw\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
+
+(define_insn "uminv8qi3"
+ [(set (match_operand:V8QI 0 "register_operand" "=y")
+ (umin:V8QI (match_operand:V8QI 1 "register_operand" "0")
+ (match_operand:V8QI 2 "nonimmediate_operand" "ym")))]
+ "TARGET_SSE"
+ "pminub\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
+
+(define_insn "sminv4hi3"
+ [(set (match_operand:V4HI 0 "register_operand" "=y")
+ (smin:V4HI (match_operand:V4HI 1 "register_operand" "0")
+ (match_operand:V4HI 2 "nonimmediate_operand" "ym")))]
+ "TARGET_SSE"
+ "pminsw\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "sse")])
+
+
+;; MMX shifts
+
+(define_insn "ashrv4hi3"
+ [(set (match_operand:V4HI 0 "register_operand" "=y")
+ (ashiftrt:V4HI (match_operand:V4HI 1 "register_operand" "0")
+ (match_operand:DI 2 "nonmemory_operand" "yi")))]
+ "TARGET_MMX"
+ "psraw\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "ashrv2si3"
+ [(set (match_operand:V2SI 0 "register_operand" "=y")
+ (ashiftrt:V2SI (match_operand:V2SI 1 "register_operand" "0")
+ (match_operand:DI 2 "nonmemory_operand" "yi")))]
+ "TARGET_MMX"
+ "psrad\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "lshrv4hi3"
+ [(set (match_operand:V4HI 0 "register_operand" "=y")
+ (lshiftrt:V4HI (match_operand:V4HI 1 "register_operand" "0")
+ (match_operand:DI 2 "nonmemory_operand" "yi")))]
+ "TARGET_MMX"
+ "psrlw\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "lshrv2si3"
+ [(set (match_operand:V2SI 0 "register_operand" "=y")
+ (lshiftrt:V2SI (match_operand:V2SI 1 "register_operand" "0")
+ (match_operand:DI 2 "nonmemory_operand" "yi")))]
+ "TARGET_MMX"
+ "psrld\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+;; See logical MMX insns.
+(define_insn "mmx_lshrdi3"
+ [(set (match_operand:DI 0 "register_operand" "=y")
+ (lshiftrt:DI (match_operand:DI 1 "register_operand" "0")
+ (match_operand:DI 2 "nonmemory_operand" "yi")))]
+ "TARGET_MMX"
+ "psrlq\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "ashlv4hi3"
+ [(set (match_operand:V4HI 0 "register_operand" "=y")
+ (ashift:V4HI (match_operand:V4HI 1 "register_operand" "0")
+ (match_operand:DI 2 "nonmemory_operand" "yi")))]
+ "TARGET_MMX"
+ "psllw\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "ashlv2si3"
+ [(set (match_operand:V2SI 0 "register_operand" "=y")
+ (ashift:V2SI (match_operand:V2SI 1 "register_operand" "0")
+ (match_operand:DI 2 "nonmemory_operand" "yi")))]
+ "TARGET_MMX"
+ "pslld\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+;; See logical MMX insns.
+(define_insn "mmx_ashldi3"
+ [(set (match_operand:DI 0 "register_operand" "=y")
+ (ashift:DI (match_operand:DI 1 "register_operand" "0")
+ (match_operand:DI 2 "nonmemory_operand" "yi")))]
+ "TARGET_MMX"
+ "psllq\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+
+;; MMX pack/unpack insns.
+
+(define_insn "mmx_packsswb"
+ [(set (match_operand:V8QI 0 "register_operand" "=y")
+ (vec_concat:V8QI
+ (ss_truncate:V4QI (match_operand:V4HI 1 "register_operand" "0"))
+ (ss_truncate:V4QI (match_operand:V4HI 2 "register_operand" "y"))))]
+ "TARGET_MMX"
+ "packsswb\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "mmx_packssdw"
+ [(set (match_operand:V4HI 0 "register_operand" "=y")
+ (vec_concat:V4HI
+ (ss_truncate:V2HI (match_operand:V2SI 1 "register_operand" "0"))
+ (ss_truncate:V2HI (match_operand:V2SI 2 "register_operand" "y"))))]
+ "TARGET_MMX"
+ "packssdw\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "mmx_packuswb"
+ [(set (match_operand:V8QI 0 "register_operand" "=y")
+ (vec_concat:V8QI
+ (us_truncate:V4QI (match_operand:V4HI 1 "register_operand" "0"))
+ (us_truncate:V4QI (match_operand:V4HI 2 "register_operand" "y"))))]
+ "TARGET_MMX"
+ "packuswb\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "mmx_punpckhbw"
+ [(set (match_operand:V8QI 0 "register_operand" "=y")
+ (vec_merge:V8QI
+ (vec_select:V8QI (match_operand:V8QI 1 "register_operand" "0")
+ (parallel [(const_int 4)
+ (const_int 0)
+ (const_int 5)
+ (const_int 1)
+ (const_int 6)
+ (const_int 2)
+ (const_int 7)
+ (const_int 3)]))
+ (vec_select:V8QI (match_operand:V8QI 2 "register_operand" "y")
+ (parallel [(const_int 0)
+ (const_int 4)
+ (const_int 1)
+ (const_int 5)
+ (const_int 2)
+ (const_int 6)
+ (const_int 3)
+ (const_int 7)]))
+ (const_int 85)))]
+ "TARGET_MMX"
+ "punpckhbw\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "mmx_punpckhwd"
+ [(set (match_operand:V4HI 0 "register_operand" "=y")
+ (vec_merge:V4HI
+ (vec_select:V4HI (match_operand:V4HI 1 "register_operand" "0")
+ (parallel [(const_int 0)
+ (const_int 2)
+ (const_int 1)
+ (const_int 3)]))
+ (vec_select:V4HI (match_operand:V4HI 2 "register_operand" "y")
+ (parallel [(const_int 2)
+ (const_int 0)
+ (const_int 3)
+ (const_int 1)]))
+ (const_int 5)))]
+ "TARGET_MMX"
+ "punpckhbw\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "mmx_punpckhdq"
+ [(set (match_operand:V2SI 0 "register_operand" "=y")
+ (vec_merge:V2SI
+ (vec_select:V2SI (match_operand:V2SI 1 "register_operand" "0")
+ (parallel [(const_int 0)
+ (const_int 1)]))
+ (vec_select:V2SI (match_operand:V2SI 2 "register_operand" "y")
+ (parallel [(const_int 1)
+ (const_int 0)]))
+ (const_int 1)))]
+ "TARGET_MMX"
+ "punpckhbw\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "mmx_punpcklbw"
+ [(set (match_operand:V8QI 0 "register_operand" "=y")
+ (vec_merge:V8QI
+ (vec_select:V8QI (match_operand:V8QI 1 "register_operand" "0")
+ (parallel [(const_int 0)
+ (const_int 4)
+ (const_int 1)
+ (const_int 5)
+ (const_int 2)
+ (const_int 6)
+ (const_int 3)
+ (const_int 7)]))
+ (vec_select:V8QI (match_operand:V8QI 2 "register_operand" "y")
+ (parallel [(const_int 4)
+ (const_int 0)
+ (const_int 5)
+ (const_int 1)
+ (const_int 6)
+ (const_int 2)
+ (const_int 7)
+ (const_int 3)]))
+ (const_int 85)))]
+ "TARGET_MMX"
+ "punpcklbw\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "mmx_punpcklwd"
+ [(set (match_operand:V4HI 0 "register_operand" "=y")
+ (vec_merge:V4HI
+ (vec_select:V4HI (match_operand:V4HI 1 "register_operand" "0")
+ (parallel [(const_int 2)
+ (const_int 0)
+ (const_int 3)
+ (const_int 1)]))
+ (vec_select:V4HI (match_operand:V4HI 2 "register_operand" "y")
+ (parallel [(const_int 0)
+ (const_int 2)
+ (const_int 1)
+ (const_int 3)]))
+ (const_int 5)))]
+ "TARGET_MMX"
+ "punpcklbw\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+(define_insn "mmx_punpckldq"
+ [(set (match_operand:V2SI 0 "register_operand" "=y")
+ (vec_merge:V2SI
+ (vec_select:V2SI (match_operand:V2SI 1 "register_operand" "0")
+ (parallel [(const_int 1)
+ (const_int 0)]))
+ (vec_select:V2SI (match_operand:V2SI 2 "register_operand" "y")
+ (parallel [(const_int 0)
+ (const_int 1)]))
+ (const_int 1)))]
+ "TARGET_MMX"
+ "punpcklbw\\t{%2, %0|%0, %2}"
+ [(set_attr "type" "mmx")])
+
+
+;; Miscellaneous stuff
+
+(define_insn "emms"
+ [(unspec_volatile [(const_int 0)] 31)
+ (clobber (reg:XF 8))
+ (clobber (reg:XF 9))
+ (clobber (reg:XF 10))
+ (clobber (reg:XF 11))
+ (clobber (reg:XF 12))
+ (clobber (reg:XF 13))
+ (clobber (reg:XF 14))
+ (clobber (reg:XF 15))
+ (clobber (reg:DI 27))
+ (clobber (reg:DI 28))
+ (clobber (reg:DI 29))
+ (clobber (reg:DI 30))
+ (clobber (reg:DI 31))
+ (clobber (reg:DI 32))
+ (clobber (reg:DI 33))
+ (clobber (reg:DI 34))]
+ "TARGET_MMX"
+ "emms"
+ [(set_attr "type" "mmx")])
+
+(define_insn "ldmxcsr"
+ [(unspec_volatile [(match_operand:SI 0 "memory_operand" "m")] 37)]
+ "TARGET_MMX"
+ "ldmxcsr\\t%0"
+ [(set_attr "type" "mmx")])
+
+(define_insn "stmxcsr"
+ [(set (match_operand:SI 0 "memory_operand" "=m")
+ (unspec_volatile:SI [(const_int 0)] 40))]
+ "TARGET_MMX"
+ "stmxcsr\\t%0"
+ [(set_attr "type" "mmx")])
+
+(define_expand "sfence"
+ [(set (match_dup 0)
+ (unspec:BLK [(match_dup 0)] 44))]
+ "TARGET_SSE"
+ "
+{
+ operands[0] = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (Pmode));
+ MEM_VOLATILE_P (operands[0]) = 1;
+}")
+
+(define_insn "*sfence_insn"
+ [(set (match_operand:BLK 0 "" "")
+ (unspec:BLK [(match_dup 0)] 44))]
+ "TARGET_SSE"
+ "sfence"
+ [(set_attr "type" "sse")])
+
+(define_insn "prefetch"
+ [(unspec [(match_operand:SI 0 "address_operand" "p")
+ (match_operand:SI 1 "address_operand" "p")] 35)]
+ "TARGET_SSE"
+ "*
+{
+ switch (INTVAL (operands[1]))
+ {
+ case 0:
+ return \"prefetcht0\\t%0\";
+ case 1:
+ return \"prefetcht1\\t%0\";
+ case 2:
+ return \"prefetcht2\\t%0\";
+ case 3:
+ return \"prefetchnta\\t%0\";
+ default:
+ abort ();
+ }
+}"
+ [(set_attr "type" "sse")])
+
diff --git a/gcc/config/i960/i960-protos.h b/gcc/config/i960/i960-protos.h
index 92357c9b0e7..130dddeefe4 100644
--- a/gcc/config/i960/i960-protos.h
+++ b/gcc/config/i960/i960-protos.h
@@ -22,6 +22,9 @@ along with GNU CC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
+#ifndef GCC_I960_PROTOS_H
+#define GCC_I960_PROTOS_H
+
#ifdef RTX_CODE
extern struct rtx_def *legitimize_address PARAMS ((rtx, rtx, enum machine_mode));
/* Define the function that build the compare insn for scc and bcc. */
@@ -102,3 +105,10 @@ extern void i960_function_prologue PARAMS ((FILE *, unsigned int));
extern void output_function_profiler PARAMS ((FILE *, int));
extern void i960_function_epilogue PARAMS ((FILE *, unsigned int));
extern void i960_scan_opcode PARAMS ((const char *));
+
+#ifdef _C_PRAGMA_H
+extern void i960_pr_align PARAMS ((cpp_reader *));
+extern void i960_pr_noalign PARAMS ((cpp_reader *));
+#endif
+
+#endif /* i960-protos.h */
diff --git a/gcc/config/i960/i960.c b/gcc/config/i960/i960.c
index e8e046db2e4..21753a207b2 100644
--- a/gcc/config/i960/i960.c
+++ b/gcc/config/i960/i960.c
@@ -42,6 +42,9 @@ Boston, MA 02111-1307, USA. */
#include "function.h"
#include "recog.h"
#include "toplev.h"
+#include "cpplib.h"
+#include "c-pragma.h"
+#include "c-lex.h"
#include "tm_p.h"
/* Save the operands last given to a compare for use when we
@@ -88,8 +91,86 @@ static int ret_label = 0;
/* Handle pragmas for compatibility with Intel's compilers. */
-/* ??? This is incomplete, since it does not handle all pragmas that the
- intel compilers understand. */
+/* NOTE: ic960 R3.0 pragma align definition:
+
+ #pragma align [(size)] | (identifier=size[,...])
+ #pragma noalign [(identifier)[,...]]
+
+ (all parens are optional)
+
+ - size is [1,2,4,8,16]
+ - noalign means size==1
+ - applies only to component elements of a struct (and union?)
+ - identifier applies to structure tag (only)
+ - missing identifier means next struct
+
+ - alignment rules for bitfields need more investigation.
+
+ This implementation only handles the case of no identifiers. */
+
+void
+i960_pr_align (pfile)
+ cpp_reader *pfile ATTRIBUTE_UNUSED;
+{
+ tree number;
+ enum cpp_ttype type;
+ int align;
+
+ type = c_lex (&number);
+ if (type == CPP_OPEN_PAREN)
+ type = c_lex (&number);
+ if (type == CPP_NAME)
+ {
+ warning ("sorry, not implemented: #pragma align NAME=SIZE");
+ return;
+ }
+ if (type != CPP_NUMBER)
+ {
+ warning ("malformed #pragma align - ignored");
+ return;
+ }
+
+ align = TREE_INT_CST_LOW (number);
+ switch (align)
+ {
+ case 0:
+ /* Return to last alignment. */
+ align = i960_last_maxbitalignment / 8;
+ /* Fall through. */
+ case 16:
+ case 8:
+ case 4:
+ case 2:
+ case 1:
+ i960_last_maxbitalignment = i960_maxbitalignment;
+ i960_maxbitalignment = align * 8;
+ break;
+
+ default:
+ /* Silently ignore bad values. */
+ break;
+ }
+}
+
+void
+i960_pr_noalign (pfile)
+ cpp_reader *pfile ATTRIBUTE_UNUSED;
+{
+ enum cpp_ttype type;
+ tree number;
+
+ type = c_lex (&number);
+ if (type == CPP_OPEN_PAREN)
+ type = c_lex (&number);
+ if (type == CPP_NAME)
+ {
+ warning ("sorry, not implemented: #pragma noalign NAME");
+ return;
+ }
+
+ i960_last_maxbitalignment = i960_maxbitalignment;
+ i960_maxbitalignment = 8;
+}
int
process_pragma (p_getc, p_ungetc, pname)
@@ -132,40 +213,7 @@ process_pragma (p_getc, p_ungetc, pname)
align = atoi (buf);
- switch (align)
- {
- case 0:
- /* Return to last alignment. */
- align = i960_last_maxbitalignment / 8;
- /* Fall through. */
- case 16:
- case 8:
- case 4:
- case 2:
- case 1:
- i960_last_maxbitalignment = i960_maxbitalignment;
- i960_maxbitalignment = align * 8;
- break;
-
- default:
- /* Silently ignore bad values. */
- break;
- }
- /* NOTE: ic960 R3.0 pragma align definition:
-
- #pragma align [(size)] | (identifier=size[,...])
- #pragma noalign [(identifier)[,...]]
-
- (all parens are optional)
-
- - size is [1,2,4,8,16]
- - noalign means size==1
- - applies only to component elements of a struct (and union?)
- - identifier applies to structure tag (only)
- - missing identifier means next struct
-
- - alignment rules for bitfields need more investigation */
return 1;
}
diff --git a/gcc/config/i960/i960.h b/gcc/config/i960/i960.h
index 66be5f624ea..c741ba45263 100644
--- a/gcc/config/i960/i960.h
+++ b/gcc/config/i960/i960.h
@@ -131,7 +131,10 @@ Boston, MA 02111-1307, USA. */
fprintf (asm_out_file, "\t.type\t0x%x;", A)
/* Handle pragmas for compatibility with Intel's compilers. */
-#define HANDLE_PRAGMA(GET, UNGET, NAME) process_pragma (GET, UNGET, NAME)
+#define REGISTER_TARGET_PRAGMAS(PFILE) do { \
+ cpp_register_pragma (PFILE, 0, "align", i960_pr_align); \
+ cpp_register_pragma (PFILE, 0, "noalign", i960_pr_noalign); \
+} while (0)
/* Run-time compilation parameters selecting different hardware subsets. */
diff --git a/gcc/config/ia64/ia64-protos.h b/gcc/config/ia64/ia64-protos.h
index 36a67eb26ac..d213b4180f8 100644
--- a/gcc/config/ia64/ia64-protos.h
+++ b/gcc/config/ia64/ia64-protos.h
@@ -38,6 +38,7 @@ extern int gr_register_operand PARAMS((rtx, enum machine_mode));
extern int fr_register_operand PARAMS((rtx, enum machine_mode));
extern int grfr_register_operand PARAMS((rtx, enum machine_mode));
extern int gr_nonimmediate_operand PARAMS((rtx, enum machine_mode));
+extern int fr_nonimmediate_operand PARAMS((rtx, enum machine_mode));
extern int grfr_nonimmediate_operand PARAMS((rtx, enum machine_mode));
extern int gr_reg_or_0_operand PARAMS((rtx, enum machine_mode));
extern int gr_reg_or_5bit_operand PARAMS((rtx, enum machine_mode));
diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c
index 7b422351b96..57de975c870 100644
--- a/gcc/config/ia64/ia64.c
+++ b/gcc/config/ia64/ia64.c
@@ -397,6 +397,26 @@ gr_nonimmediate_operand (op, mode)
return 1;
}
+/* Return 1 if OP is a nonimmediate operand that is (or could be) a FR reg. */
+
+int
+fr_nonimmediate_operand (op, mode)
+ rtx op;
+ enum machine_mode mode;
+{
+ if (! nonimmediate_operand (op, mode))
+ return 0;
+ if (GET_CODE (op) == SUBREG)
+ op = SUBREG_REG (op);
+ if (GET_CODE (op) == REG)
+ {
+ unsigned int regno = REGNO (op);
+ if (regno < FIRST_PSEUDO_REGISTER)
+ return FR_REGNO_P (regno);
+ }
+ return 1;
+}
+
/* Return 1 if OP is a nonimmediate operand that is a GR/FR reg. */
int
@@ -3484,6 +3504,12 @@ ia64_override_options ()
if (TARGET_AUTO_PIC)
target_flags |= MASK_CONST_GP;
+ if (TARGET_INLINE_DIV_LAT && TARGET_INLINE_DIV_THR)
+ {
+ warning ("cannot optimize division for both latency and throughput");
+ target_flags &= ~MASK_INLINE_DIV_THR;
+ }
+
if (ia64_fixed_range_string)
fix_range (ia64_fixed_range_string);
@@ -3971,6 +3997,11 @@ rtx_needs_barrier (x, flags, pred)
case 21: /* flushrs */
break;
+ case 5: /* recip_approx */
+ need_barrier = rtx_needs_barrier (XVECEXP (x, 0, 0), flags, pred);
+ need_barrier |= rtx_needs_barrier (XVECEXP (x, 0, 1), flags, pred);
+ break;
+
case 13: /* cmpxchg_acq */
need_barrier = rtx_needs_barrier (XVECEXP (x, 0, 1), flags, pred);
need_barrier |= rtx_needs_barrier (XVECEXP (x, 0, 2), flags, pred);
diff --git a/gcc/config/ia64/ia64.h b/gcc/config/ia64/ia64.h
index 70647450e83..1f975f3913d 100644
--- a/gcc/config/ia64/ia64.h
+++ b/gcc/config/ia64/ia64.h
@@ -63,6 +63,10 @@ extern int target_flags;
#define MASK_AUTO_PIC 0x00000200 /* generate automatically PIC */
+#define MASK_INLINE_DIV_LAT 0x00000400 /* inline div, min latency. */
+
+#define MASK_INLINE_DIV_THR 0x00000800 /* inline div, max throughput. */
+
#define MASK_DWARF2_ASM 0x40000000 /* test dwarf2 line info via gas. */
#define TARGET_BIG_ENDIAN (target_flags & MASK_BIG_ENDIAN)
@@ -85,6 +89,13 @@ extern int target_flags;
#define TARGET_AUTO_PIC (target_flags & MASK_AUTO_PIC)
+#define TARGET_INLINE_DIV_LAT (target_flags & MASK_INLINE_DIV_LAT)
+
+#define TARGET_INLINE_DIV_THR (target_flags & MASK_INLINE_DIV_THR)
+
+#define TARGET_INLINE_DIV \
+ (target_flags & (MASK_INLINE_DIV_LAT | MASK_INLINE_DIV_THR))
+
#define TARGET_DWARF2_ASM (target_flags & MASK_DWARF2_ASM)
/* This macro defines names of command options to set and clear bits in
@@ -123,6 +134,10 @@ extern int target_flags;
N_("gp is constant (but save/restore gp on indirect calls)") }, \
{ "auto-pic", MASK_AUTO_PIC, \
N_("Generate self-relocatable code") }, \
+ { "inline-divide-min-latency", MASK_INLINE_DIV_LAT, \
+ N_("Generate inline division, optimize for latency") }, \
+ { "inline-divide-max-throughput", MASK_INLINE_DIV_THR, \
+ N_("Generate inline division, optimize for throughput") }, \
{ "dwarf2-asm", MASK_DWARF2_ASM, \
N_("Enable Dwarf 2 line debug info via GNU as")}, \
{ "no-dwarf2-asm", -MASK_DWARF2_ASM, \
@@ -1055,9 +1070,12 @@ enum reg_class
#define CLASS_CANNOT_CHANGE_MODE FR_REGS
-/* Defines illegal mode changes for CLASS_CANNOT_CHANGE_MODE. */
+/* Defines illegal mode changes for CLASS_CANNOT_CHANGE_MODE.
+ In FP regs, we can't change FP values to integer values and vice
+ versa, but we can change e.g. DImode to SImode. */
-#define CLASS_CANNOT_CHANGE_MODE_P(FROM,TO) 1
+#define CLASS_CANNOT_CHANGE_MODE_P(FROM,TO) \
+ (GET_MODE_CLASS (FROM) != GET_MODE_CLASS (TO))
/* A C expression that defines the machine-dependent operand constraint
letters (`I', `J', `K', .. 'P') that specify particular ranges of
@@ -2643,6 +2661,7 @@ do { \
{ "fr_register_operand", {SUBREG, REG}}, \
{ "grfr_register_operand", {SUBREG, REG}}, \
{ "gr_nonimmediate_operand", {SUBREG, REG, MEM}}, \
+{ "fr_nonimmediate_operand", {SUBREG, REG, MEM}}, \
{ "grfr_nonimmediate_operand", {SUBREG, REG, MEM}}, \
{ "gr_reg_or_0_operand", {SUBREG, REG, CONST_INT}}, \
{ "gr_reg_or_5bit_operand", {SUBREG, REG, CONST_INT, CONSTANT_P_RTX}}, \
diff --git a/gcc/config/ia64/ia64.md b/gcc/config/ia64/ia64.md
index 129ce240316..704959222d2 100644
--- a/gcc/config/ia64/ia64.md
+++ b/gcc/config/ia64/ia64.md
@@ -50,6 +50,8 @@
;; would be better if rtx_needs_barrier took care of this, but this is
;; something that can be fixed later.
+;; ??? Need a better way to describe alternate fp status registers.
+
;; Unspec usage:
;;
;; unspec:
@@ -57,6 +59,7 @@
;; 2 gr_restore
;; 3 fr_spill
;; 4 fr_restore
+;; 5 recip_approx
;; 8 popcnt
;; 12 mf
;; 13 cmpxchg_acq
@@ -950,8 +953,8 @@
[(set_attr "type" "I")])
(define_insn "extendsidi2"
- [(set (match_operand:DI 0 "grfr_register_operand" "=r,*f")
- (sign_extend:DI (match_operand:SI 1 "grfr_register_operand" "r,*f")))]
+ [(set (match_operand:DI 0 "grfr_register_operand" "=r,?f")
+ (sign_extend:DI (match_operand:SI 1 "grfr_register_operand" "r,f")))]
""
"@
sxt4 %0 = %1
@@ -979,14 +982,14 @@
[(set_attr "type" "I,M")])
(define_insn "zero_extendsidi2"
- [(set (match_operand:DI 0 "grfr_register_operand" "=r,r,*f")
+ [(set (match_operand:DI 0 "grfr_register_operand" "=r,r,?f")
(zero_extend:DI
- (match_operand:SI 1 "grfr_nonimmediate_operand" "r,m,*f")))]
+ (match_operand:SI 1 "grfr_nonimmediate_operand" "r,m,f")))]
""
"@
zxt4 %0 = %1
ld4%O1 %0 = %1%P1
- fsxt.r %0 = f1, %1%B0"
+ fmix.r %0 = f0, %1%B0"
[(set_attr "type" "I,M,F")])
;; Convert between floating point types of different sizes.
@@ -997,34 +1000,53 @@
;; would let combine merge the thing into adjacent insns.
(define_insn_and_split "extendsfdf2"
- [(set (match_operand:DF 0 "fr_register_operand" "=f,f")
- (float_extend:DF (match_operand:SF 1 "fr_register_operand" "0,f")))]
+ [(set (match_operand:DF 0 "grfr_nonimmediate_operand" "=f,f,f,f,m,*r")
+ (float_extend:DF
+ (match_operand:SF 1 "grfr_nonimmediate_operand" "0,f,m,*r,f,f")))]
""
- "mov %0 = %1"
+ "@
+ mov %0 = %1
+ mov %0 = %1
+ ldfs %0 = %1%P1
+ setf.s %0 = %1
+ stfd %0 = %1%P0
+ getf.d %0 = %1"
"reload_completed"
[(set (match_dup 0) (float_extend:DF (match_dup 1)))]
"if (true_regnum (operands[0]) == true_regnum (operands[1])) DONE;"
- [(set_attr "type" "F")])
+ [(set_attr "type" "F,F,M,M,M,M")])
(define_insn_and_split "extendsftf2"
- [(set (match_operand:TF 0 "fr_register_operand" "=f,f")
- (float_extend:TF (match_operand:SF 1 "fr_register_operand" "0,f")))]
+ [(set (match_operand:TF 0 "fr_nonimmediate_operand" "=f,f,f,f,Q")
+ (float_extend:TF
+ (match_operand:SF 1 "grfr_nonimmediate_operand" "0,f,Q,*r,f")))]
""
- "mov %0 = %1"
+ "@
+ mov %0 = %1
+ mov %0 = %1
+ ldfs %0 = %1%P1
+ setf.s %0 = %1
+ stfe %0 = %1%P0"
"reload_completed"
[(set (match_dup 0) (float_extend:TF (match_dup 1)))]
"if (true_regnum (operands[0]) == true_regnum (operands[1])) DONE;"
- [(set_attr "type" "F")])
+ [(set_attr "type" "F,F,M,M,M")])
(define_insn_and_split "extenddftf2"
- [(set (match_operand:TF 0 "fr_register_operand" "=f,f")
- (float_extend:TF (match_operand:DF 1 "fr_register_operand" "0,f")))]
+ [(set (match_operand:TF 0 "fr_nonimmediate_operand" "=f,f,f,f,Q")
+ (float_extend:TF
+ (match_operand:DF 1 "grfr_nonimmediate_operand" "0,f,Q,*r,f")))]
""
- "mov %0 = %1"
+ "@
+ mov %0 = %1
+ mov %0 = %1
+ ldfd %0 = %1%P1
+ setf.d %0 = %1
+ stfe %0 = %1%P0"
"reload_completed"
[(set (match_dup 0) (float_extend:TF (match_dup 1)))]
"if (true_regnum (operands[0]) == true_regnum (operands[1])) DONE;"
- [(set_attr "type" "F")])
+ [(set_attr "type" "F,F,M,M,M")])
(define_insn "truncdfsf2"
[(set (match_operand:SF 0 "fr_register_operand" "=f")
@@ -1077,6 +1099,14 @@
"fcvt.fx.trunc %0 = %1%B0"
[(set_attr "type" "F")])
+(define_insn "fix_trunctfdi2_alts"
+ [(set (match_operand:DI 0 "fr_register_operand" "=f")
+ (fix:DI (match_operand:TF 1 "fr_register_operand" "f")))
+ (use (match_operand:SI 2 "const_int_operand" ""))]
+ ""
+ "fcvt.fx.trunc.s%2 %0 = %1%B0"
+ [(set_attr "type" "F")])
+
;; Convert between unsigned integer types and floating point.
(define_insn "floatunsdisf2"
@@ -1120,6 +1150,14 @@
""
"fcvt.fxu.trunc %0 = %1%B0"
[(set_attr "type" "F")])
+
+(define_insn "fixuns_trunctfdi2_alts"
+ [(set (match_operand:DI 0 "fr_register_operand" "=f")
+ (unsigned_fix:DI (match_operand:TF 1 "fr_register_operand" "f")))
+ (use (match_operand:SI 2 "const_int_operand" ""))]
+ ""
+ "fcvt.fxu.trunc.s%2 %0 = %1%B0"
+ [(set_attr "type" "F")])
;; ::::::::::::::::::::
;; ::
@@ -1400,7 +1438,7 @@
"xma.l %0 = %1, %2, f0%B0"
[(set_attr "type" "F")])
-(define_insn "*maddsi3"
+(define_insn "maddsi4"
[(set (match_operand:SI 0 "fr_register_operand" "=f")
(plus:SI (mult:SI (match_operand:SI 1 "grfr_register_operand" "f")
(match_operand:SI 2 "grfr_register_operand" "f"))
@@ -1481,6 +1519,172 @@
operands[3] = gen_reg_rtx (CCmode);
}")
+(define_expand "divsi3"
+ [(set (match_operand:SI 0 "register_operand" "")
+ (div:SI (match_operand:SI 1 "general_operand" "")
+ (match_operand:SI 2 "general_operand" "")))]
+ "TARGET_INLINE_DIV"
+ "
+{
+ rtx op1_tf, op2_tf, op0_tf, op0_di, twon34;
+
+ op0_tf = gen_reg_rtx (TFmode);
+ op0_di = gen_reg_rtx (DImode);
+
+ if (CONSTANT_P (operands[1]))
+ operands[1] = force_reg (SImode, operands[1]);
+ op1_tf = gen_reg_rtx (TFmode);
+ expand_float (op1_tf, operands[1], 0);
+
+ if (CONSTANT_P (operands[2]))
+ operands[2] = force_reg (SImode, operands[2]);
+ op2_tf = gen_reg_rtx (TFmode);
+ expand_float (op2_tf, operands[2], 0);
+
+ /* 2^-34 */
+#if 0
+ twon34 = (CONST_DOUBLE_FROM_REAL_VALUE
+ (REAL_VALUE_FROM_TARGET_SINGLE (0x2e800000), TFmode));
+ twon34 = force_reg (TFmode, twon34);
+#else
+ twon34 = gen_reg_rtx (TFmode);
+ convert_move (twon34, force_const_mem (SFmode, CONST_DOUBLE_FROM_REAL_VALUE (REAL_VALUE_FROM_TARGET_SINGLE (0x2e800000), SFmode)), 0);
+#endif
+
+ emit_insn (gen_divsi3_internal (op0_tf, op1_tf, op2_tf, twon34));
+
+ emit_insn (gen_fix_trunctfdi2_alts (op0_di, op0_tf, const1_rtx));
+ emit_move_insn (operands[0], gen_lowpart (SImode, op0_di));
+ DONE;
+}")
+
+(define_expand "modsi3"
+ [(set (match_operand:SI 0 "register_operand" "")
+ (mod:SI (match_operand:SI 1 "general_operand" "")
+ (match_operand:SI 2 "general_operand" "")))]
+ "TARGET_INLINE_DIV"
+ "
+{
+ rtx op2_neg, op1_di, div;
+
+ div = gen_reg_rtx (SImode);
+ emit_insn (gen_divsi3 (div, operands[1], operands[2]));
+
+ op2_neg = expand_unop (SImode, neg_optab, operands[2], NULL_RTX, 0);
+
+ /* This is a trick to get us to reuse the value that we're sure to
+ have already copied to the FP regs. */
+ op1_di = gen_reg_rtx (DImode);
+ convert_move (op1_di, operands[1], 0);
+
+ emit_insn (gen_maddsi4 (operands[0], div, op2_neg,
+ gen_lowpart (SImode, op1_di)));
+ DONE;
+}")
+
+(define_expand "udivsi3"
+ [(set (match_operand:SI 0 "register_operand" "")
+ (udiv:SI (match_operand:SI 1 "general_operand" "")
+ (match_operand:SI 2 "general_operand" "")))]
+ "TARGET_INLINE_DIV"
+ "
+{
+ rtx op1_tf, op2_tf, op0_tf, op0_di, twon34;
+
+ op0_tf = gen_reg_rtx (TFmode);
+ op0_di = gen_reg_rtx (DImode);
+
+ if (CONSTANT_P (operands[1]))
+ operands[1] = force_reg (SImode, operands[1]);
+ op1_tf = gen_reg_rtx (TFmode);
+ expand_float (op1_tf, operands[1], 1);
+
+ if (CONSTANT_P (operands[2]))
+ operands[2] = force_reg (SImode, operands[2]);
+ op2_tf = gen_reg_rtx (TFmode);
+ expand_float (op2_tf, operands[2], 1);
+
+ /* 2^-34 */
+#if 0
+ twon34 = (CONST_DOUBLE_FROM_REAL_VALUE
+ (REAL_VALUE_FROM_TARGET_SINGLE (0x2e800000), TFmode));
+ twon34 = force_reg (TFmode, twon34);
+#else
+ twon34 = gen_reg_rtx (TFmode);
+ convert_move (twon34, force_const_mem (SFmode, CONST_DOUBLE_FROM_REAL_VALUE (REAL_VALUE_FROM_TARGET_SINGLE (0x2e800000), SFmode)), 0);
+#endif
+
+ emit_insn (gen_divsi3_internal (op0_tf, op1_tf, op2_tf, twon34));
+
+ emit_insn (gen_fixuns_trunctfdi2_alts (op0_di, op0_tf, const1_rtx));
+ emit_move_insn (operands[0], gen_lowpart (SImode, op0_di));
+ DONE;
+}")
+
+(define_expand "umodsi3"
+ [(set (match_operand:SI 0 "register_operand" "")
+ (umod:SI (match_operand:SI 1 "general_operand" "")
+ (match_operand:SI 2 "general_operand" "")))]
+ "TARGET_INLINE_DIV"
+ "
+{
+ rtx op2_neg, op1_di, div;
+
+ div = gen_reg_rtx (SImode);
+ emit_insn (gen_udivsi3 (div, operands[1], operands[2]));
+
+ op2_neg = expand_unop (SImode, neg_optab, operands[2], NULL_RTX, 0);
+
+ /* This is a trick to get us to reuse the value that we're sure to
+ have already copied to the FP regs. */
+ op1_di = gen_reg_rtx (DImode);
+ convert_move (op1_di, operands[1], 1);
+
+ emit_insn (gen_maddsi4 (operands[0], div, op2_neg,
+ gen_lowpart (SImode, op1_di)));
+ DONE;
+}")
+
+(define_insn_and_split "divsi3_internal"
+ [(set (match_operand:TF 0 "fr_register_operand" "=&f")
+ (float:TF (div:SI (match_operand:TF 1 "fr_register_operand" "f")
+ (match_operand:TF 2 "fr_register_operand" "f"))))
+ (clobber (match_scratch:TF 4 "=&f"))
+ (clobber (match_scratch:TF 5 "=&f"))
+ (clobber (match_scratch:CC 6 "=c"))
+ (use (match_operand:TF 3 "fr_register_operand" "f"))]
+ "TARGET_INLINE_DIV"
+ "#"
+ "&& reload_completed"
+ [(parallel [(set (match_dup 0) (div:TF (const_int 1) (match_dup 2)))
+ (set (match_dup 6) (unspec:CC [(match_dup 1) (match_dup 2)] 5))
+ (use (const_int 1))])
+ (cond_exec (ne (match_dup 6) (const_int 0))
+ (parallel [(set (match_dup 4) (mult:TF (match_dup 1) (match_dup 0)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 6) (const_int 0))
+ (parallel [(set (match_dup 5)
+ (plus:TF (neg:TF (mult:TF (match_dup 2) (match_dup 0)))
+ (match_dup 7)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 6) (const_int 0))
+ (parallel [(set (match_dup 4)
+ (plus:TF (mult:TF (match_dup 5) (match_dup 4))
+ (match_dup 4)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 6) (const_int 0))
+ (parallel [(set (match_dup 5)
+ (plus:TF (mult:TF (match_dup 5) (match_dup 5))
+ (match_dup 3)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 6) (const_int 0))
+ (parallel [(set (match_dup 0)
+ (plus:TF (mult:TF (match_dup 5) (match_dup 4))
+ (match_dup 4)))
+ (use (const_int 1))]))
+ ]
+ "operands[7] = CONST1_RTX (TFmode);"
+ [(set_attr "predicable" "no")])
;; ::::::::::::::::::::
;; ::
@@ -1557,7 +1761,7 @@
;; ??? Maybe we should change how adds are canonicalized.
-(define_insn "*madddi3"
+(define_insn "madddi4"
[(set (match_operand:DI 0 "fr_register_operand" "=f")
(plus:DI (mult:DI (match_operand:DI 1 "grfr_register_operand" "f")
(match_operand:DI 2 "grfr_register_operand" "f"))
@@ -1572,10 +1776,10 @@
;; We have to use nonmemory_operand for operand 4, to ensure that the
;; validate_changes call inside eliminate_regs will always succeed. If it
-;; doesn't succeed, then this remain a madddi3 pattern, and will be reloaded
+;; doesn't succeed, then this remain a madddi4 pattern, and will be reloaded
;; incorrectly.
-(define_insn "*madddi3_elim"
+(define_insn "*madddi4_elim"
[(set (match_operand:DI 0 "register_operand" "=&r")
(plus:DI (plus:DI (mult:DI (match_operand:DI 1 "register_operand" "f")
(match_operand:DI 2 "register_operand" "f"))
@@ -1734,6 +1938,208 @@
"popcnt %0 = %1"
[(set_attr "type" "I")])
+(define_expand "divdi3"
+ [(set (match_operand:DI 0 "register_operand" "")
+ (div:DI (match_operand:DI 1 "general_operand" "")
+ (match_operand:DI 2 "general_operand" "")))]
+ "TARGET_INLINE_DIV"
+ "
+{
+ rtx op1_tf, op2_tf, op0_tf;
+
+ op0_tf = gen_reg_rtx (TFmode);
+
+ if (CONSTANT_P (operands[1]))
+ operands[1] = force_reg (DImode, operands[1]);
+ op1_tf = gen_reg_rtx (TFmode);
+ expand_float (op1_tf, operands[1], 0);
+
+ if (CONSTANT_P (operands[2]))
+ operands[2] = force_reg (DImode, operands[2]);
+ op2_tf = gen_reg_rtx (TFmode);
+ expand_float (op2_tf, operands[2], 0);
+
+ if (TARGET_INLINE_DIV_LAT)
+ emit_insn (gen_divdi3_internal_lat (op0_tf, op1_tf, op2_tf));
+ else
+ emit_insn (gen_divdi3_internal_thr (op0_tf, op1_tf, op2_tf));
+
+ emit_insn (gen_fix_trunctfdi2_alts (operands[0], op0_tf, const1_rtx));
+ DONE;
+}")
+
+(define_expand "moddi3"
+ [(set (match_operand:DI 0 "register_operand" "")
+ (mod:SI (match_operand:DI 1 "general_operand" "")
+ (match_operand:DI 2 "general_operand" "")))]
+ "TARGET_INLINE_DIV"
+ "
+{
+ rtx op2_neg, div;
+
+ div = gen_reg_rtx (DImode);
+ emit_insn (gen_divdi3 (div, operands[1], operands[2]));
+
+ op2_neg = expand_unop (DImode, neg_optab, operands[2], NULL_RTX, 0);
+
+ emit_insn (gen_madddi4 (operands[0], div, op2_neg, operands[1]));
+ DONE;
+}")
+
+(define_expand "udivdi3"
+ [(set (match_operand:DI 0 "register_operand" "")
+ (udiv:DI (match_operand:DI 1 "general_operand" "")
+ (match_operand:DI 2 "general_operand" "")))]
+ "TARGET_INLINE_DIV"
+ "
+{
+ rtx op1_tf, op2_tf, op0_tf;
+
+ op0_tf = gen_reg_rtx (TFmode);
+
+ if (CONSTANT_P (operands[1]))
+ operands[1] = force_reg (DImode, operands[1]);
+ op1_tf = gen_reg_rtx (TFmode);
+ expand_float (op1_tf, operands[1], 1);
+
+ if (CONSTANT_P (operands[2]))
+ operands[2] = force_reg (DImode, operands[2]);
+ op2_tf = gen_reg_rtx (TFmode);
+ expand_float (op2_tf, operands[2], 1);
+
+ if (TARGET_INLINE_DIV_LAT)
+ emit_insn (gen_divdi3_internal_lat (op0_tf, op1_tf, op2_tf));
+ else
+ emit_insn (gen_divdi3_internal_thr (op0_tf, op1_tf, op2_tf));
+
+ emit_insn (gen_fixuns_trunctfdi2_alts (operands[0], op0_tf, const1_rtx));
+ DONE;
+}")
+
+(define_expand "umoddi3"
+ [(set (match_operand:DI 0 "register_operand" "")
+ (umod:DI (match_operand:DI 1 "general_operand" "")
+ (match_operand:DI 2 "general_operand" "")))]
+ "TARGET_INLINE_DIV"
+ "
+{
+ rtx op2_neg, div;
+
+ div = gen_reg_rtx (DImode);
+ emit_insn (gen_udivdi3 (div, operands[1], operands[2]));
+
+ op2_neg = expand_unop (DImode, neg_optab, operands[2], NULL_RTX, 0);
+
+ emit_insn (gen_madddi4 (operands[0], div, op2_neg, operands[1]));
+ DONE;
+}")
+
+(define_insn_and_split "divdi3_internal_lat"
+ [(set (match_operand:TF 0 "fr_register_operand" "=&f")
+ (float:TF (div:SI (match_operand:TF 1 "fr_register_operand" "f")
+ (match_operand:TF 2 "fr_register_operand" "f"))))
+ (clobber (match_scratch:TF 3 "=&f"))
+ (clobber (match_scratch:TF 4 "=&f"))
+ (clobber (match_scratch:TF 5 "=&f"))
+ (clobber (match_scratch:CC 6 "=c"))]
+ "TARGET_INLINE_DIV_LAT"
+ "#"
+ "&& reload_completed"
+ [(parallel [(set (match_dup 0) (div:TF (const_int 1) (match_dup 2)))
+ (set (match_dup 6) (unspec:CC [(match_dup 1) (match_dup 2)] 5))
+ (use (const_int 1))])
+ (cond_exec (ne (match_dup 6) (const_int 0))
+ (parallel [(set (match_dup 3)
+ (plus:TF (neg:TF (mult:TF (match_dup 2) (match_dup 0)))
+ (match_dup 7)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 6) (const_int 0))
+ (parallel [(set (match_dup 4) (mult:TF (match_dup 1) (match_dup 0)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 6) (const_int 0))
+ (parallel [(set (match_dup 5) (mult:TF (match_dup 3) (match_dup 3)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 6) (const_int 0))
+ (parallel [(set (match_dup 4)
+ (plus:TF (mult:TF (match_dup 3) (match_dup 4))
+ (match_dup 4)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 6) (const_int 0))
+ (parallel [(set (match_dup 0)
+ (plus:TF (mult:TF (match_dup 3) (match_dup 0))
+ (match_dup 0)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 6) (const_int 0))
+ (parallel [(set (match_dup 3)
+ (plus:TF (mult:TF (match_dup 5) (match_dup 4))
+ (match_dup 4)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 6) (const_int 0))
+ (parallel [(set (match_dup 0)
+ (plus:TF (mult:TF (match_dup 5) (match_dup 0))
+ (match_dup 0)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 6) (const_int 0))
+ (parallel [(set (match_dup 4)
+ (plus:TF (neg:TF (mult:TF (match_dup 2) (match_dup 3)))
+ (match_dup 1)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 6) (const_int 0))
+ (parallel [(set (match_dup 0)
+ (plus:TF (mult:TF (match_dup 4) (match_dup 0))
+ (match_dup 3)))
+ (use (const_int 1))]))
+ ]
+ "operands[7] = CONST1_RTX (TFmode);"
+ [(set_attr "predicable" "no")])
+
+(define_insn_and_split "divdi3_internal_thr"
+ [(set (match_operand:TF 0 "fr_register_operand" "=&f")
+ (float:TF (div:SI (match_operand:TF 1 "fr_register_operand" "f")
+ (match_operand:TF 2 "fr_register_operand" "f"))))
+ (clobber (match_scratch:TF 3 "=&f"))
+ (clobber (match_scratch:TF 4 "=f"))
+ (clobber (match_scratch:CC 5 "=c"))]
+ "TARGET_INLINE_DIV_THR"
+ "#"
+ "&& reload_completed"
+ [(parallel [(set (match_dup 0) (div:TF (const_int 1) (match_dup 2)))
+ (set (match_dup 5) (unspec:CC [(match_dup 1) (match_dup 2)] 5))
+ (use (const_int 1))])
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (parallel [(set (match_dup 3)
+ (plus:TF (neg:TF (mult:TF (match_dup 2) (match_dup 0)))
+ (match_dup 6)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (parallel [(set (match_dup 0)
+ (plus:TF (mult:TF (match_dup 3) (match_dup 0))
+ (match_dup 0)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (parallel [(set (match_dup 3) (mult:TF (match_dup 3) (match_dup 3)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (parallel [(set (match_dup 0)
+ (plus:TF (mult:TF (match_dup 3) (match_dup 0))
+ (match_dup 0)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (parallel [(set (match_dup 3) (mult:TF (match_dup 0) (match_dup 1)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (parallel [(set (match_dup 4)
+ (plus:TF (neg:TF (mult:TF (match_dup 2) (match_dup 3)))
+ (match_dup 1)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (parallel [(set (match_dup 0)
+ (plus:TF (mult:TF (match_dup 4) (match_dup 0))
+ (match_dup 3)))
+ (use (const_int 1))]))
+ ]
+ "operands[6] = CONST1_RTX (TFmode);"
+ [(set_attr "predicable" "no")])
;; ::::::::::::::::::::
;; ::
@@ -1802,7 +2208,7 @@
"fmax %0 = %1, %F2%B0"
[(set_attr "type" "F")])
-(define_insn "*maddsf3"
+(define_insn "*maddsf4"
[(set (match_operand:SF 0 "fr_register_operand" "=f")
(plus:SF (mult:SF (match_operand:SF 1 "fr_register_operand" "f")
(match_operand:SF 2 "fr_register_operand" "f"))
@@ -1811,7 +2217,7 @@
"fma.s %0 = %1, %2, %F3%B0"
[(set_attr "type" "F")])
-(define_insn "*msubsf3"
+(define_insn "*msubsf4"
[(set (match_operand:SF 0 "fr_register_operand" "=f")
(minus:SF (mult:SF (match_operand:SF 1 "fr_register_operand" "f")
(match_operand:SF 2 "fr_register_operand" "f"))
@@ -1830,15 +2236,136 @@
;; ??? Is it possible to canonicalize this as (minus (reg) (mult))?
-(define_insn "*nmaddsf3"
+(define_insn "*nmaddsf4"
[(set (match_operand:SF 0 "fr_register_operand" "=f")
- (plus:SF (neg:SF (mult:SF (match_operand:SF 1 "fr_register_operand" "f")
- (match_operand:SF 2 "fr_register_operand" "f")))
+ (plus:SF (neg:SF (mult:SF
+ (match_operand:SF 1 "fr_register_operand" "f")
+ (match_operand:SF 2 "fr_register_operand" "f")))
(match_operand:SF 3 "fr_reg_or_fp01_operand" "fG")))]
""
"fnma.s %0 = %1, %2, %F3%B0"
[(set_attr "type" "F")])
+(define_expand "divsf3"
+ [(set (match_operand:SF 0 "fr_register_operand" "")
+ (div:SF (match_operand:SF 1 "fr_register_operand" "")
+ (match_operand:SF 2 "fr_register_operand" "")))]
+ "TARGET_INLINE_DIV"
+ "
+{
+ rtx insn;
+ if (TARGET_INLINE_DIV_LAT)
+ insn = gen_divsf3_internal_lat (operands[0], operands[1], operands[2]);
+ else
+ insn = gen_divsf3_internal_thr (operands[0], operands[1], operands[2]);
+ emit_insn (insn);
+ DONE;
+}")
+
+(define_insn_and_split "divsf3_internal_lat"
+ [(set (match_operand:SF 0 "fr_register_operand" "=&f")
+ (div:SF (match_operand:SF 1 "fr_register_operand" "f")
+ (match_operand:SF 2 "fr_register_operand" "f")))
+ (clobber (match_scratch:TF 3 "=&f"))
+ (clobber (match_scratch:TF 4 "=f"))
+ (clobber (match_scratch:CC 5 "=c"))]
+ "TARGET_INLINE_DIV_LAT"
+ "#"
+ "&& reload_completed"
+ [(parallel [(set (match_dup 6) (div:TF (const_int 1) (match_dup 8)))
+ (set (match_dup 5) (unspec:CC [(match_dup 7) (match_dup 8)] 5))
+ (use (const_int 1))])
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (parallel [(set (match_dup 3) (mult:TF (match_dup 7) (match_dup 6)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (parallel [(set (match_dup 4)
+ (plus:TF (neg:TF (mult:TF (match_dup 8) (match_dup 6)))
+ (match_dup 10)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (parallel [(set (match_dup 3)
+ (plus:TF (mult:TF (match_dup 4) (match_dup 3))
+ (match_dup 3)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (parallel [(set (match_dup 4) (mult:TF (match_dup 4) (match_dup 4)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (parallel [(set (match_dup 3)
+ (plus:TF (mult:TF (match_dup 4) (match_dup 3))
+ (match_dup 3)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (parallel [(set (match_dup 4) (mult:TF (match_dup 4) (match_dup 4)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (parallel [(set (match_dup 9)
+ (float_truncate:DF
+ (plus:TF (mult:TF (match_dup 4) (match_dup 3))
+ (match_dup 3))))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (set (match_dup 0)
+ (float_truncate:SF (match_dup 6))))
+ ]
+ "operands[6] = gen_rtx_REG (TFmode, REGNO (operands[0]));
+ operands[7] = gen_rtx_REG (TFmode, REGNO (operands[1]));
+ operands[8] = gen_rtx_REG (TFmode, REGNO (operands[2]));
+ operands[9] = gen_rtx_REG (DFmode, REGNO (operands[0]));
+ operands[10] = CONST1_RTX (TFmode);"
+ [(set_attr "predicable" "no")])
+
+(define_insn_and_split "divsf3_internal_thr"
+ [(set (match_operand:SF 0 "fr_register_operand" "=&f")
+ (div:SF (match_operand:SF 1 "fr_register_operand" "f")
+ (match_operand:SF 2 "fr_register_operand" "f")))
+ (clobber (match_scratch:TF 3 "=&f"))
+ (clobber (match_scratch:TF 4 "=f"))
+ (clobber (match_scratch:CC 5 "=c"))]
+ "TARGET_INLINE_DIV_THR"
+ "#"
+ "&& reload_completed"
+ [(parallel [(set (match_dup 6) (div:TF (const_int 1) (match_dup 8)))
+ (set (match_dup 5) (unspec:CC [(match_dup 7) (match_dup 8)] 5))
+ (use (const_int 1))])
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (parallel [(set (match_dup 3)
+ (plus:TF (neg:TF (mult:TF (match_dup 8) (match_dup 6)))
+ (match_dup 10)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (parallel [(set (match_dup 3)
+ (plus:TF (mult:TF (match_dup 3) (match_dup 3))
+ (match_dup 3)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (parallel [(set (match_dup 6)
+ (plus:TF (mult:TF (match_dup 3) (match_dup 6))
+ (match_dup 6)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (parallel [(set (match_dup 9)
+ (float_truncate:SF
+ (mult:TF (match_dup 7) (match_dup 6))))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (parallel [(set (match_dup 4)
+ (plus:TF (neg:TF (mult:TF (match_dup 8) (match_dup 3)))
+ (match_dup 7)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (set (match_dup 0)
+ (float_truncate:SF
+ (plus:TF (mult:TF (match_dup 4) (match_dup 6))
+ (match_dup 3)))))
+ ]
+ "operands[6] = gen_rtx_REG (TFmode, REGNO (operands[0]));
+ operands[7] = gen_rtx_REG (TFmode, REGNO (operands[1]));
+ operands[8] = gen_rtx_REG (TFmode, REGNO (operands[2]));
+ operands[9] = gen_rtx_REG (SFmode, REGNO (operands[3]));
+ operands[10] = CONST1_RTX (TFmode);"
+ [(set_attr "predicable" "no")])
;; ::::::::::::::::::::
;; ::
@@ -1854,6 +2381,15 @@
"fadd.d %0 = %1, %F2%B0"
[(set_attr "type" "F")])
+(define_insn "*adddf3_trunc"
+ [(set (match_operand:SF 0 "fr_register_operand" "=f")
+ (float_truncate:SF
+ (plus:DF (match_operand:DF 1 "fr_register_operand" "%f")
+ (match_operand:DF 2 "fr_reg_or_fp01_operand" "fG"))))]
+ ""
+ "fadd.s %0 = %1, %F2%B0"
+ [(set_attr "type" "F")])
+
(define_insn "subdf3"
[(set (match_operand:DF 0 "fr_register_operand" "=f")
(minus:DF (match_operand:DF 1 "fr_reg_or_fp01_operand" "fG")
@@ -1862,6 +2398,15 @@
"fsub.d %0 = %F1, %F2%B0"
[(set_attr "type" "F")])
+(define_insn "*subdf3_trunc"
+ [(set (match_operand:SF 0 "fr_register_operand" "=f")
+ (float_truncate:SF
+ (minus:DF (match_operand:DF 1 "fr_reg_or_fp01_operand" "fG")
+ (match_operand:DF 2 "fr_reg_or_fp01_operand" "fG"))))]
+ ""
+ "fsub.s %0 = %F1, %F2%B0"
+ [(set_attr "type" "F")])
+
(define_insn "muldf3"
[(set (match_operand:DF 0 "fr_register_operand" "=f")
(mult:DF (match_operand:DF 1 "fr_register_operand" "f")
@@ -1870,6 +2415,15 @@
"fmpy.d %0 = %1, %2%B0"
[(set_attr "type" "F")])
+(define_insn "*muldf3_trunc"
+ [(set (match_operand:SF 0 "fr_register_operand" "=f")
+ (float_truncate:SF
+ (mult:DF (match_operand:DF 1 "fr_register_operand" "f")
+ (match_operand:DF 2 "fr_register_operand" "f"))))]
+ ""
+ "fmpy.s %0 = %1, %2%B0"
+ [(set_attr "type" "F")])
+
(define_insn "absdf2"
[(set (match_operand:DF 0 "fr_register_operand" "=f")
(abs:DF (match_operand:DF 1 "fr_register_operand" "f")))]
@@ -1907,7 +2461,7 @@
"fmax %0 = %1, %F2%B0"
[(set_attr "type" "F")])
-(define_insn "*madddf3"
+(define_insn "*madddf4"
[(set (match_operand:DF 0 "fr_register_operand" "=f")
(plus:DF (mult:DF (match_operand:DF 1 "fr_register_operand" "f")
(match_operand:DF 2 "fr_register_operand" "f"))
@@ -1916,7 +2470,17 @@
"fma.d %0 = %1, %2, %F3%B0"
[(set_attr "type" "F")])
-(define_insn "*msubdf3"
+(define_insn "*madddf4_trunc"
+ [(set (match_operand:SF 0 "fr_register_operand" "=f")
+ (float_truncate:SF
+ (plus:DF (mult:DF (match_operand:DF 1 "fr_register_operand" "f")
+ (match_operand:DF 2 "fr_register_operand" "f"))
+ (match_operand:DF 3 "fr_reg_or_fp01_operand" "fG"))))]
+ ""
+ "fma.s %0 = %1, %2, %F3%B0"
+ [(set_attr "type" "F")])
+
+(define_insn "*msubdf4"
[(set (match_operand:DF 0 "fr_register_operand" "=f")
(minus:DF (mult:DF (match_operand:DF 1 "fr_register_operand" "f")
(match_operand:DF 2 "fr_register_operand" "f"))
@@ -1925,6 +2489,16 @@
"fms.d %0 = %1, %2, %F3%B0"
[(set_attr "type" "F")])
+(define_insn "*msubdf4_trunc"
+ [(set (match_operand:SF 0 "fr_register_operand" "=f")
+ (float_truncate:SF
+ (minus:DF (mult:DF (match_operand:DF 1 "fr_register_operand" "f")
+ (match_operand:DF 2 "fr_register_operand" "f"))
+ (match_operand:DF 3 "fr_reg_or_fp01_operand" "fG"))))]
+ ""
+ "fms.s %0 = %1, %2, %F3%B0"
+ [(set_attr "type" "F")])
+
(define_insn "*nmuldf3"
[(set (match_operand:DF 0 "fr_register_operand" "=f")
(neg:DF (mult:DF (match_operand:DF 1 "fr_register_operand" "f")
@@ -1933,16 +2507,205 @@
"fnmpy.d %0 = %1, %2%B0"
[(set_attr "type" "F")])
+(define_insn "*nmuldf3_trunc"
+ [(set (match_operand:SF 0 "fr_register_operand" "=f")
+ (float_truncate:SF
+ (neg:DF (mult:DF (match_operand:DF 1 "fr_register_operand" "f")
+ (match_operand:DF 2 "fr_register_operand" "f")))))]
+ ""
+ "fnmpy.s %0 = %1, %2%B0"
+ [(set_attr "type" "F")])
+
;; ??? Is it possible to canonicalize this as (minus (reg) (mult))?
-(define_insn "*nmadddf3"
+(define_insn "*nmadddf4"
[(set (match_operand:DF 0 "fr_register_operand" "=f")
- (plus:DF (neg:DF (mult:DF (match_operand:DF 1 "fr_register_operand" "f")
- (match_operand:DF 2 "fr_register_operand" "f")))
+ (plus:DF (neg:DF (mult:DF
+ (match_operand:DF 1 "fr_register_operand" "f")
+ (match_operand:DF 2 "fr_register_operand" "f")))
(match_operand:DF 3 "fr_reg_or_fp01_operand" "fG")))]
""
"fnma.d %0 = %1, %2, %F3%B0"
[(set_attr "type" "F")])
+
+(define_insn "*nmadddf4_alts"
+ [(set (match_operand:DF 0 "fr_register_operand" "=f")
+ (plus:DF (neg:DF (mult:DF
+ (match_operand:DF 1 "fr_register_operand" "f")
+ (match_operand:DF 2 "fr_register_operand" "f")))
+ (match_operand:DF 3 "fr_reg_or_fp01_operand" "fG")))
+ (use (match_operand:SI 4 "const_int_operand" ""))]
+ ""
+ "fnma.d.s%4 %0 = %1, %2, %F3%B0"
+ [(set_attr "type" "F")])
+
+(define_insn "*nmadddf4_trunc"
+ [(set (match_operand:SF 0 "fr_register_operand" "=f")
+ (float_truncate:SF
+ (plus:DF (neg:DF (mult:DF
+ (match_operand:DF 1 "fr_register_operand" "f")
+ (match_operand:DF 2 "fr_register_operand" "f")))
+ (match_operand:DF 3 "fr_reg_or_fp01_operand" "fG"))))]
+ ""
+ "fnma.s %0 = %1, %2, %F3%B0"
+ [(set_attr "type" "F")])
+
+(define_expand "divdf3"
+ [(set (match_operand:DF 0 "fr_register_operand" "")
+ (div:DF (match_operand:DF 1 "fr_register_operand" "")
+ (match_operand:DF 2 "fr_register_operand" "")))]
+ "TARGET_INLINE_DIV"
+ "
+{
+ rtx insn;
+ if (TARGET_INLINE_DIV_LAT)
+ insn = gen_divdf3_internal_lat (operands[0], operands[1], operands[2]);
+ else
+ insn = gen_divdf3_internal_thr (operands[0], operands[1], operands[2]);
+ emit_insn (insn);
+ DONE;
+}")
+
+(define_insn_and_split "divdf3_internal_lat"
+ [(set (match_operand:DF 0 "fr_register_operand" "=&f")
+ (div:DF (match_operand:DF 1 "fr_register_operand" "f")
+ (match_operand:DF 2 "fr_register_operand" "f")))
+ (clobber (match_scratch:TF 3 "=&f"))
+ (clobber (match_scratch:TF 4 "=&f"))
+ (clobber (match_scratch:TF 5 "=&f"))
+ (clobber (match_scratch:CC 6 "=c"))]
+ "TARGET_INLINE_DIV_LAT"
+ "#"
+ "&& reload_completed"
+ [(parallel [(set (match_dup 7) (div:TF (const_int 1) (match_dup 9)))
+ (set (match_dup 6) (unspec:CC [(match_dup 8) (match_dup 9)] 5))
+ (use (const_int 1))])
+ (cond_exec (ne (match_dup 6) (const_int 0))
+ (parallel [(set (match_dup 3) (mult:TF (match_dup 8) (match_dup 7)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 6) (const_int 0))
+ (parallel [(set (match_dup 4)
+ (plus:TF (neg:TF (mult:TF (match_dup 9) (match_dup 7)))
+ (match_dup 12)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 6) (const_int 0))
+ (parallel [(set (match_dup 3)
+ (plus:TF (mult:TF (match_dup 4) (match_dup 3))
+ (match_dup 3)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 6) (const_int 0))
+ (parallel [(set (match_dup 5) (mult:TF (match_dup 4) (match_dup 4)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 6) (const_int 0))
+ (parallel [(set (match_dup 7)
+ (plus:TF (mult:TF (match_dup 4) (match_dup 7))
+ (match_dup 7)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 6) (const_int 0))
+ (parallel [(set (match_dup 3)
+ (plus:TF (mult:TF (match_dup 5) (match_dup 3))
+ (match_dup 3)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 6) (const_int 0))
+ (parallel [(set (match_dup 4) (mult:TF (match_dup 5) (match_dup 5)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 6) (const_int 0))
+ (parallel [(set (match_dup 7)
+ (plus:TF (mult:TF (match_dup 5) (match_dup 7))
+ (match_dup 7)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 6) (const_int 0))
+ (parallel [(set (match_dup 10)
+ (float_truncate:DF
+ (plus:TF (mult:TF (match_dup 4) (match_dup 3))
+ (match_dup 3))))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 6) (const_int 0))
+ (parallel [(set (match_dup 7)
+ (plus:TF (mult:TF (match_dup 4) (match_dup 7))
+ (match_dup 7)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 6) (const_int 0))
+ (parallel [(set (match_dup 11)
+ (float_truncate:DF
+ (plus:TF (neg:TF (mult:TF (match_dup 9) (match_dup 3)))
+ (match_dup 8))))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 6) (const_int 0))
+ (set (match_dup 0)
+ (float_truncate:DF (plus:TF (mult:TF (match_dup 5) (match_dup 7))
+ (match_dup 3)))))
+ ]
+ "operands[7] = gen_rtx_REG (TFmode, REGNO (operands[0]));
+ operands[8] = gen_rtx_REG (TFmode, REGNO (operands[1]));
+ operands[9] = gen_rtx_REG (TFmode, REGNO (operands[2]));
+ operands[10] = gen_rtx_REG (DFmode, REGNO (operands[3]));
+ operands[11] = gen_rtx_REG (DFmode, REGNO (operands[5]));
+ operands[12] = CONST1_RTX (TFmode);"
+ [(set_attr "predicable" "no")])
+
+(define_insn_and_split "divdf3_internal_thr"
+ [(set (match_operand:DF 0 "fr_register_operand" "=&f")
+ (div:DF (match_operand:DF 1 "fr_register_operand" "f")
+ (match_operand:DF 2 "fr_register_operand" "f")))
+ (clobber (match_scratch:TF 3 "=&f"))
+ (clobber (match_scratch:DF 4 "=f"))
+ (clobber (match_scratch:CC 5 "=c"))]
+ "TARGET_INLINE_DIV_THR"
+ "#"
+ "&& reload_completed"
+ [(parallel [(set (match_dup 6) (div:TF (const_int 1) (match_dup 8)))
+ (set (match_dup 5) (unspec:CC [(match_dup 7) (match_dup 8)] 5))
+ (use (const_int 1))])
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (parallel [(set (match_dup 3)
+ (plus:TF (neg:TF (mult:TF (match_dup 8) (match_dup 6)))
+ (match_dup 10)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (parallel [(set (match_dup 6)
+ (plus:TF (mult:TF (match_dup 3) (match_dup 6))
+ (match_dup 6)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (parallel [(set (match_dup 3)
+ (mult:TF (match_dup 3) (match_dup 3)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (parallel [(set (match_dup 6)
+ (plus:TF (mult:TF (match_dup 3) (match_dup 6))
+ (match_dup 6)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (parallel [(set (match_dup 3)
+ (mult:TF (match_dup 3) (match_dup 3)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (parallel [(set (match_dup 6)
+ (plus:TF (mult:TF (match_dup 3) (match_dup 6))
+ (match_dup 6)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (parallel [(set (match_dup 9)
+ (float_truncate:DF
+ (mult:TF (match_dup 7) (match_dup 3))))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (parallel [(set (match_dup 4)
+ (plus:DF (neg:DF (mult:DF (match_dup 2) (match_dup 9)))
+ (match_dup 1)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (set (match_dup 0)
+ (plus:DF (mult:DF (match_dup 4) (match_dup 0))
+ (match_dup 9))))
+ ]
+ "operands[6] = gen_rtx_REG (TFmode, REGNO (operands[0]));
+ operands[7] = gen_rtx_REG (TFmode, REGNO (operands[1]));
+ operands[8] = gen_rtx_REG (TFmode, REGNO (operands[2]));
+ operands[9] = gen_rtx_REG (DFmode, REGNO (operands[3]));
+ operands[10] = CONST1_RTX (TFmode);"
+ [(set_attr "predicable" "no")])
;; ::::::::::::::::::::
;; ::
@@ -1958,6 +2721,24 @@
"fadd %0 = %F1, %F2%B0"
[(set_attr "type" "F")])
+(define_insn "*addtf3_truncsf"
+ [(set (match_operand:SF 0 "fr_register_operand" "=f")
+ (float_truncate:SF
+ (plus:TF (match_operand:TF 1 "tfreg_or_fp01_operand" "fG")
+ (match_operand:TF 2 "tfreg_or_fp01_operand" "fG"))))]
+ ""
+ "fadd.s %0 = %F1, %F2%B0"
+ [(set_attr "type" "F")])
+
+(define_insn "*addtf3_truncdf"
+ [(set (match_operand:DF 0 "fr_register_operand" "=f")
+ (float_truncate:DF
+ (plus:TF (match_operand:TF 1 "tfreg_or_fp01_operand" "fG")
+ (match_operand:TF 2 "tfreg_or_fp01_operand" "fG"))))]
+ ""
+ "fadd.d %0 = %F1, %F2%B0"
+ [(set_attr "type" "F")])
+
(define_insn "subtf3"
[(set (match_operand:TF 0 "fr_register_operand" "=f")
(minus:TF (match_operand:TF 1 "tfreg_or_fp01_operand" "fG")
@@ -1966,6 +2747,24 @@
"fsub %0 = %F1, %F2%B0"
[(set_attr "type" "F")])
+(define_insn "*subtf3_truncsf"
+ [(set (match_operand:SF 0 "fr_register_operand" "=f")
+ (float_truncate:SF
+ (minus:TF (match_operand:TF 1 "tfreg_or_fp01_operand" "fG")
+ (match_operand:TF 2 "tfreg_or_fp01_operand" "fG"))))]
+ ""
+ "fsub.s %0 = %F1, %F2%B0"
+ [(set_attr "type" "F")])
+
+(define_insn "*subtf3_truncdf"
+ [(set (match_operand:DF 0 "fr_register_operand" "=f")
+ (float_truncate:DF
+ (minus:TF (match_operand:TF 1 "tfreg_or_fp01_operand" "fG")
+ (match_operand:TF 2 "tfreg_or_fp01_operand" "fG"))))]
+ ""
+ "fsub.d %0 = %F1, %F2%B0"
+ [(set_attr "type" "F")])
+
(define_insn "multf3"
[(set (match_operand:TF 0 "fr_register_operand" "=f")
(mult:TF (match_operand:TF 1 "tfreg_or_fp01_operand" "fG")
@@ -1974,6 +2773,53 @@
"fmpy %0 = %F1, %F2%B0"
[(set_attr "type" "F")])
+(define_insn "*multf3_truncsf"
+ [(set (match_operand:SF 0 "fr_register_operand" "=f")
+ (float_truncate:SF
+ (mult:TF (match_operand:TF 1 "tfreg_or_fp01_operand" "fG")
+ (match_operand:TF 2 "tfreg_or_fp01_operand" "fG"))))]
+ ""
+ "fmpy.s %0 = %F1, %F2%B0"
+ [(set_attr "type" "F")])
+
+(define_insn "*multf3_truncdf"
+ [(set (match_operand:DF 0 "fr_register_operand" "=f")
+ (float_truncate:DF
+ (mult:TF (match_operand:TF 1 "tfreg_or_fp01_operand" "fG")
+ (match_operand:TF 2 "tfreg_or_fp01_operand" "fG"))))]
+ ""
+ "fmpy.d %0 = %F1, %F2%B0"
+ [(set_attr "type" "F")])
+
+(define_insn "*multf3_alts"
+ [(set (match_operand:TF 0 "fr_register_operand" "=f")
+ (mult:TF (match_operand:TF 1 "tfreg_or_fp01_operand" "fG")
+ (match_operand:TF 2 "tfreg_or_fp01_operand" "fG")))
+ (use (match_operand:SI 3 "const_int_operand" ""))]
+ ""
+ "fmpy.s%3 %0 = %F1, %F2%B0"
+ [(set_attr "type" "F")])
+
+(define_insn "*multf3_truncsf_alts"
+ [(set (match_operand:SF 0 "fr_register_operand" "=f")
+ (float_truncate:SF
+ (mult:TF (match_operand:TF 1 "tfreg_or_fp01_operand" "fG")
+ (match_operand:TF 2 "tfreg_or_fp01_operand" "fG"))))
+ (use (match_operand:SI 3 "const_int_operand" ""))]
+ ""
+ "fmpy.s.s%3 %0 = %F1, %F2%B0"
+ [(set_attr "type" "F")])
+
+(define_insn "*multf3_truncdf_alts"
+ [(set (match_operand:DF 0 "fr_register_operand" "=f")
+ (float_truncate:DF
+ (mult:TF (match_operand:TF 1 "tfreg_or_fp01_operand" "fG")
+ (match_operand:TF 2 "tfreg_or_fp01_operand" "fG"))))
+ (use (match_operand:SI 3 "const_int_operand" ""))]
+ ""
+ "fmpy.d.s%3 %0 = %F1, %F2%B0"
+ [(set_attr "type" "F")])
+
(define_insn "abstf2"
[(set (match_operand:TF 0 "fr_register_operand" "=f")
(abs:TF (match_operand:TF 1 "tfreg_or_fp01_operand" "fG")))]
@@ -2011,7 +2857,7 @@
"fmax %0 = %F1, %F2%B0"
[(set_attr "type" "F")])
-(define_insn "*maddtf3"
+(define_insn "*maddtf4"
[(set (match_operand:TF 0 "fr_register_operand" "=f")
(plus:TF (mult:TF (match_operand:TF 1 "tfreg_or_fp01_operand" "fG")
(match_operand:TF 2 "tfreg_or_fp01_operand" "fG"))
@@ -2020,7 +2866,48 @@
"fma %0 = %F1, %F2, %F3%B0"
[(set_attr "type" "F")])
-(define_insn "*msubtf3"
+(define_insn "*maddtf4_truncsf"
+ [(set (match_operand:SF 0 "fr_register_operand" "=f")
+ (float_truncate:SF
+ (plus:TF (mult:TF (match_operand:TF 1 "tfreg_or_fp01_operand" "fG")
+ (match_operand:TF 2 "tfreg_or_fp01_operand" "fG"))
+ (match_operand:TF 3 "tfreg_or_fp01_operand" "fG"))))]
+ ""
+ "fma.s %0 = %F1, %F2, %F3%B0"
+ [(set_attr "type" "F")])
+
+(define_insn "*maddtf4_truncdf"
+ [(set (match_operand:DF 0 "fr_register_operand" "=f")
+ (float_truncate:DF
+ (plus:TF (mult:TF (match_operand:TF 1 "tfreg_or_fp01_operand" "fG")
+ (match_operand:TF 2 "tfreg_or_fp01_operand" "fG"))
+ (match_operand:TF 3 "tfreg_or_fp01_operand" "fG"))))]
+ ""
+ "fma.d %0 = %F1, %F2, %F3%B0"
+ [(set_attr "type" "F")])
+
+(define_insn "*maddtf4_alts"
+ [(set (match_operand:TF 0 "fr_register_operand" "=f")
+ (plus:TF (mult:TF (match_operand:TF 1 "tfreg_or_fp01_operand" "fG")
+ (match_operand:TF 2 "tfreg_or_fp01_operand" "fG"))
+ (match_operand:TF 3 "tfreg_or_fp01_operand" "fG")))
+ (use (match_operand:SI 4 "const_int_operand" ""))]
+ ""
+ "fma.s%4 %0 = %F1, %F2, %F3%B0"
+ [(set_attr "type" "F")])
+
+(define_insn "*maddtf4_alts_truncdf"
+ [(set (match_operand:DF 0 "fr_register_operand" "=f")
+ (float_truncate:DF
+ (plus:TF (mult:TF (match_operand:TF 1 "tfreg_or_fp01_operand" "fG")
+ (match_operand:TF 2 "tfreg_or_fp01_operand" "fG"))
+ (match_operand:TF 3 "tfreg_or_fp01_operand" "fG"))))
+ (use (match_operand:SI 4 "const_int_operand" ""))]
+ ""
+ "fma.d.s%4 %0 = %F1, %F2, %F3%B0"
+ [(set_attr "type" "F")])
+
+(define_insn "*msubtf4"
[(set (match_operand:TF 0 "fr_register_operand" "=f")
(minus:TF (mult:TF (match_operand:TF 1 "tfreg_or_fp01_operand" "fG")
(match_operand:TF 2 "tfreg_or_fp01_operand" "fG"))
@@ -2029,6 +2916,26 @@
"fms %0 = %F1, %F2, %F3%B0"
[(set_attr "type" "F")])
+(define_insn "*msubtf4_truncsf"
+ [(set (match_operand:SF 0 "fr_register_operand" "=f")
+ (float_truncate:SF
+ (minus:TF (mult:TF (match_operand:TF 1 "tfreg_or_fp01_operand" "fG")
+ (match_operand:TF 2 "tfreg_or_fp01_operand" "fG"))
+ (match_operand:TF 3 "tfreg_or_fp01_operand" "fG"))))]
+ ""
+ "fms.s %0 = %F1, %F2, %F3%B0"
+ [(set_attr "type" "F")])
+
+(define_insn "*msubtf4_truncdf"
+ [(set (match_operand:DF 0 "fr_register_operand" "=f")
+ (float_truncate:DF
+ (minus:TF (mult:TF (match_operand:TF 1 "tfreg_or_fp01_operand" "fG")
+ (match_operand:TF 2 "tfreg_or_fp01_operand" "fG"))
+ (match_operand:TF 3 "tfreg_or_fp01_operand" "fG"))))]
+ ""
+ "fms.d %0 = %F1, %F2, %F3%B0"
+ [(set_attr "type" "F")])
+
(define_insn "*nmultf3"
[(set (match_operand:TF 0 "fr_register_operand" "=f")
(neg:TF (mult:TF (match_operand:TF 1 "tfreg_or_fp01_operand" "fG")
@@ -2037,9 +2944,29 @@
"fnmpy %0 = %F1, %F2%B0"
[(set_attr "type" "F")])
+(define_insn "*nmultf3_truncsf"
+ [(set (match_operand:SF 0 "fr_register_operand" "=f")
+ (float_truncate:SF
+ (neg:TF (mult:TF
+ (match_operand:TF 1 "tfreg_or_fp01_operand" "fG")
+ (match_operand:TF 2 "tfreg_or_fp01_operand" "fG")))))]
+ ""
+ "fnmpy.s %0 = %F1, %F2%B0"
+ [(set_attr "type" "F")])
+
+(define_insn "*nmultf3_truncdf"
+ [(set (match_operand:DF 0 "fr_register_operand" "=f")
+ (float_truncate:DF
+ (neg:TF (mult:TF
+ (match_operand:TF 1 "tfreg_or_fp01_operand" "fG")
+ (match_operand:TF 2 "tfreg_or_fp01_operand" "fG")))))]
+ ""
+ "fnmpy.d %0 = %F1, %F2%B0"
+ [(set_attr "type" "F")])
+
;; ??? Is it possible to canonicalize this as (minus (reg) (mult))?
-(define_insn "*nmaddtf3"
+(define_insn "*nmaddtf4"
[(set (match_operand:TF 0 "fr_register_operand" "=f")
(plus:TF (neg:TF (mult:TF
(match_operand:TF 1 "tfreg_or_fp01_operand" "fG")
@@ -2048,6 +2975,239 @@
""
"fnma %0 = %F1, %F2, %F3%B0"
[(set_attr "type" "F")])
+
+(define_insn "*nmaddtf4_truncsf"
+ [(set (match_operand:SF 0 "fr_register_operand" "=f")
+ (float_truncate:SF
+ (plus:TF (neg:TF (mult:TF
+ (match_operand:TF 1 "tfreg_or_fp01_operand" "fG")
+ (match_operand:TF 2 "tfreg_or_fp01_operand" "fG")))
+ (match_operand:TF 3 "tfreg_or_fp01_operand" "fG"))))]
+ ""
+ "fnma.s %0 = %F1, %F2, %F3%B0"
+ [(set_attr "type" "F")])
+
+(define_insn "*nmaddtf4_truncdf"
+ [(set (match_operand:DF 0 "fr_register_operand" "=f")
+ (float_truncate:DF
+ (plus:TF (neg:TF (mult:TF
+ (match_operand:TF 1 "tfreg_or_fp01_operand" "fG")
+ (match_operand:TF 2 "tfreg_or_fp01_operand" "fG")))
+ (match_operand:TF 3 "tfreg_or_fp01_operand" "fG"))))]
+ ""
+ "fnma.d %0 = %F1, %F2, %F3%B0"
+ [(set_attr "type" "F")])
+
+(define_insn "*nmaddtf4_alts"
+ [(set (match_operand:TF 0 "fr_register_operand" "=f")
+ (plus:TF (neg:TF (mult:TF
+ (match_operand:TF 1 "tfreg_or_fp01_operand" "fG")
+ (match_operand:TF 2 "tfreg_or_fp01_operand" "fG")))
+ (match_operand:TF 3 "tfreg_or_fp01_operand" "fG")))
+ (use (match_operand:SI 4 "const_int_operand" ""))]
+ ""
+ "fnma.s%4 %0 = %F1, %F2, %F3%B0"
+ [(set_attr "type" "F")])
+
+(define_insn "*nmaddtf4_truncdf_alts"
+ [(set (match_operand:DF 0 "fr_register_operand" "=f")
+ (float_truncate:DF
+ (plus:TF (neg:TF
+ (mult:TF
+ (match_operand:TF 1 "tfreg_or_fp01_operand" "fG")
+ (match_operand:TF 2 "tfreg_or_fp01_operand" "fG")))
+ (match_operand:TF 3 "tfreg_or_fp01_operand" "fG"))))
+ (use (match_operand:SI 4 "const_int_operand" ""))]
+ ""
+ "fnma.d.s%4 %0 = %F1, %F2, %F3%B0"
+ [(set_attr "type" "F")])
+
+(define_expand "divtf3"
+ [(set (match_operand:TF 0 "fr_register_operand" "")
+ (div:TF (match_operand:TF 1 "fr_register_operand" "")
+ (match_operand:TF 2 "fr_register_operand" "")))]
+ "TARGET_INLINE_DIV"
+ "
+{
+ rtx insn;
+ if (TARGET_INLINE_DIV_LAT)
+ insn = gen_divtf3_internal_lat (operands[0], operands[1], operands[2]);
+ else
+ insn = gen_divtf3_internal_thr (operands[0], operands[1], operands[2]);
+ emit_insn (insn);
+ DONE;
+}")
+
+(define_insn_and_split "divtf3_internal_lat"
+ [(set (match_operand:TF 0 "fr_register_operand" "=&f")
+ (div:TF (match_operand:TF 1 "fr_register_operand" "f")
+ (match_operand:TF 2 "fr_register_operand" "f")))
+ (clobber (match_scratch:TF 3 "=&f"))
+ (clobber (match_scratch:TF 4 "=&f"))
+ (clobber (match_scratch:TF 5 "=&f"))
+ (clobber (match_scratch:TF 6 "=&f"))
+ (clobber (match_scratch:CC 7 "=c"))]
+ "TARGET_INLINE_DIV_LAT"
+ "#"
+ "&& reload_completed"
+ [(parallel [(set (match_dup 0) (div:TF (const_int 1) (match_dup 2)))
+ (set (match_dup 7) (unspec:CC [(match_dup 1) (match_dup 2)] 5))
+ (use (const_int 1))])
+ (cond_exec (ne (match_dup 7) (const_int 0))
+ (parallel [(set (match_dup 3)
+ (plus:TF (neg:TF (mult:TF (match_dup 2) (match_dup 0)))
+ (match_dup 8)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 7) (const_int 0))
+ (parallel [(set (match_dup 4) (mult:TF (match_dup 1) (match_dup 0)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 7) (const_int 0))
+ (parallel [(set (match_dup 5) (mult:TF (match_dup 3) (match_dup 3)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 7) (const_int 0))
+ (parallel [(set (match_dup 6)
+ (plus:TF (mult:TF (match_dup 3) (match_dup 3))
+ (match_dup 3)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 7) (const_int 0))
+ (parallel [(set (match_dup 3)
+ (plus:TF (mult:TF (match_dup 5) (match_dup 5))
+ (match_dup 3)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 7) (const_int 0))
+ (parallel [(set (match_dup 5)
+ (plus:TF (mult:TF (match_dup 6) (match_dup 0))
+ (match_dup 0)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 7) (const_int 0))
+ (parallel [(set (match_dup 0)
+ (plus:TF (mult:TF (match_dup 5) (match_dup 3))
+ (match_dup 0)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 7) (const_int 0))
+ (parallel [(set (match_dup 4)
+ (plus:TF (neg:TF (mult:TF (match_dup 2) (match_dup 4)))
+ (match_dup 1)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 7) (const_int 0))
+ (parallel [(set (match_dup 3)
+ (plus:TF (mult:TF (match_dup 3) (match_dup 0))
+ (match_dup 4)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 7) (const_int 0))
+ (parallel [(set (match_dup 5)
+ (plus:TF (neg:TF (mult:TF (match_dup 2) (match_dup 0)))
+ (match_dup 8)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 7) (const_int 0))
+ (parallel [(set (match_dup 0)
+ (plus:TF (mult:TF (match_dup 4) (match_dup 0))
+ (match_dup 0)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 7) (const_int 0))
+ (parallel [(set (match_dup 4)
+ (plus:TF (neg:TF (mult:TF (match_dup 2) (match_dup 3)))
+ (match_dup 1)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 7) (const_int 0))
+ (set (match_dup 0)
+ (plus:TF (mult:TF (match_dup 4) (match_dup 0))
+ (match_dup 3))))
+ ]
+ "operands[8] = CONST1_RTX (TFmode);"
+ [(set_attr "predicable" "no")])
+
+(define_insn_and_split "divtf3_internal_thr"
+ [(set (match_operand:TF 0 "fr_register_operand" "=&f")
+ (div:TF (match_operand:TF 1 "fr_register_operand" "f")
+ (match_operand:TF 2 "fr_register_operand" "f")))
+ (clobber (match_scratch:TF 3 "=&f"))
+ (clobber (match_scratch:TF 4 "=&f"))
+ (clobber (match_scratch:CC 5 "=c"))]
+ "TARGET_INLINE_DIV_THR"
+ "#"
+ "&& reload_completed"
+ [(parallel [(set (match_dup 0) (div:TF (const_int 1) (match_dup 2)))
+ (set (match_dup 5) (unspec:CC [(match_dup 1) (match_dup 2)] 5))
+ (use (const_int 1))])
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (parallel [(set (match_dup 3)
+ (plus:TF (neg:TF (mult:TF (match_dup 2) (match_dup 0)))
+ (match_dup 6)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (parallel [(set (match_dup 4)
+ (plus:TF (mult:TF (match_dup 3) (match_dup 0))
+ (match_dup 0)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (parallel [(set (match_dup 3) (mult:TF (match_dup 3) (match_dup 3)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (parallel [(set (match_dup 3)
+ (plus:TF (mult:TF (match_dup 3) (match_dup 4))
+ (match_dup 4)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (parallel [(set (match_dup 4) (mult:TF (match_dup 1) (match_dup 0)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (parallel [(set (match_dup 0)
+ (plus:TF (neg:TF (mult:TF (match_dup 2) (match_dup 3)))
+ (match_dup 6)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (parallel [(set (match_dup 0)
+ (plus:TF (mult:TF (match_dup 0) (match_dup 3))
+ (match_dup 3)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (parallel [(set (match_dup 3)
+ (plus:TF (neg:TF (mult:TF (match_dup 2) (match_dup 4)))
+ (match_dup 1)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (parallel [(set (match_dup 3)
+ (plus:TF (mult:TF (match_dup 3) (match_dup 0))
+ (match_dup 4)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (parallel [(set (match_dup 4)
+ (plus:TF (neg:TF (mult:TF (match_dup 2) (match_dup 0)))
+ (match_dup 6)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (parallel [(set (match_dup 0)
+ (plus:TF (mult:TF (match_dup 4) (match_dup 0))
+ (match_dup 0)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (parallel [(set (match_dup 4)
+ (plus:TF (neg:TF (mult:TF (match_dup 2) (match_dup 3)))
+ (match_dup 1)))
+ (use (const_int 1))]))
+ (cond_exec (ne (match_dup 5) (const_int 0))
+ (set (match_dup 0)
+ (plus:TF (mult:TF (match_dup 4) (match_dup 0))
+ (match_dup 3))))
+ ]
+ "operands[6] = CONST1_RTX (TFmode);"
+ [(set_attr "predicable" "no")])
+
+;; ??? frcpa works like cmp.foo.unc.
+
+(define_insn "*recip_approx"
+ [(set (match_operand:TF 0 "fr_register_operand" "=f")
+ (div:TF (const_int 1)
+ (match_operand:TF 3 "fr_register_operand" "f")))
+ (set (match_operand:CC 1 "register_operand" "=c")
+ (unspec:CC [(match_operand:TF 2 "fr_register_operand" "f")
+ (match_dup 3)] 5))
+ (use (match_operand:SI 4 "const_int_operand" ""))]
+ ""
+ "frcpa.s%4 %0, %1 = %2, %3"
+ [(set_attr "type" "F")
+ (set_attr "predicable" "no")])
;; ::::::::::::::::::::
;; ::
diff --git a/gcc/config/ia64/lib1funcs.asm b/gcc/config/ia64/lib1funcs.asm
index 8ce6fb0379e..1296c1e0cab 100644
--- a/gcc/config/ia64/lib1funcs.asm
+++ b/gcc/config/ia64/lib1funcs.asm
@@ -96,8 +96,11 @@ __divdf3:
.global __divsf3
.proc __divsf3
__divsf3:
+ cmp.eq p7, p0 = r0, r0
frcpa.s0 f10, p6 = farg0, farg1
;;
+(p6) cmp.ne p7, p0 = r0, r0
+ .pred.rel.mutex p6, p7
(p6) fmpy.s1 f8 = farg0, f10
(p6) fnma.s1 f9 = farg1, f10, f1
;;
@@ -109,7 +112,8 @@ __divsf3:
;;
(p6) fma.d.s1 f10 = f9, f8, f8
;;
- fnorm.s.s0 fret0 = f10
+(p6) fnorm.s.s0 fret0 = f10
+(p7) mov fret0 = f10
br.ret.sptk rp
;;
.endp __divsf3
@@ -349,7 +353,7 @@ __divsi3:
fcvt.xf f9 = f9
;;
setf.exp f11 = r2
- frcpa f10, p6 = f8, f9
+ frcpa.s1 f10, p6 = f8, f9
;;
(p6) fmpy.s1 f8 = f8, f10
(p6) fnma.s1 f9 = f9, f10, f1
@@ -393,7 +397,7 @@ __modsi3:
fcvt.xf f9 = f9
;;
setf.exp f11 = r2
- frcpa f10, p6 = f8, f9
+ frcpa.s1 f10, p6 = f8, f9
;;
(p6) fmpy.s1 f12 = f8, f10
(p6) fnma.s1 f10 = f9, f10, f1
@@ -435,8 +439,11 @@ __udivsi3:
setf.sig f8 = in0
setf.sig f9 = in1
;;
+ fcvt.xf f8 = f8
+ fcvt.xf f9 = f9
+ ;;
setf.exp f11 = r2
- frcpa f10, p6 = f8, f9
+ frcpa.s1 f10, p6 = f8, f9
;;
(p6) fmpy.s1 f8 = f8, f10
(p6) fnma.s1 f9 = f9, f10, f1
@@ -480,7 +487,7 @@ __umodsi3:
fcvt.xf f9 = f9
;;
setf.exp f11 = r2
- frcpa f10, p6 = f8, f9
+ frcpa.s1 f10, p6 = f8, f9
;;
(p6) fmpy.s1 f12 = f8, f10
(p6) fnma.s1 f10 = f9, f10, f1
diff --git a/gcc/config/ns32k/ns32k.md b/gcc/config/ns32k/ns32k.md
index 7cc29a528f5..2b811621be7 100644
--- a/gcc/config/ns32k/ns32k.md
+++ b/gcc/config/ns32k/ns32k.md
@@ -993,7 +993,7 @@
}")
(define_insn ""
- [(set (strict_low_part (match_operand:HI 0 "register_operand" "=r"))
+ [(set (strict_low_part (match_operand:HI 0 "register_operand" "+r"))
(plus:HI (match_operand:HI 1 "general_operand" "0")
(match_operand:HI 2 "general_operand" "g")))]
""
@@ -1021,7 +1021,7 @@
}")
(define_insn ""
- [(set (strict_low_part (match_operand:QI 0 "register_operand" "=r"))
+ [(set (strict_low_part (match_operand:QI 0 "register_operand" "+r"))
(plus:QI (match_operand:QI 1 "general_operand" "0")
(match_operand:QI 2 "general_operand" "g")))]
""
@@ -1136,7 +1136,7 @@
}")
(define_insn ""
- [(set (strict_low_part (match_operand:HI 0 "register_operand" "=r"))
+ [(set (strict_low_part (match_operand:HI 0 "register_operand" "+r"))
(minus:HI (match_operand:HI 1 "general_operand" "0")
(match_operand:HI 2 "general_operand" "g")))]
""
@@ -1165,7 +1165,7 @@
}")
(define_insn ""
- [(set (strict_low_part (match_operand:QI 0 "register_operand" "=r"))
+ [(set (strict_low_part (match_operand:QI 0 "register_operand" "+r"))
(minus:QI (match_operand:QI 1 "general_operand" "0")
(match_operand:QI 2 "general_operand" "g")))]
""
diff --git a/gcc/config/rs6000/aix.h b/gcc/config/rs6000/aix.h
index 3487efff195..9c4e3418336 100644
--- a/gcc/config/rs6000/aix.h
+++ b/gcc/config/rs6000/aix.h
@@ -275,6 +275,22 @@ toc_section () \
/* Function name to call to do profiling. */
#define RS6000_MCOUNT ".__mcount"
+/* Function names to call to do floating point truncation. */
+
+#define RS6000_ITRUNC "__itrunc"
+#define RS6000_UITRUNC "__uitrunc"
+
+/* Optabs entries for the int->float routines, using the standard
+ AIX names. */
+#define INIT_TARGET_OPTABS \
+ do { \
+ if (! TARGET_POWER2 && ! TARGET_POWERPC && TARGET_HARD_FLOAT) \
+ { \
+ fixdfsi_libfunc = init_one_libfunc (RS6000_ITRUNC); \
+ fixunsdfsi_libfunc = init_one_libfunc (RS6000_UITRUNC); \
+ } \
+ } while (0)
+
/* AIX always has a TOC. */
#define TARGET_NO_TOC 0
#define TARGET_TOC 1
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index b579c31359f..91f37d7f7e1 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -63,15 +63,6 @@ struct rs6000_cpu_select rs6000_select[3] =
{ (const char *)0, "-mtune=", 1, 0 },
};
-/* Set to non-zero by "fix" operation to indicate that itrunc and
- uitrunc must be defined. */
-
-int rs6000_trunc_used;
-
-/* Set to non-zero once they have been defined. */
-
-static int trunc_defined;
-
/* Set to non-zero once AIX common-mode calls have been defined. */
static int common_mode_defined;
@@ -5794,14 +5785,6 @@ output_prolog (file, size)
SAVE_FP_PREFIX, info->first_fp_reg_save - 32, SAVE_FP_SUFFIX,
RESTORE_FP_PREFIX, info->first_fp_reg_save - 32, RESTORE_FP_SUFFIX);
- /* Write .extern for truncation routines, if needed. */
- if (rs6000_trunc_used && ! trunc_defined)
- {
- fprintf (file, "\t.extern .%s\n\t.extern .%s\n",
- RS6000_ITRUNC, RS6000_UITRUNC);
- trunc_defined = 1;
- }
-
/* Write .extern for AIX common mode routines, if needed. */
if (! TARGET_POWER && ! TARGET_POWERPC && ! common_mode_defined)
{
diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h
index be10201de36..543dceaa15d 100644
--- a/gcc/config/rs6000/rs6000.h
+++ b/gcc/config/rs6000/rs6000.h
@@ -1423,8 +1423,9 @@ typedef struct rs6000_args
#define RS6000_ARG_SIZE(MODE, TYPE, NAMED) \
(! (NAMED) ? 0 \
: (MODE) != BLKmode \
- ? (GET_MODE_SIZE (MODE) + (UNITS_PER_WORD - 1)) / UNITS_PER_WORD \
- : (int_size_in_bytes (TYPE) + (UNITS_PER_WORD - 1)) / UNITS_PER_WORD)
+ ? (GET_MODE_SIZE (MODE) + (UNITS_PER_WORD - 1)) / UNITS_PER_WORD \
+ : ((unsigned HOST_WIDE_INT) int_size_in_bytes (TYPE) \
+ + (UNITS_PER_WORD - 1)) / UNITS_PER_WORD)
/* Initialize a variable CUM of type CUMULATIVE_ARGS
for a call to a function whose data type is FNTYPE.
@@ -2301,17 +2302,6 @@ do { \
extern struct rtx_def *rs6000_compare_op0, *rs6000_compare_op1;
extern int rs6000_compare_fp_p;
-
-/* Set to non-zero by "fix" operation to indicate that itrunc and
- uitrunc must be defined. */
-
-extern int rs6000_trunc_used;
-
-/* Function names to call to do floating point truncation. */
-
-#define RS6000_ITRUNC "__itrunc"
-#define RS6000_UITRUNC "__uitrunc"
-
/* Control the assembler format that we output. */
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index b3fdd97461c..132fb3c1ef7 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -5339,16 +5339,9 @@
(fix:SI (match_operand:DF 1 "gpc_reg_operand" "")))
(clobber (match_dup 2))
(clobber (match_dup 3))])]
- "TARGET_HARD_FLOAT"
+ "(TARGET_POWER2 || TARGET_POWERPC) && TARGET_HARD_FLOAT"
"
{
- if (! TARGET_POWER2 && ! TARGET_POWERPC)
- {
- emit_insn (gen_trunc_call (operands[0], operands[1],
- gen_rtx_SYMBOL_REF (Pmode, RS6000_ITRUNC)));
- DONE;
- }
-
operands[2] = gen_reg_rtx (DImode);
operands[3] = assign_stack_temp (DImode, GET_MODE_SIZE (DImode), 0);
}")
@@ -5358,7 +5351,7 @@
(fix:SI (match_operand:DF 1 "gpc_reg_operand" "f")))
(clobber (match_operand:DI 2 "gpc_reg_operand" "=f"))
(clobber (match_operand:DI 3 "memory_operand" "=o"))]
- "TARGET_HARD_FLOAT"
+ "(TARGET_POWER2 || TARGET_POWERPC) && TARGET_HARD_FLOAT"
"#"
[(set_attr "length" "16")])
@@ -5367,7 +5360,7 @@
(fix:SI (match_operand:DF 1 "gpc_reg_operand" "f")))
(clobber (match_operand:DI 2 "gpc_reg_operand" ""))
(clobber (match_operand:DI 3 "offsettable_mem_operand" ""))]
- "TARGET_HARD_FLOAT"
+ "(TARGET_POWER2 || TARGET_POWERPC) && TARGET_HARD_FLOAT"
[(set (match_operand:SI 0 "gpc_reg_operand" "")
(fix:SI (match_operand:DF 1 "gpc_reg_operand" "f")))
(clobber (match_operand:DI 2 "gpc_reg_operand" ""))
@@ -5387,51 +5380,6 @@
DONE;
}")
-(define_expand "fixuns_truncdfsi2"
- [(set (match_operand:SI 0 "gpc_reg_operand" "")
- (unsigned_fix:SI (match_operand:DF 1 "gpc_reg_operand" "")))]
- "! TARGET_POWER2 && ! TARGET_POWERPC && TARGET_HARD_FLOAT"
- "
-{
- emit_insn (gen_trunc_call (operands[0], operands[1],
- gen_rtx_SYMBOL_REF (Pmode, RS6000_UITRUNC)));
- DONE;
-}")
-
-(define_expand "trunc_call"
- [(parallel [(set (match_operand:SI 0 "" "")
- (fix:SI (match_operand:DF 1 "" "")))
- (use (match_operand:SI 2 "" ""))])]
- "TARGET_HARD_FLOAT"
- "
-{
- rtx insns = gen_trunc_call_rtl (operands[0], operands[1], operands[2]);
- rtx first = XVECEXP (insns, 0, 0);
- rtx last = XVECEXP (insns, 0, XVECLEN (insns, 0) - 1);
-
- REG_NOTES (first) = gen_rtx_INSN_LIST (REG_LIBCALL, last,
- REG_NOTES (first));
- REG_NOTES (last) = gen_rtx_INSN_LIST (REG_RETVAL, first, REG_NOTES (last));
-
- emit_insn (insns);
- DONE;
-}")
-
-(define_expand "trunc_call_rtl"
- [(set (reg:DF 33) (match_operand:DF 1 "gpc_reg_operand" ""))
- (use (reg:DF 33))
- (parallel [(set (reg:SI 3)
- (call (mem:SI (match_operand 2 "" "")) (const_int 0)))
- (use (const_int 0))
- (clobber (scratch:SI))])
- (set (match_operand:SI 0 "gpc_reg_operand" "")
- (reg:SI 3))]
- "TARGET_HARD_FLOAT"
- "
-{
- rs6000_trunc_used = 1;
-}")
-
; Here, we use (set (reg) (unspec:DI [(fix:SI ...)] 10))
; rather than (set (subreg:SI (reg)) (fix:SI ...))
; because the first makes it clear that operand 0 is not live
diff --git a/gcc/config/rs6000/sol-c0.c b/gcc/config/rs6000/sol-c0.c
index a31876c889d..f7ccb7d7799 100644
--- a/gcc/config/rs6000/sol-c0.c
+++ b/gcc/config/rs6000/sol-c0.c
@@ -33,7 +33,7 @@ extern int atexit (void (*__func) (void));
extern void __init (void) __attribute__ ((__longcall__));
extern void __fini (void) __attribute__ ((__longcall__));
extern void _start(int argc, char *argv[], char *envp[], void *auxp,
- void (*termfunc)());
+ void (*termfunc)(void));
extern void exit(int);
extern int main (int argc, char *argv[], char *envp[], void *auxp);
@@ -84,7 +84,8 @@ deregister (void)
/* Start function. */
void
-_start(int argc, char *argv[], char *envp[], void *auxp, void (*termfunc)())
+_start(int argc, char *argv[], char *envp[], void *auxp,
+ void (*termfunc)(void))
{
int ret;
int dummy = 0;
diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h
index 09aa9a608f4..44e72c75843 100644
--- a/gcc/config/rs6000/sysv4.h
+++ b/gcc/config/rs6000/sysv4.h
@@ -60,6 +60,7 @@ extern enum rs6000_sdata_type rs6000_sdata;
#define MASK_LITTLE_ENDIAN 0x04000000 /* Target is little endian. */
#define MASK_REGNAMES 0x02000000 /* Use alternate register names. */
#define MASK_PROTOTYPE 0x01000000 /* Only prototyped fcns pass variable args. */
+#define MASK_LONG_DOUBLE_128 0x00800000 /* Use IEEE quad long double. */
#define TARGET_NO_BITFIELD_TYPE (target_flags & MASK_NO_BITFIELD_TYPE)
#define TARGET_STRICT_ALIGN (target_flags & MASK_STRICT_ALIGN)
@@ -68,6 +69,7 @@ extern enum rs6000_sdata_type rs6000_sdata;
#define TARGET_LITTLE_ENDIAN (target_flags & MASK_LITTLE_ENDIAN)
#define TARGET_REGNAMES (target_flags & MASK_REGNAMES)
#define TARGET_PROTOTYPE (target_flags & MASK_PROTOTYPE)
+#define TARGET_LONG_DOUBLE_128 (target_flags & MASK_LONG_DOUBLE_128)
#define TARGET_TOC ((target_flags & MASK_64BIT) \
|| ((target_flags & (MASK_RELOCATABLE \
| MASK_MINIMAL_TOC)) \
@@ -126,6 +128,10 @@ extern int g_switch_set; /* Whether -G xx was passed. */
N_("Produce big endian code.") }, \
{ "big", -MASK_LITTLE_ENDIAN, \
N_("Produce big endian code.") }, \
+ { "long-double-64", -MASK_LONG_DOUBLE_128, \
+ N_("Use 64 bit long doubles") }, \
+ { "long-double-128", MASK_LONG_DOUBLE_128, \
+ N_("Use 128 bit long doubles") }, \
{ "no-toc", 0, N_("no description yet") }, \
{ "toc", MASK_MINIMAL_TOC, N_("no description yet") }, \
{ "full-toc", MASK_MINIMAL_TOC, N_("no description yet") }, \
@@ -350,6 +356,22 @@ do { \
#undef WCHAR_TYPE_SIZE
#define WCHAR_TYPE_SIZE 32
+/* Define for support of TFmode long double and REAL_ARITHMETIC.
+ PowerPC SVR4 ABI says that long double is 4 words. */
+#undef LONG_DOUBLE_TYPE_SIZE
+#define LONG_DOUBLE_TYPE_SIZE (TARGET_LONG_DOUBLE_128 ? 128 : 64)
+
+/* Constant which presents upper bound of the above value. */
+#define MAX_LONG_DOUBLE_TYPE_SIZE 128
+
+/* Define this to set long double type size to use in libgcc2.c, which can
+ not depend on target_flags. */
+#ifdef __LONG_DOUBLE_128__
+#define LIBGCC2_LONG_DOUBLE_TYPE_SIZE 128
+#else
+#define LIBGCC2_LONG_DOUBLE_TYPE_SIZE 64
+#endif
+
/* Make int foo : 8 not cause structures to be aligned to an int boundary. */
/* Override elfos.h definition. */
#undef PCC_BITFIELD_TYPE_MATTERS
@@ -1164,6 +1186,8 @@ do { \
"%{mrelocatable*: -D_RELOCATABLE} \
%{fpic: -D__PIC__=1 -D__pic__=1} \
%{!fpic: %{fPIC: -D__PIC__=2 -D__pic__=2}} \
+%{mlong-double-128: -D__LONG_DOUBLE_128__=1} \
+%{!mlong-double-64: %(cpp_longdouble_default)} \
%{mcall-sysv: -D_CALL_SYSV} \
%{mcall-aix: -D_CALL_AIX} %{mcall-aixdesc: -D_CALL_AIX -D_CALL_AIXDESC} \
%{!mcall-sysv: %{!mcall-aix: %{!mcall-aixdesc: %(cpp_sysv_default) }}} \
@@ -1181,6 +1205,9 @@ do { \
/* Whether floating point is disabled by default. */
#define CPP_FLOAT_DEFAULT_SPEC ""
+/* Whether 'long double' is 128 bits by default. */
+#define CPP_LONGDOUBLE_DEFAULT_SPEC ""
+
#define CPP_SYSV_DEFAULT_SPEC "-D_CALL_SYSV"
#define CPP_ENDIAN_BIG_SPEC "-D_BIG_ENDIAN -D__BIG_ENDIAN__ -Amachine(bigendian)"
@@ -1495,6 +1522,7 @@ do { \
{ "cpp_endian_little", CPP_ENDIAN_LITTLE_SPEC }, \
{ "cpp_endian_solaris", CPP_ENDIAN_SOLARIS_SPEC }, \
{ "cpp_float_default", CPP_FLOAT_DEFAULT_SPEC }, \
+ { "cpp_longdouble_default", CPP_LONGDOUBLE_DEFAULT_SPEC }, \
{ "cpp_os_ads", CPP_OS_ADS_SPEC }, \
{ "cpp_os_yellowknife", CPP_OS_YELLOWKNIFE_SPEC }, \
{ "cpp_os_mvme", CPP_OS_MVME_SPEC }, \
@@ -1522,3 +1550,60 @@ do { \
/* Function name to call to do profiling. */
#define RS6000_MCOUNT "_mcount"
+
+/* Define library calls for quad FP operations. These are all part of the
+ PowerPC 32bit ABI. */
+#define ADDTF3_LIBCALL "_q_add"
+#define DIVTF3_LIBCALL "_q_div"
+#define EXTENDDFTF2_LIBCALL "_q_dtoq"
+#define EQTF2_LIBCALL "_q_feq"
+#define GETF2_LIBCALL "_q_fge"
+#define GTTF2_LIBCALL "_q_fgt"
+#define LETF2_LIBCALL "_q_fle"
+#define LTTF2_LIBCALL "_q_flt"
+#define NETF2_LIBCALL "_q_fne"
+#define FLOATSITF2_LIBCALL "_q_itoq"
+#define MULTF3_LIBCALL "_q_mul"
+#define NEGTF2_LIBCALL "_q_neg"
+#define TRUNCTFDF2_LIBCALL "_q_qtod"
+#define FIX_TRUNCTFSI2_LIBCALL "_q_qtoi"
+#define TRUNCTFSF2_LIBCALL "_q_qtos"
+#define FIXUNS_TRUNCTFSI2_LIBCALL "_q_qtou"
+#define SQRTTF_LIBCALL "_q_sqrt"
+#define EXTENDSFTF2_LIBCALL "_q_stoq"
+#define SUBTF3_LIBCALL "_q_sub"
+#define FLOATUNSSITF2_LIBCALL "_q_utoq"
+
+#define INIT_TARGET_OPTABS \
+ do { \
+ if (TARGET_HARD_FLOAT) \
+ { \
+ add_optab->handlers[(int) TFmode].libfunc \
+ = init_one_libfunc (ADDTF3_LIBCALL); \
+ sub_optab->handlers[(int) TFmode].libfunc \
+ = init_one_libfunc (SUBTF3_LIBCALL); \
+ neg_optab->handlers[(int) TFmode].libfunc \
+ = init_one_libfunc (NEGTF2_LIBCALL); \
+ smul_optab->handlers[(int) TFmode].libfunc \
+ = init_one_libfunc (MULTF3_LIBCALL); \
+ flodiv_optab->handlers[(int) TFmode].libfunc \
+ = init_one_libfunc (DIVTF3_LIBCALL); \
+ eqtf2_libfunc = init_one_libfunc (EQTF2_LIBCALL); \
+ netf2_libfunc = init_one_libfunc (NETF2_LIBCALL); \
+ gttf2_libfunc = init_one_libfunc (GTTF2_LIBCALL); \
+ getf2_libfunc = init_one_libfunc (GETF2_LIBCALL); \
+ lttf2_libfunc = init_one_libfunc (LTTF2_LIBCALL); \
+ letf2_libfunc = init_one_libfunc (LETF2_LIBCALL); \
+ trunctfsf2_libfunc = init_one_libfunc (TRUNCTFSF2_LIBCALL); \
+ trunctfdf2_libfunc = init_one_libfunc (TRUNCTFDF2_LIBCALL); \
+ extendsftf2_libfunc = init_one_libfunc (EXTENDSFTF2_LIBCALL); \
+ extenddftf2_libfunc = init_one_libfunc (EXTENDDFTF2_LIBCALL); \
+ floatsitf_libfunc = init_one_libfunc (FLOATSITF2_LIBCALL); \
+ fixtfsi_libfunc = init_one_libfunc (FIX_TRUNCTFSI2_LIBCALL); \
+ fixunstfsi_libfunc \
+ = init_one_libfunc (FIXUNS_TRUNCTFSI2_LIBCALL); \
+ if (TARGET_PPC_GPOPT || TARGET_POWER2) \
+ sqrt_optab->handlers[(int) TFmode].libfunc \
+ = init_one_libfunc (SQRTTF_LIBCALL); \
+ } \
+ } while (0)
diff --git a/gcc/config/sh/elf.h b/gcc/config/sh/elf.h
index 148b6b973b1..435aff17cf7 100644
--- a/gcc/config/sh/elf.h
+++ b/gcc/config/sh/elf.h
@@ -112,10 +112,6 @@ do { \
fprintf ((FILE), "\t.stabs \"\",%d,0,0,Letext\nLetext:\n", N_SO); \
} while (0)
-/* HANDLE_SYSV_PRAGMA (defined by svr4.h) takes precedence over HANDLE_PRAGMA.
- We want to use the HANDLE_PRAGMA from sh.h. */
-#undef HANDLE_SYSV_PRAGMA
-
#undef STARTFILE_SPEC
#define STARTFILE_SPEC \
"%{!shared: crt1.o%s} crti.o%s \
diff --git a/gcc/config/sh/sh-protos.h b/gcc/config/sh/sh-protos.h
index fc441a97feb..e62edf4dba0 100644
--- a/gcc/config/sh/sh-protos.h
+++ b/gcc/config/sh/sh-protos.h
@@ -21,6 +21,9 @@ along with GNU CC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
+#ifndef GCC_SH_PROTOS_H
+#define GCC_SH_PROTOS_H
+
#ifdef RTX_CODE
extern struct rtx_def *sh_builtin_saveregs PARAMS ((void));
extern struct rtx_def *prepare_scc_operands PARAMS ((enum rtx_code));
@@ -122,3 +125,11 @@ extern int fldi_ok PARAMS ((void));
#ifdef HARD_CONST
extern void fpscr_set_from_mem PARAMS ((int, HARD_REG_SET));
#endif
+
+#ifdef _C_PRAGMA_H
+extern void sh_pr_interrupt PARAMS ((cpp_reader *));
+extern void sh_pr_trapa PARAMS ((cpp_reader *));
+extern void sh_pr_nosave_low_regs PARAMS ((cpp_reader *));
+#endif
+
+#endif /* sh-protos.h */
diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c
index 7f5bec0d623..e5cdb4fffe2 100644
--- a/gcc/config/sh/sh.c
+++ b/gcc/config/sh/sh.c
@@ -36,6 +36,7 @@ Boston, MA 02111-1307, USA. */
#include "insn-attr.h"
#include "toplev.h"
#include "recog.h"
+#include "c-pragma.h"
#include "tm_p.h"
int code_for_indirect_jump_scratch = CODE_FOR_indirect_jump_scratch;
@@ -4443,22 +4444,25 @@ initial_elimination_offset (from, to)
/* Handle machine specific pragmas to be semi-compatible with Hitachi
compiler. */
-int
-sh_handle_pragma (p_getc, p_ungetc, pname)
- int (* p_getc) PARAMS ((void)) ATTRIBUTE_UNUSED;
- void (* p_ungetc) PARAMS ((int)) ATTRIBUTE_UNUSED;
- const char * pname;
+void
+sh_pr_interrupt (pfile)
+ cpp_reader *pfile ATTRIBUTE_UNUSED;
{
- int retval = 0;
+ pragma_interrupt = 1;
+}
- if (strcmp (pname, "interrupt") == 0)
- pragma_interrupt = retval = 1;
- else if (strcmp (pname, "trapa") == 0)
- pragma_interrupt = pragma_trapa = retval = 1;
- else if (strcmp (pname, "nosave_low_regs") == 0)
- pragma_nosave_low_regs = retval = 1;
+void
+sh_pr_trapa (pfile)
+ cpp_reader *pfile ATTRIBUTE_UNUSED;
+{
+ pragma_interrupt = pragma_trapa = 1;
+}
- return retval;
+void
+sh_pr_nosave_low_regs (pfile)
+ cpp_reader *pfile ATTRIBUTE_UNUSED;
+{
+ pragma_nosave_low_regs = 1;
}
/* Generate 'handle_interrupt' attribute for decls */
diff --git a/gcc/config/sh/sh.h b/gcc/config/sh/sh.h
index 78efca5d1a3..0f00c0dee9e 100644
--- a/gcc/config/sh/sh.h
+++ b/gcc/config/sh/sh.h
@@ -21,6 +21,8 @@ along with GNU CC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
+#ifndef GCC_SH_H
+#define GCC_SH_H
#define TARGET_VERSION \
fputs (" (Hitachi SH)", stderr);
@@ -1213,7 +1215,6 @@ extern int current_function_anonymous_args;
else \
emit_insn (gen_ic_invalidate_line (TRAMP)); \
} \
- emit_insn (gen_ic_invalidate_line (TRAMP)); \
}
/* A C expression whose value is RTL representing the value of the return
@@ -2185,10 +2186,12 @@ extern enum mdep_reorg_phase_e mdep_reorg_phase;
#define TARGET_MEM_FUNCTIONS
-/* Define this macro if you want to implement any pragmas. If defined, it
- is a C expression whose value is 1 if the pragma was handled by the
- macro, zero otherwise. */
-#define HANDLE_PRAGMA(GETC, UNGETC, NODE) sh_handle_pragma (GETC, UNGETC, NODE)
+/* Handle Hitachi compiler's pragmas. */
+#define REGISTER_TARGET_PRAGMAS(PFILE) do { \
+ cpp_register_pragma (PFILE, 0, "interrupt", sh_pr_interrupt); \
+ cpp_register_pragma (PFILE, 0, "trapa", sh_pr_trapa); \
+ cpp_register_pragma (PFILE, 0, "nosave_low_regs", sh_pr_nosave_low_regs); \
+} while (0)
/* Set when processing a function with pragma interrupt turned on. */
@@ -2228,8 +2231,8 @@ extern struct rtx_def *fpscr_rtx;
{"fp_arith_reg_operand", {SUBREG, REG}}, \
{"fp_extended_operand", {SUBREG, REG, FLOAT_EXTEND}}, \
{"fpscr_operand", {REG}}, \
- {"general_movsrc_operand", {SUBREG, REG, CONST_INT, MEM}}, \
- {"general_movdst_operand", {SUBREG, REG, CONST_INT, MEM}}, \
+ {"general_movsrc_operand", {SUBREG, REG, CONST_INT, CONST_DOUBLE, MEM}}, \
+ {"general_movdst_operand", {SUBREG, REG, MEM}}, \
{"logical_operand", {SUBREG, REG, CONST_INT}}, \
{"noncommutative_float_operator", {MINUS, DIV}}, \
{"register_operand", {SUBREG, REG}},
@@ -2369,3 +2372,5 @@ do { \
0: .p2align 2\n\
1: .long " USER_LABEL_PREFIX #func " - 0b\n\
2:")
+
+#endif /* sh.h */
diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md
index 88a774338b0..91a15b32808 100644
--- a/gcc/config/sh/sh.md
+++ b/gcc/config/sh/sh.md
@@ -558,30 +558,6 @@
cmp/eq %1,%0
cmp/eq %1,%0")
-(define_insn "cmpeqsi_ior_t"
- [(set (reg:SI 18)
- (ior:SI (reg:SI 18)
- (eq:SI (match_operand:SI 0 "arith_reg_operand" "r,z,r")
- (match_operand:SI 1 "arith_operand" "N,rI,r"))))]
- ""
- "@
- bt .+4\;tst %0,%0
- bt .+4\;cmp/eq %1,%0
- bt .+4\;cmp/eq %1,%0"
- [(set_attr "length" "4")])
-
-(define_insn "cmpeqsi_and_t"
- [(set (reg:SI 18)
- (and:SI (reg:SI 18)
- (eq:SI (match_operand:SI 0 "arith_reg_operand" "r,z,r")
- (match_operand:SI 1 "arith_operand" "N,rI,r"))))]
- ""
- "@
- bf .+4\;tst %0,%0
- bf .+4\;cmp/eq %1,%0
- bf .+4\;cmp/eq %1,%0"
- [(set_attr "length" "4")])
-
(define_insn "cmpgtsi_t"
[(set (reg:SI 18) (gt:SI (match_operand:SI 0 "arith_reg_operand" "r,r")
(match_operand:SI 1 "arith_reg_or_0_operand" "r,N")))]
@@ -651,18 +627,25 @@
[(set (reg:SI 18) (eq:SI (match_operand:DI 0 "arith_reg_operand" "r,r")
(match_operand:DI 1 "arith_reg_or_0_operand" "N,r")))]
""
- "#"
+ "@
+ tst %S0,%S0\;bf %,Ldi%=\;tst %R0,%R0\\n%,Ldi%=:
+ cmp/eq %S1,%S0\;bf %,Ldi%=\;cmp/eq %R1,%R0\\n%,Ldi%=:"
[(set_attr "length" "6")
(set_attr "type" "arith3b")])
(define_split
[(set (reg:SI 18) (eq:SI (match_operand:DI 0 "arith_reg_operand" "r,r")
(match_operand:DI 1 "arith_reg_or_0_operand" "N,r")))]
- "reload_completed"
+;; If we applied this split when not optimizing, it would only be
+;; applied during the machine-dependent reorg, when no new basic blocks
+;; may be created.
+ "reload_completed && optimize"
[(set (reg:SI 18) (eq:SI (match_dup 2) (match_dup 3)))
- (set (reg:SI 18)
- (and:SI (reg:SI 18)
- (eq:SI (match_dup 4) (match_dup 5))))]
+ (set (pc) (if_then_else (eq (reg:SI 18) (const_int 0))
+ (label_ref (match_dup 6))
+ (pc)))
+ (set (reg:SI 18) (eq:SI (match_dup 4) (match_dup 5)))
+ (match_dup 6)]
"
{
operands[2]
@@ -676,6 +659,7 @@
+ (TARGET_LITTLE_ENDIAN ? 1 : 0)));
operands[4] = gen_lowpart (SImode, operands[0]);
operands[5] = gen_lowpart (SImode, operands[1]);
+ operands[6] = gen_label_rtx ();
}")
(define_insn "cmpgtdi_t"
@@ -2367,7 +2351,7 @@
(set_attr "length" "*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,0")])
(define_insn "movsi_i_lowpart"
- [(set (strict_low_part (match_operand:SI 0 "general_movdst_operand" "=r,r,r,r,r,m,r"))
+ [(set (strict_low_part (match_operand:SI 0 "general_movdst_operand" "+r,r,r,r,r,m,r"))
(match_operand:SI 1 "general_movsrc_operand" "Q,rI,mr,xl,t,r,i"))]
"register_operand (operands[0], SImode)
|| register_operand (operands[1], SImode)"
@@ -3532,7 +3516,7 @@ else
(unspec [(match_operand:SI 1 "" "")] 9))
(const (plus:SI (label_ref (match_operand:SI 2 "" ""))
(const_int 2))))))
- (use (match_dup 2))]
+ (use (match_dup 3))]
;; Even though the PIC register is not really used by the call
;; sequence in which this is expanded, the PLT code assumes the PIC
;; register is set, so we must not skip its initialization. Since
@@ -3546,7 +3530,7 @@ else
;; shared libraries.
"" "
{
- operands[2] = pic_offset_table_rtx;
+ operands[3] = pic_offset_table_rtx;
current_function_uses_pic_offset_table = 1;
}")
diff --git a/gcc/config/v850/v850-protos.h b/gcc/config/v850/v850-protos.h
index d6155fd264d..03be1346ebb 100644
--- a/gcc/config/v850/v850-protos.h
+++ b/gcc/config/v850/v850-protos.h
@@ -20,6 +20,9 @@ Boston, MA 02111-1307, USA. */
/* Function prototypes that cannot exist in v850.h due to dependency
compilcations. */
+#ifndef GCC_V850_PROTOS_H
+#define GCC_V850_PROTOS_H
+
#define Mmode enum machine_mode
extern void expand_prologue PARAMS ((void));
@@ -41,8 +44,8 @@ extern int compute_frame_size PARAMS ((int, long *));
extern void print_operand PARAMS ((FILE *, rtx, int ));
extern void print_operand_address PARAMS ((FILE *, rtx));
extern int const_costs PARAMS ((rtx, enum rtx_code));
-extern char * output_move_double PARAMS ((rtx *));
-extern char * output_move_single PARAMS ((rtx *));
+extern const char *output_move_double PARAMS ((rtx *));
+extern const char *output_move_single PARAMS ((rtx *));
extern void v850_reorg PARAMS ((rtx));
extern void notice_update_cc PARAMS ((rtx, rtx));
extern char * construct_save_jarl PARAMS ((rtx));
@@ -80,5 +83,17 @@ extern int function_arg_partial_nregs PARAMS ((CUMULATIVE_ARGS *, Mmode, t
#endif
#endif
+#ifdef _C_PRAGMA_H
+extern void ghs_pragma_section PARAMS ((cpp_reader *));
+extern void ghs_pragma_interrupt PARAMS ((cpp_reader *));
+extern void ghs_pragma_starttda PARAMS ((cpp_reader *));
+extern void ghs_pragma_startsda PARAMS ((cpp_reader *));
+extern void ghs_pragma_startzda PARAMS ((cpp_reader *));
+extern void ghs_pragma_endtda PARAMS ((cpp_reader *));
+extern void ghs_pragma_endsda PARAMS ((cpp_reader *));
+extern void ghs_pragma_endzda PARAMS ((cpp_reader *));
+#endif
+
#undef Mmode
+#endif /* v850-protos.h */
diff --git a/gcc/config/v850/v850.c b/gcc/config/v850/v850.c
index c3b6cf1dc77..e4365e042c8 100644
--- a/gcc/config/v850/v850.c
+++ b/gcc/config/v850/v850.c
@@ -37,7 +37,10 @@ Boston, MA 02111-1307, USA. */
#include "function.h"
#include "obstack.h"
#include "toplev.h"
-#include "v850-protos.h"
+#include "cpplib.h"
+#include "c-lex.h"
+#include "c-pragma.h"
+#include "tm_p.h"
#ifndef streq
#define streq(a,b) (strcmp (a, b) == 0)
@@ -50,7 +53,6 @@ static int const_costs_int PARAMS ((HOST_WIDE_INT, int));
static void substitute_ep_register PARAMS ((rtx, rtx, int, int, rtx *, rtx *));
static int push_data_area PARAMS ((v850_data_area));
static int pop_data_area PARAMS ((v850_data_area));
-static int parse_ghs_pragma_token PARAMS ((char *));
static int ep_memory_offset PARAMS ((enum machine_mode, int));
static int mark_current_function_as_interrupt PARAMS ((void));
static void v850_set_data_area PARAMS ((tree, v850_data_area));
@@ -441,7 +443,7 @@ print_operand (file, x, code)
case 'Q':
if (special_symbolref_operand (x, VOIDmode))
{
- char* name;
+ const char *name;
if (GET_CODE (x) == SYMBOL_REF)
name = XSTR (x, 0);
@@ -667,7 +669,7 @@ print_operand_address (file, addr)
/* Return appropriate code to load up a 1, 2, or 4 integer/floating
point value. */
-char *
+const char *
output_move_single (operands)
rtx *operands;
{
@@ -759,7 +761,7 @@ output_move_single (operands)
/* Return appropriate code to load up an 8 byte integer or
floating point value */
-char *
+const char *
output_move_double (operands)
rtx *operands;
{
@@ -2726,292 +2728,151 @@ mark_current_function_as_interrupt ()
(name, NULL_TREE, current_function_decl, NULL_TREE);
}
-/* Parse STRING as part of a GHS pragma.
- Returns 0 if the pragma has been parsed and there was a problem,
- non-zero in all other cases. */
-static int
-parse_ghs_pragma_token (string)
- char * string;
+/* Support for GHS pragmata. */
+
+void
+ghs_pragma_section (pfile)
+ cpp_reader *pfile ATTRIBUTE_UNUSED;
{
- static enum v850_pragma_state state = V850_PS_START;
- static enum v850_pragma_type type = V850_PT_UNKNOWN;
- static v850_data_area data_area = DATA_AREA_NORMAL;
- static char * data_area_name;
- static enum GHS_section_kind GHS_section_kind = GHS_SECTION_KIND_DEFAULT;
-
- /* If the string is NULL then we have reached the end of the
- #pragma construct. Make sure that we are in an end state, and
- then implement the pragma's directive. */
- if (string == NULL)
- {
- int ret_val = 1;
-
- if (state != V850_PS_SHOULD_BE_DONE
- && state != V850_PS_MAYBE_COMMA
- && state != V850_PS_MAYBE_SECTION_NAME)
- {
- if (state != V850_PS_BAD)
- warning ("Incomplete #pragma ghs");
+ int repeat;
+
+ /* #pragma ghs section [name = alias [, name = alias [, ...]]] */
+ do {
+ tree x;
+ enum cpp_ttype type;
+ const char *sect, *alias;
+ enum GHS_section_kind kind;
+
+ type = c_lex (&x);
+ if (type == CPP_EOF && !repeat)
+ goto reset;
+ else if (type == CPP_NAME)
+ sect = IDENTIFIER_POINTER (x);
+ else
+ goto bad;
+ repeat = 0;
+
+ if (c_lex (&x) != CPP_EQ)
+ goto bad;
+ if (c_lex (&x) != CPP_NAME)
+ goto bad;
+ alias = IDENTIFIER_POINTER (x);
+
+ type = c_lex (&x);
+ if (type == CPP_COMMA)
+ repeat = 1;
+ else if (type != CPP_EOF)
+ warning ("junk at end of #pragma ghs section");
+
+ if (streq (sect, "data")) kind = GHS_SECTION_KIND_DATA;
+ else if (streq (sect, "text")) kind = GHS_SECTION_KIND_TEXT;
+ else if (streq (sect, "rodata")) kind = GHS_SECTION_KIND_RODATA;
+ else if (streq (sect, "const")) kind = GHS_SECTION_KIND_RODATA;
+ else if (streq (sect, "rosdata")) kind = GHS_SECTION_KIND_ROSDATA;
+ else if (streq (sect, "rozdata")) kind = GHS_SECTION_KIND_ROZDATA;
+ else if (streq (sect, "sdata")) kind = GHS_SECTION_KIND_SDATA;
+ else if (streq (sect, "tdata")) kind = GHS_SECTION_KIND_TDATA;
+ else if (streq (sect, "zdata")) kind = GHS_SECTION_KIND_ZDATA;
+ /* According to GHS beta documentation, the following should not be
+ allowed! */
+ else if (streq (sect, "bss")) kind = GHS_SECTION_KIND_BSS;
+ else if (streq (sect, "zbss")) kind = GHS_SECTION_KIND_ZDATA;
+ else
+ {
+ warning ("unrecognised section name \"%s\"", sect);
+ return;
+ }
- ret_val = 0;
- }
- else switch (type)
- {
- case V850_PT_UNKNOWN:
- warning ("Nothing follows #pragma ghs");
- ret_val = 0;
- break;
-
- case V850_PT_INTERRUPT:
- ret_val = mark_current_function_as_interrupt ();
- break;
-
- case V850_PT_SECTION:
- /* If a section kind has not been specified, then reset
- all section names back to their defaults. */
- if (GHS_section_kind == GHS_SECTION_KIND_DEFAULT)
- {
- int i;
-
- for (i = COUNT_OF_GHS_SECTION_KINDS; i--;)
- GHS_current_section_names [i] = NULL;
- }
- /* If a section has been specified, then this will be handled
- by check_default_section_name (). */
- break;
-
- case V850_PT_START_SECTION:
- ret_val = push_data_area (data_area);
- break;
-
- case V850_PT_END_SECTION:
- ret_val = pop_data_area (data_area);
- break;
- }
+ if (streq (alias, "default"))
+ GHS_current_section_names [kind] = NULL;
+ else
+ GHS_current_section_names [kind] =
+ build_string (strlen (alias) + 1, alias);
- state = V850_PS_START;
- type = V850_PT_UNKNOWN;
-
- return ret_val;
- }
-
- switch (state)
- {
- case V850_PS_START:
- data_area = DATA_AREA_NORMAL;
- data_area_name = NULL;
-
- if (streq (string, "interrupt"))
- {
- type = V850_PT_INTERRUPT;
- state = V850_PS_SHOULD_BE_DONE;
- }
- else if (streq (string, "section"))
- {
- type = V850_PT_SECTION;
- state = V850_PS_MAYBE_SECTION_NAME;
- GHS_section_kind = GHS_SECTION_KIND_DEFAULT;
- }
- else if (streq (string, "starttda"))
- {
- type = V850_PT_START_SECTION;
- state = V850_PS_SHOULD_BE_DONE;
- data_area = DATA_AREA_TDA;
- }
- else if (streq (string, "endtda"))
- {
- type = V850_PT_END_SECTION;
- state = V850_PS_SHOULD_BE_DONE;
- data_area = DATA_AREA_TDA;
- }
- else if (streq (string, "startsda"))
- {
- type = V850_PT_START_SECTION;
- state = V850_PS_SHOULD_BE_DONE;
- data_area = DATA_AREA_SDA;
- }
- else if (streq (string, "endsda"))
- {
- type = V850_PT_END_SECTION;
- state = V850_PS_SHOULD_BE_DONE;
- data_area = DATA_AREA_SDA;
- }
- else if (streq (string, "startzda"))
- {
- type = V850_PT_START_SECTION;
- state = V850_PS_SHOULD_BE_DONE;
- data_area = DATA_AREA_ZDA;
- }
- else if (streq (string, "endzda"))
- {
- type = V850_PT_END_SECTION;
- state = V850_PS_SHOULD_BE_DONE;
- data_area = DATA_AREA_ZDA;
- }
- else
- {
- warning ("Unrecognised GHS pragma: '%s'\n", string);
- state = V850_PS_BAD;
- }
- break;
-
- case V850_PS_SHOULD_BE_DONE:
- warning ("Extra text after valid #pragma: '%s'", string);
- state = V850_PS_BAD;
- break;
-
- case V850_PS_BAD:
- /* Ignore tokens in a pragma that has been diagnosed as being corrupt. */
- break;
+ } while (repeat);
+ return;
- case V850_PS_MAYBE_SECTION_NAME:
- state = V850_PS_EXPECTING_EQUALS;
-
- if (streq (string, "data")) GHS_section_kind = GHS_SECTION_KIND_DATA;
- else if (streq (string, "text")) GHS_section_kind = GHS_SECTION_KIND_TEXT;
- else if (streq (string, "rodata")) GHS_section_kind = GHS_SECTION_KIND_RODATA;
- else if (streq (string, "const")) GHS_section_kind = GHS_SECTION_KIND_RODATA;
- else if (streq (string, "rosdata")) GHS_section_kind = GHS_SECTION_KIND_ROSDATA;
- else if (streq (string, "rozdata")) GHS_section_kind = GHS_SECTION_KIND_ROZDATA;
- else if (streq (string, "sdata")) GHS_section_kind = GHS_SECTION_KIND_SDATA;
- else if (streq (string, "tdata")) GHS_section_kind = GHS_SECTION_KIND_TDATA;
- else if (streq (string, "zdata")) GHS_section_kind = GHS_SECTION_KIND_ZDATA;
- /* According to GHS beta documentation, the following should not be allowed! */
- else if (streq (string, "bss")) GHS_section_kind = GHS_SECTION_KIND_BSS;
- else if (streq (string, "zbss")) GHS_section_kind = GHS_SECTION_KIND_ZDATA;
- else
- {
- warning ("Unrecognised section name '%s' in GHS section pragma",
- string);
- state = V850_PS_BAD;
- }
- break;
+ bad:
+ warning ("malformed #pragma ghs section");
+ return;
- case V850_PS_EXPECTING_EQUALS:
- if (streq (string, "="))
- state = V850_PS_EXPECTING_SECTION_ALIAS;
- else
- {
- warning ("Missing '=' in GHS section pragma");
- state = V850_PS_BAD;
- }
- break;
-
- case V850_PS_EXPECTING_SECTION_ALIAS:
- if (streq (string, "default"))
- GHS_current_section_names [GHS_section_kind] = NULL;
- else
- GHS_current_section_names [GHS_section_kind] =
- build_string (strlen (string) + 1, string);
-
- state = V850_PS_MAYBE_COMMA;
- break;
-
- case V850_PS_MAYBE_COMMA:
- if (streq (string, ","))
- state = V850_PS_MAYBE_SECTION_NAME;
- else
- {
- warning
- ("Malformed GHS section pragma: found '%s' instead of a comma",
- string);
- state = V850_PS_BAD;
- }
- break;
- }
-
- return 1;
+ reset:
+ /* #pragma ghs section \n: Reset all section names back to their defaults. */
+ {
+ int i;
+ for (i = COUNT_OF_GHS_SECTION_KINDS; i--;)
+ GHS_current_section_names [i] = NULL;
+ }
}
-/* Handle the parsing of an entire GHS pragma. */
-int
-v850_handle_pragma (p_getc, p_ungetc, name)
- int (* p_getc) PARAMS ((void));
- void (* p_ungetc) PARAMS ((int));
- char * name;
+void
+ghs_pragma_interrupt (pfile)
+ cpp_reader *pfile ATTRIBUTE_UNUSED;
{
- /* Parse characters in the input stream until:
-
- * end of line
- * end of file
- * a complete GHS pragma has been parsed
- * a corrupted GHS pragma has been parsed
- * an unknown pragma is encountered.
-
- If an unknown pragma is encountered, we must return with
- the input stream in the same state as upon entry to this function.
-
- The first token in the input stream has already been parsed
- for us, and is passed as 'name'. */
-
- if (! streq (name, "ghs"))
- return 0;
-
- /* We now know that we are parsing a GHS pragma, so we do
- not need to preserve the original input stream state. */
- for (;;)
- {
- static char buffer [128];
- int c;
- char * buff;
-
- /* Skip white space. */
- do
- c = p_getc ();
- while (c == ' ' || c == '\t');
-
- p_ungetc (c);
-
- if (c == '\n' || c == EOF || c == '\r')
- return parse_ghs_pragma_token (NULL);
+ tree x;
+ if (c_lex (&x) != CPP_EOF)
+ warning ("junk at end of #pragma ghs interrupt");
+ mark_current_function_as_interrupt ();
+}
- /* Read next word. We have to do the parsing ourselves, rather
- than calling yylex() because we can be built with front ends
- that do not provide such functions. */
- buff = buffer;
- * buff ++ = (c = p_getc ());
+void
+ghs_pragma_starttda (pfile)
+ cpp_reader *pfile ATTRIBUTE_UNUSED;
+{
+ tree x;
+ if (c_lex (&x) != CPP_EOF)
+ warning ("junk at end of #pragma ghs starttda");
+ push_data_area (DATA_AREA_TDA);
+}
- switch (c)
- {
- case ',':
- case '=':
- * buff ++ = (c = p_getc ());
- break;
-
- case '"':
- /* Skip opening double parenthesis. */
- -- buff;
-
- /* Read string. */
- do
- * buff ++ = (c = p_getc ());
- while (c != EOF && (ISALNUM (c) || c == '_' || c == '.' || c == ' ')
- && (buff < buffer + 126));
-
- if (c != '"')
- warning ("Missing trailing \" in #pragma ghs");
- else
- c = p_getc ();
- break;
+void
+ghs_pragma_startsda (pfile)
+ cpp_reader *pfile ATTRIBUTE_UNUSED;
+{
+ tree x;
+ if (c_lex (&x) != CPP_EOF)
+ warning ("junk at end of #pragma ghs startsda");
+ push_data_area (DATA_AREA_SDA);
+}
- default:
- while (c != EOF && (ISALNUM (c) || c == '_' || c == '.')
- && (buff < buffer + 126))
- * buff ++ = (c = p_getc ());
- break;
- }
+void
+ghs_pragma_startzda (pfile)
+ cpp_reader *pfile ATTRIBUTE_UNUSED;
+{
+ tree x;
+ if (c_lex (&x) != CPP_EOF)
+ warning ("junk at end of #pragma ghs startzda");
+ push_data_area (DATA_AREA_ZDA);
+}
- p_ungetc (c);
+void
+ghs_pragma_endtda (pfile)
+ cpp_reader *pfile ATTRIBUTE_UNUSED;
+{
+ tree x;
+ if (c_lex (&x) != CPP_EOF)
+ warning ("junk at end of #pragma ghs endtda");
+ pop_data_area (DATA_AREA_TDA);
+}
- /* If nothing was read then terminate the parsing. */
- if (buff == buffer + 1)
- return parse_ghs_pragma_token (NULL);
+void
+ghs_pragma_endsda (pfile)
+ cpp_reader *pfile ATTRIBUTE_UNUSED;
+{
+ tree x;
+ if (c_lex (&x) != CPP_EOF)
+ warning ("junk at end of #pragma ghs endsda");
+ pop_data_area (DATA_AREA_SDA);
+}
- /* Parse and continue. */
- * -- buff = 0;
-
- parse_ghs_pragma_token (buffer);
- }
+void
+ghs_pragma_endzda (pfile)
+ cpp_reader *pfile ATTRIBUTE_UNUSED;
+{
+ tree x;
+ if (c_lex (&x) != CPP_EOF)
+ warning ("junk at end of #pragma ghs endzda");
+ pop_data_area (DATA_AREA_ZDA);
}
/* Add data area to the given declaration if a ghs data area pragma is
diff --git a/gcc/config/v850/v850.h b/gcc/config/v850/v850.h
index 88267e7ac95..dfe4b20e4c1 100644
--- a/gcc/config/v850/v850.h
+++ b/gcc/config/v850/v850.h
@@ -19,6 +19,9 @@ along with GNU CC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
+#ifndef GCC_V850_H
+#define GCC_V850_H
+
#include "svr4.h" /* Automatically does #undef CPP_PREDEFINES */
/* These are defiend in svr4.h but we want to override them. */
@@ -138,7 +141,7 @@ extern int target_flags;
/* Information about the various small memory areas. */
struct small_memory_info {
- char *name;
+ const char *name;
const char *value;
long max;
long physical_max;
@@ -1505,27 +1508,17 @@ do { char dstr[30]; \
v850_set_default_decl_attr (decl)
/* Tell compiler we want to support GHS pragmas */
-#define HANDLE_PRAGMA(get, unget, name) v850_handle_pragma (get, unget, name)
-
-enum v850_pragma_state
-{
- V850_PS_START,
- V850_PS_SHOULD_BE_DONE,
- V850_PS_BAD,
- V850_PS_MAYBE_SECTION_NAME,
- V850_PS_EXPECTING_EQUALS,
- V850_PS_EXPECTING_SECTION_ALIAS,
- V850_PS_MAYBE_COMMA
-};
-
-enum v850_pragma_type
-{
- V850_PT_UNKNOWN,
- V850_PT_INTERRUPT,
- V850_PT_SECTION,
- V850_PT_START_SECTION,
- V850_PT_END_SECTION
-};
+#define REGISTER_TARGET_PRAGMAS(PFILE) do { \
+ cpp_register_pragma_space (PFILE, "ghs"); \
+ cpp_register_pragma (PFILE, "ghs", "interrupt", ghs_pragma_interrupt); \
+ cpp_register_pragma (PFILE, "ghs", "section", ghs_pragma_section); \
+ cpp_register_pragma (PFILE, "ghs", "starttda", ghs_pragma_starttda); \
+ cpp_register_pragma (PFILE, "ghs", "startsda", ghs_pragma_startsda); \
+ cpp_register_pragma (PFILE, "ghs", "startzda", ghs_pragma_startzda); \
+ cpp_register_pragma (PFILE, "ghs", "endtda", ghs_pragma_endtda); \
+ cpp_register_pragma (PFILE, "ghs", "endsda", ghs_pragma_endsda); \
+ cpp_register_pragma (PFILE, "ghs", "endzda", ghs_pragma_endzda); \
+} while (0)
/* enum GHS_SECTION_KIND is an enumeration of the kinds of sections that
can appear in the "ghs section" pragma. These names are used to index
@@ -1621,3 +1614,4 @@ enum GHS_section_kind
{ "register_is_ok_for_epilogue",{ REG }}, \
{ "not_power_of_two_operand", { CONST_INT }},
+#endif /* v850.h */
diff --git a/gcc/config/vax/vax.md b/gcc/config/vax/vax.md
index a6d0e6c85ab..02ce48e7626 100644
--- a/gcc/config/vax/vax.md
+++ b/gcc/config/vax/vax.md
@@ -257,7 +257,7 @@
}")
(define_insn "movstricthi"
- [(set (strict_low_part (match_operand:HI 0 "register_operand" "=g"))
+ [(set (strict_low_part (match_operand:HI 0 "register_operand" "+g"))
(match_operand:HI 1 "general_operand" "g"))]
""
"*
@@ -307,7 +307,7 @@
}")
(define_insn "movstrictqi"
- [(set (strict_low_part (match_operand:QI 0 "register_operand" "=g"))
+ [(set (strict_low_part (match_operand:QI 0 "register_operand" "+g"))
(match_operand:QI 1 "general_operand" "g"))]
""
"*
diff --git a/gcc/configure b/gcc/configure
index 4d922d5c448..34b89d4ada7 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -2162,7 +2162,7 @@ fi
for ac_hdr in limits.h stddef.h string.h strings.h stdlib.h time.h \
fcntl.h unistd.h stab.h sys/file.h sys/time.h \
sys/resource.h sys/param.h sys/times.h sys/stat.h \
- direct.h malloc.h
+ direct.h malloc.h langinfo.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
@@ -2506,7 +2506,7 @@ fi
for ac_func in strtoul bsearch putenv popen bcopy bzero bcmp \
index rindex strchr strrchr kill getrlimit setrlimit atoll atoq \
sysconf isascii gettimeofday strsignal putc_unlocked fputc_unlocked \
- fputs_unlocked getrusage valloc
+ fputs_unlocked getrusage valloc iconv nl_langinfo
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
echo "configure:2513: checking for $ac_func" >&5
@@ -5037,6 +5037,23 @@ for machine in $build $host $target; do
m32r-*-elf*)
extra_parts="crtinit.o crtfini.o"
;;
+ # m68hc11 and m68hc12 share the same machine description.
+ m68hc11-*-*|m6811-*-*)
+ tm_file="m68hc11/m68hc11.h"
+ xm_file="m68hc11/xm-m68hc11.h"
+ tm_p_file="m68hc11/m68hc11-protos.h"
+ md_file="m68hc11/m68hc11.md"
+ out_file="m68hc11/m68hc11.c"
+ tmake_file="m68hc11/t-m68hc11-gas"
+ ;;
+ m68hc12-*-*|m6812-*-*)
+ tm_file="m68hc11/m68hc12.h"
+ tm_p_file="m68hc11/m68hc11-protos.h"
+ xm_file="m68hc11/xm-m68hc11.h"
+ md_file="m68hc11/m68hc11.md"
+ out_file="m68hc11/m68hc11.c"
+ tmake_file="m68hc11/t-m68hc11-gas"
+ ;;
m68000-convergent-sysv*)
tm_file=m68k/ctix.h
xm_file="m68k/xm-3b1.h ${xm_file}"
@@ -7131,7 +7148,7 @@ fi
echo $ac_n "checking for strerror in -lcposix""... $ac_c" 1>&6
-echo "configure:7135: checking for strerror in -lcposix" >&5
+echo "configure:7152: checking for strerror in -lcposix" >&5
ac_lib_var=`echo cposix'_'strerror | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -7139,7 +7156,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lcposix $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 7143 "configure"
+#line 7160 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -7150,7 +7167,7 @@ int main() {
strerror()
; return 0; }
EOF
-if { (eval echo configure:7154: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7171: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -7173,12 +7190,12 @@ fi
echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:7177: checking for working const" >&5
+echo "configure:7194: checking for working const" >&5
if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7182 "configure"
+#line 7199 "configure"
#include "confdefs.h"
int main() {
@@ -7227,7 +7244,7 @@ ccp = (char const *const *) p;
; return 0; }
EOF
-if { (eval echo configure:7231: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7248: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
@@ -7248,12 +7265,12 @@ EOF
fi
echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:7252: checking for off_t" >&5
+echo "configure:7269: checking for off_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7257 "configure"
+#line 7274 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -7281,12 +7298,12 @@ EOF
fi
echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:7285: checking for size_t" >&5
+echo "configure:7302: checking for size_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7290 "configure"
+#line 7307 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -7316,19 +7333,19 @@ fi
# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
# for constant arguments. Useless!
echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
-echo "configure:7320: checking for working alloca.h" >&5
+echo "configure:7337: checking for working alloca.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7325 "configure"
+#line 7342 "configure"
#include "confdefs.h"
#include <alloca.h>
int main() {
char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
-if { (eval echo configure:7332: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7349: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_header_alloca_h=yes
else
@@ -7349,12 +7366,12 @@ EOF
fi
echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:7353: checking for alloca" >&5
+echo "configure:7370: checking for alloca" >&5
if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7358 "configure"
+#line 7375 "configure"
#include "confdefs.h"
#ifdef __GNUC__
@@ -7382,7 +7399,7 @@ int main() {
char *p = (char *) alloca(1);
; return 0; }
EOF
-if { (eval echo configure:7386: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7403: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_func_alloca_works=yes
else
@@ -7414,12 +7431,12 @@ EOF
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:7418: checking whether alloca needs Cray hooks" >&5
+echo "configure:7435: checking whether alloca needs Cray hooks" >&5
if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7423 "configure"
+#line 7440 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
@@ -7444,12 +7461,12 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6
if test $ac_cv_os_cray = yes; then
for ac_func in _getb67 GETB67 getb67; do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7448: checking for $ac_func" >&5
+echo "configure:7465: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7453 "configure"
+#line 7470 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -7472,7 +7489,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:7476: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7493: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -7499,7 +7516,7 @@ done
fi
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:7503: checking stack direction for C alloca" >&5
+echo "configure:7520: checking stack direction for C alloca" >&5
if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -7507,7 +7524,7 @@ else
ac_cv_c_stack_direction=0
else
cat > conftest.$ac_ext <<EOF
-#line 7511 "configure"
+#line 7528 "configure"
#include "confdefs.h"
find_stack_direction ()
{
@@ -7526,7 +7543,7 @@ main ()
exit (find_stack_direction() < 0);
}
EOF
-if { (eval echo configure:7530: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:7547: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_c_stack_direction=1
else
@@ -7553,17 +7570,17 @@ unistd.h sys/param.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:7557: checking for $ac_hdr" >&5
+echo "configure:7574: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7562 "configure"
+#line 7579 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7567: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7584: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -7593,12 +7610,12 @@ done
strdup __argz_count __argz_stringify __argz_next
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7597: checking for $ac_func" >&5
+echo "configure:7614: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7602 "configure"
+#line 7619 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -7621,7 +7638,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:7625: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7642: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -7650,12 +7667,12 @@ done
for ac_func in stpcpy
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7654: checking for $ac_func" >&5
+echo "configure:7671: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7659 "configure"
+#line 7676 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -7678,7 +7695,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:7682: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7699: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -7712,19 +7729,19 @@ EOF
if test $ac_cv_header_locale_h = yes; then
echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:7716: checking for LC_MESSAGES" >&5
+echo "configure:7733: checking for LC_MESSAGES" >&5
if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7721 "configure"
+#line 7738 "configure"
#include "confdefs.h"
#include <locale.h>
int main() {
return LC_MESSAGES
; return 0; }
EOF
-if { (eval echo configure:7728: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7745: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_val_LC_MESSAGES=yes
else
@@ -7745,7 +7762,7 @@ EOF
fi
fi
echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6
-echo "configure:7749: checking whether NLS is requested" >&5
+echo "configure:7766: checking whether NLS is requested" >&5
# Check whether --enable-nls or --disable-nls was given.
if test "${enable_nls+set}" = set; then
enableval="$enable_nls"
@@ -7765,13 +7782,13 @@ fi
EOF
echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6
-echo "configure:7769: checking whether included gettext is requested" >&5
+echo "configure:7786: checking whether included gettext is requested" >&5
# Check whether --with-included-gettext or --without-included-gettext was given.
if test "${with_included_gettext+set}" = set; then
withval="$with_included_gettext"
nls_cv_force_use_gnu_gettext=$withval
else
- nls_cv_force_use_gnu_gettext=yes
+ nls_cv_force_use_gnu_gettext=no
fi
echo "$ac_t""$nls_cv_force_use_gnu_gettext" 1>&6
@@ -7784,17 +7801,17 @@ fi
ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for libintl.h""... $ac_c" 1>&6
-echo "configure:7788: checking for libintl.h" >&5
+echo "configure:7805: checking for libintl.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7793 "configure"
+#line 7810 "configure"
#include "confdefs.h"
#include <libintl.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7798: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7815: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -7811,19 +7828,19 @@ fi
if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6
-echo "configure:7815: checking for gettext in libc" >&5
+echo "configure:7832: checking for gettext in libc" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7820 "configure"
+#line 7837 "configure"
#include "confdefs.h"
#include <libintl.h>
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:7827: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7844: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libc=yes
else
@@ -7839,7 +7856,7 @@ echo "$ac_t""$gt_cv_func_gettext_libc" 1>&6
if test "$gt_cv_func_gettext_libc" != "yes"; then
echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6
-echo "configure:7843: checking for bindtextdomain in -lintl" >&5
+echo "configure:7860: checking for bindtextdomain in -lintl" >&5
ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -7847,7 +7864,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lintl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 7851 "configure"
+#line 7868 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -7858,7 +7875,7 @@ int main() {
bindtextdomain()
; return 0; }
EOF
-if { (eval echo configure:7862: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7879: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -7874,12 +7891,12 @@ fi
if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6
-echo "configure:7878: checking for gettext in libintl" >&5
+echo "configure:7895: checking for gettext in libintl" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
echo $ac_n "checking for gettext in -lintl""... $ac_c" 1>&6
-echo "configure:7883: checking for gettext in -lintl" >&5
+echo "configure:7900: checking for gettext in -lintl" >&5
ac_lib_var=`echo intl'_'gettext | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -7887,7 +7904,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lintl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 7891 "configure"
+#line 7908 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -7898,7 +7915,7 @@ int main() {
gettext()
; return 0; }
EOF
-if { (eval echo configure:7902: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7919: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -7937,7 +7954,7 @@ EOF
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:7941: checking for $ac_word" >&5
+echo "configure:7958: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -7971,12 +7988,12 @@ fi
for ac_func in dcgettext
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7975: checking for $ac_func" >&5
+echo "configure:7992: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7980 "configure"
+#line 7997 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -7999,7 +8016,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:8003: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8020: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -8026,7 +8043,7 @@ done
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:8030: checking for $ac_word" >&5
+echo "configure:8047: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -8062,7 +8079,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:8066: checking for $ac_word" >&5
+echo "configure:8083: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -8094,7 +8111,7 @@ else
fi
cat > conftest.$ac_ext <<EOF
-#line 8098 "configure"
+#line 8115 "configure"
#include "confdefs.h"
int main() {
@@ -8102,7 +8119,7 @@ extern int _nl_msg_cat_cntr;
return _nl_msg_cat_cntr
; return 0; }
EOF
-if { (eval echo configure:8106: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8123: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
CATOBJEXT=.gmo
DATADIRNAME=share
@@ -8125,7 +8142,7 @@ fi
if test "$CATOBJEXT" = "NONE"; then
echo $ac_n "checking whether catgets can be used""... $ac_c" 1>&6
-echo "configure:8129: checking whether catgets can be used" >&5
+echo "configure:8146: checking whether catgets can be used" >&5
# Check whether --with-catgets or --without-catgets was given.
if test "${with_catgets+set}" = set; then
withval="$with_catgets"
@@ -8138,7 +8155,7 @@ fi
if test "$nls_cv_use_catgets" = "yes"; then
echo $ac_n "checking for main in -li""... $ac_c" 1>&6
-echo "configure:8142: checking for main in -li" >&5
+echo "configure:8159: checking for main in -li" >&5
ac_lib_var=`echo i'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -8146,14 +8163,14 @@ else
ac_save_LIBS="$LIBS"
LIBS="-li $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 8150 "configure"
+#line 8167 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:8157: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8174: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -8181,12 +8198,12 @@ else
fi
echo $ac_n "checking for catgets""... $ac_c" 1>&6
-echo "configure:8185: checking for catgets" >&5
+echo "configure:8202: checking for catgets" >&5
if eval "test \"`echo '$''{'ac_cv_func_catgets'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8190 "configure"
+#line 8207 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char catgets(); below. */
@@ -8209,7 +8226,7 @@ catgets();
; return 0; }
EOF
-if { (eval echo configure:8213: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8230: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_catgets=yes"
else
@@ -8231,7 +8248,7 @@ EOF
# Extract the first word of "gencat", so it can be a program name with args.
set dummy gencat; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:8235: checking for $ac_word" >&5
+echo "configure:8252: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GENCAT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -8267,7 +8284,7 @@ fi
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:8271: checking for $ac_word" >&5
+echo "configure:8288: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -8304,7 +8321,7 @@ fi
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:8308: checking for $ac_word" >&5
+echo "configure:8325: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -8343,7 +8360,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:8347: checking for $ac_word" >&5
+echo "configure:8364: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -8401,7 +8418,7 @@ fi
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:8405: checking for $ac_word" >&5
+echo "configure:8422: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -8435,7 +8452,7 @@ fi
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:8439: checking for $ac_word" >&5
+echo "configure:8456: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -8475,7 +8492,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:8479: checking for $ac_word" >&5
+echo "configure:8496: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -8570,7 +8587,7 @@ fi
LINGUAS=
else
echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6
-echo "configure:8574: checking for catalogs to be installed" >&5
+echo "configure:8591: checking for catalogs to be installed" >&5
if test "x$LINGUAS" = "x"; then
LINGUAS=$ALL_LINGUAS
else
@@ -8602,17 +8619,17 @@ echo "configure:8574: checking for catalogs to be installed" >&5
if test "$CATOBJEXT" = ".cat"; then
ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6
-echo "configure:8606: checking for linux/version.h" >&5
+echo "configure:8623: checking for linux/version.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8611 "configure"
+#line 8628 "configure"
#include "confdefs.h"
#include <linux/version.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8616: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8633: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -8687,7 +8704,7 @@ fi
echo $ac_n "checking whether windows registry support is requested""... $ac_c" 1>&6
-echo "configure:8691: checking whether windows registry support is requested" >&5
+echo "configure:8708: checking whether windows registry support is requested" >&5
if test x$enable_win32_registry != xno; then
cat >> confdefs.h <<\EOF
#define ENABLE_WIN32_REGISTRY 1
@@ -8716,7 +8733,7 @@ esac
if test x$enable_win32_registry != xno; then
echo $ac_n "checking registry key on windows hosts""... $ac_c" 1>&6
-echo "configure:8720: checking registry key on windows hosts" >&5
+echo "configure:8737: checking registry key on windows hosts" >&5
cat >> confdefs.h <<EOF
#define WIN32_REGISTRY_KEY "$gcc_cv_win32_registry_key"
EOF
@@ -8910,7 +8927,7 @@ fi
# Figure out what assembler alignment features are present.
echo $ac_n "checking assembler alignment features""... $ac_c" 1>&6
-echo "configure:8914: checking assembler alignment features" >&5
+echo "configure:8931: checking assembler alignment features" >&5
gcc_cv_as=
gcc_cv_as_alignment_features=
gcc_cv_as_gas_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gas
@@ -9031,7 +9048,7 @@ fi
echo "$ac_t""$gcc_cv_as_alignment_features" 1>&6
echo $ac_n "checking assembler subsection support""... $ac_c" 1>&6
-echo "configure:9035: checking assembler subsection support" >&5
+echo "configure:9052: checking assembler subsection support" >&5
gcc_cv_as_subsections=
if test x$gcc_cv_as != x; then
# Check if we have .subsection
@@ -9071,7 +9088,7 @@ fi
echo "$ac_t""$gcc_cv_as_subsections" 1>&6
echo $ac_n "checking assembler weak support""... $ac_c" 1>&6
-echo "configure:9075: checking assembler weak support" >&5
+echo "configure:9092: checking assembler weak support" >&5
gcc_cv_as_weak=
if test x$gcc_cv_as != x; then
# Check if we have .weak
@@ -9088,7 +9105,7 @@ fi
echo "$ac_t""$gcc_cv_as_weak" 1>&6
echo $ac_n "checking assembler hidden support""... $ac_c" 1>&6
-echo "configure:9092: checking assembler hidden support" >&5
+echo "configure:9109: checking assembler hidden support" >&5
gcc_cv_as_hidden=
if test x$gcc_cv_as != x; then
# Check if we have .hidden
@@ -9108,7 +9125,7 @@ echo "$ac_t""$gcc_cv_as_hidden" 1>&6
case "$target" in
sparc*-*-*)
echo $ac_n "checking assembler .register pseudo-op support""... $ac_c" 1>&6
-echo "configure:9112: checking assembler .register pseudo-op support" >&5
+echo "configure:9129: checking assembler .register pseudo-op support" >&5
if eval "test \"`echo '$''{'gcc_cv_as_register_pseudo_op'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -9136,7 +9153,7 @@ EOF
fi
echo $ac_n "checking assembler supports -relax""... $ac_c" 1>&6
-echo "configure:9140: checking assembler supports -relax" >&5
+echo "configure:9157: checking assembler supports -relax" >&5
if eval "test \"`echo '$''{'gcc_cv_as_relax_opt'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -9166,7 +9183,7 @@ EOF
case "$tm_file" in
*64*)
echo $ac_n "checking for 64 bit support in assembler ($gcc_cv_as)""... $ac_c" 1>&6
-echo "configure:9170: checking for 64 bit support in assembler ($gcc_cv_as)" >&5
+echo "configure:9187: checking for 64 bit support in assembler ($gcc_cv_as)" >&5
if eval "test \"`echo '$''{'gcc_cv_as_flags64'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -9211,7 +9228,7 @@ EOF
if test "x$gcc_cv_as_flags64" != xno; then
echo $ac_n "checking for assembler offsetable %lo() support""... $ac_c" 1>&6
-echo "configure:9215: checking for assembler offsetable %lo() support" >&5
+echo "configure:9232: checking for assembler offsetable %lo() support" >&5
if eval "test \"`echo '$''{'gcc_cv_as_offsetable_lo10'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -9250,7 +9267,7 @@ EOF
i[34567]86-*-*)
echo $ac_n "checking assembler instructions""... $ac_c" 1>&6
-echo "configure:9254: checking assembler instructions" >&5
+echo "configure:9271: checking assembler instructions" >&5
gcc_cv_as_instructions=
if test x$gcc_cv_as != x; then
set "filds fists" "filds mem; fists mem"
@@ -9394,7 +9411,7 @@ fi
# Build a new-libstdc++ system (ie libstdc++-v3)
echo $ac_n "checking for libstdc++ to install""... $ac_c" 1>&6
-echo "configure:9398: checking for libstdc++ to install" >&5
+echo "configure:9415: checking for libstdc++ to install" >&5
# Check whether --enable-libstdcxx-v3 or --disable-libstdcxx-v3 was given.
if test "${enable_libstdcxx_v3+set}" = set; then
enableval="$enable_libstdcxx_v3"
@@ -9418,7 +9435,7 @@ EOF
echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6
-echo "configure:9422: checking whether to enable maintainer-specific portions of Makefiles" >&5
+echo "configure:9439: checking whether to enable maintainer-specific portions of Makefiles" >&5
# Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
if test "${enable_maintainer_mode+set}" = set; then
enableval="$enable_maintainer_mode"
diff --git a/gcc/configure.in b/gcc/configure.in
index 165c295da8a..0704750b050 100644
--- a/gcc/configure.in
+++ b/gcc/configure.in
@@ -414,7 +414,7 @@ AC_HEADER_SYS_WAIT
AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h \
fcntl.h unistd.h stab.h sys/file.h sys/time.h \
sys/resource.h sys/param.h sys/times.h sys/stat.h \
- direct.h malloc.h)
+ direct.h malloc.h langinfo.h)
# Check for thread headers.
AC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=])
@@ -490,7 +490,7 @@ fi
AC_CHECK_FUNCS(strtoul bsearch putenv popen bcopy bzero bcmp \
index rindex strchr strrchr kill getrlimit setrlimit atoll atoq \
sysconf isascii gettimeofday strsignal putc_unlocked fputc_unlocked \
- fputs_unlocked getrusage valloc)
+ fputs_unlocked getrusage valloc iconv nl_langinfo)
AC_CHECK_TYPE(ssize_t, int)
@@ -2047,6 +2047,23 @@ changequote([,])dnl
m32r-*-elf*)
extra_parts="crtinit.o crtfini.o"
;;
+ # m68hc11 and m68hc12 share the same machine description.
+ m68hc11-*-*|m6811-*-*)
+ tm_file="m68hc11/m68hc11.h"
+ xm_file="m68hc11/xm-m68hc11.h"
+ tm_p_file="m68hc11/m68hc11-protos.h"
+ md_file="m68hc11/m68hc11.md"
+ out_file="m68hc11/m68hc11.c"
+ tmake_file="m68hc11/t-m68hc11-gas"
+ ;;
+ m68hc12-*-*|m6812-*-*)
+ tm_file="m68hc11/m68hc12.h"
+ tm_p_file="m68hc11/m68hc11-protos.h"
+ xm_file="m68hc11/xm-m68hc11.h"
+ md_file="m68hc11/m68hc11.md"
+ out_file="m68hc11/m68hc11.c"
+ tmake_file="m68hc11/t-m68hc11-gas"
+ ;;
m68000-convergent-sysv*)
tm_file=m68k/ctix.h
xm_file="m68k/xm-3b1.h ${xm_file}"
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 537e57ad048..4a75cb66cee 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,137 @@
+2000-09-13 J. David Anglin <dave@hiauly1.hia.nrc.ca>
+
+ * init.c (begin_init_stmts): Don't use // comments.
+
+2000-09-12 Jason Merrill <jason@redhat.com>
+
+ * decl.c (maybe_deduce_size_from_array_init): Set do_default for
+ all non-extern arrays.
+
+ * decl.c (grokdeclarator): Complain about 'friend T' for implicit
+ typenames, too. Downgrade complaint to pedwarn.
+ (xref_tag): Warn about surprising behavior of 'friend struct T'.
+ * decl2.c (handle_class_head): Generate a TYPENAME_TYPE for
+ 'class This::Inherited'.
+
+2000-09-12 Mark Mitchell <mark@codesourcery.com>
+
+ * decl.c (finish_case_label): Given the LABEL_DECL a
+ DECL_CONTEXT.
+
+2000-09-12 Gabriel Dos Reis <gdr@codesourcery.com>
+
+ * error.c (TFF_PLAIN_IDENTIFIER, TFF_NAMESPACE_SCOPE,
+ TFF_CLASS_SCOPE, TFF_CHASE_NAMESPACE_ALIAS, TFF_CHASE_TYPDEF,
+ TFF_DECL_SPECIFIERS, TFF_CLASS_KEY_OR_ENUM, TFF_RETURN_TYPE,
+ TFF_FUNCTION_DEFAULT_ARGUMENTS, TFF_EXCEPTION_SPECIFICATION,
+ TFF_TEMPLATE_HEADER, TFF_TEMPLATE_DEFAULT_ARGUMENTS, TFF_SCOPE):
+ New macros.
+ (sorry_for_unsupported_tree, print_scope_operator,
+ print_left_paren, print_right_paren, print_left_bracket,
+ print_right_bracket, print_whitespace): Likewise.
+ (aggr_variety): Rename to class_key_or_enum.
+ (print_type): Rename to print_type_id.
+ (print_type_specifier_seq, print_simple_type_specifier,
+ print_elaborated_type_specifier,
+ print_rest_of_abstract_declarator,
+ print_parameter_declaration_clause, print_exception_specification,
+ print_nested_name_specifier, print_template_id,
+ typedef_original_name, print_template_argument_list_start,
+ print_template_argument_list_end): New functions.
+
+2000-09-11 Gabriel Dos Reis <gdr@codesourcery.com>
+
+ * ir.texi: Add more documentation.
+
+2000-09-11 Mark Mitchell <mark@codesourcery.com>
+
+ * cp-tree.h (struct saved_scope): Remove x_function_parms.
+ (current_function_parms): Don't define.
+ (struct cp_language_function): Remove parms_stored.
+ (current_function_just_assigned_this): Don't define.
+ (current_function_parms_stored): Likewise.
+ (static_ctors): Declare.
+ (static_dtors): Likewise.
+ (SF_EXPAND): Don't define.
+ (expand_start_early_try_stmts): Remove declaration.
+ (store_parm_decls): Likewise.
+ * decl.c (static_ctors): Don't declare.
+ (static_dtors): Likewise.
+ (struct binding_level): Remove this_block.
+ (poplevel): Remove dead code.
+ (set_block): Likewise.
+ (mark_binding_level): Don't mark this_block.
+ (mark_saved_scope): Don't mark x_function_parms.
+ (init_decl_processing): Don't add current_function_parms as a GC
+ root.
+ (check_function_type): Change prototype.
+ (start_function): Remove RTL-generation code.
+ (expand_start_early_try_stmts): Remove.
+ (store_parm_decls): Give it internal linkage. Remove
+ RTL-generation code.
+ (finish_function): Remove RTL-generation code.
+ * decl2.c (static_ctors): Fix formatting.
+ (static_dtors): Likewise.
+ * method.c (use_thunk): Don't call store_parm_decls.
+ (synthesize_method): Likewise.
+ * optimize.c (maybe_clone_body): Likewise.
+ * parse.y (fn.def2): Likewise.
+ (.set_base_init): Likewise.
+ (nodecls): Likewise.
+ * pt.c (instantiate_decl): Likewise.
+ * rtti.c (synthesize_tinfo_fn): Likewise.
+ * semantics.c (genrtl_try_block): Simplify.
+ (expand_body): Use genrtl_start_function and
+ genrtl_finish_function.
+ (genrtl_start_function): New function.
+ (genrtl_finish_function): Likewise.
+
+2000-09-11 Nathan Sidwell <nathan@codesourcery.com>
+
+ * error.c (cp_tree_printer, case 'P'): Append break.
+
+2000-09-11 Nathan Sidwell <nathan@codesourcery.com>
+
+ * cp-tree.h (frob_opname): Declare.
+ * parse.y (saved_scopes): New static variable.
+ (cp_parse_init): Adjust.
+ (do_id): If lastiddecl is NULL, do do_identifier.
+ (operator): Save scope information.
+ (unoperator): new reduction. Restore scope information.
+ (operator_name): Append unoperator. Call frob_opname.
+ * spew.c (frob_opname): Define.
+
+2000-09-10 Zack Weinberg <zack@wolery.cumb.org>
+
+ * decl.c, rtti.c: Include defaults.h if not already included.
+ Don't define the *_TYPE_SIZE macros.
+
+2000-09-09 Mark Mitchell <mark@codesourcery.com>
+
+ * cp-tree.h (push_switch): Change prototype.
+ (check_cp_case_value): Remove declaration.
+ (decl_constant_value): Likewise.
+ * decl.c (struct cp_switch): Add switch_stmt and cases.
+ (case_compare): New function.
+ (push_switch): Set switch_stmt. Initialize cases.
+ (pop_switch): Clean up cases.
+ (define_case_label): Rename to ...
+ (finish_case_label): ... this. Do semantic analysis for case
+ labels here.
+ (start_function): Correct comment.
+ * decl2.c (check_cp_case_value): Remove.
+ * expr.c (do_case): Remove.
+ * pt.c (tsubst_expr): Adjust call to finish_case_label.
+ * semantics.c (genrtl_do_poplevel): Remove declaration.
+ (RECHAIN_STMTS): Remove.
+ (finish_break_stmt): Use build_break_stmt.
+ (finish_continue_stmt): Use build_continue_stmt.
+ (finish_switch_cond): Adjust condition here, rater than in
+ c_expand_start_case.
+ (finish_case_label): Remove.
+ * typeck.c (c_expand_return): Remove.
+ (c_expand_start_case): Likewise.
+
2000-09-07 Gabriel Dos Reis <gdr@codesourcery.com>
* ir.texi: Document type nodes.
diff --git a/gcc/cp/Makefile.in b/gcc/cp/Makefile.in
index e73f6ad1125..839e5748e2d 100644
--- a/gcc/cp/Makefile.in
+++ b/gcc/cp/Makefile.in
@@ -280,7 +280,7 @@ tree.o : tree.c $(CXX_TREE_H) $(srcdir)/../flags.h \
../insn-config.h $(srcdir)/../integrate.h
ptree.o : ptree.c $(CXX_TREE_H) $(srcdir)/../system.h
rtti.o : rtti.c $(CXX_TREE_H) $(srcdir)/../flags.h \
- $(srcdir)/../toplev.h
+ $(srcdir)/../toplev.h $(srcdir)/../defaults.h
except.o : except.c $(CXX_TREE_H) $(srcdir)/../flags.h $(RTL_H) \
$(srcdir)/../except.h $(srcdir)/../toplev.h cfns.h
expr.o : expr.c $(CXX_TREE_H) $(RTL_H) $(srcdir)/../flags.h \
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
index 6ded8fedeb0..14bb56559b6 100644
--- a/gcc/cp/cp-tree.h
+++ b/gcc/cp/cp-tree.h
@@ -792,7 +792,6 @@ struct saved_scope {
varray_type lang_base;
tree *lang_stack;
tree lang_name;
- tree x_function_parms;
tree template_parms;
tree x_previous_class_type;
tree x_previous_class_values;
@@ -841,7 +840,6 @@ struct saved_scope {
/* Parsing a function declarator leaves a list of parameter names
or a chain or parameter decls here. */
-#define current_function_parms scope_chain->x_function_parms
#define current_template_parms scope_chain->template_parms
#define processing_template_decl scope_chain->x_processing_template_decl
@@ -889,7 +887,6 @@ struct cp_language_function
int returns_value;
int returns_null;
- int parms_stored;
int in_function_try_handler;
int x_expanding_p;
int name_declared;
@@ -956,12 +953,6 @@ struct cp_language_function
#define current_function_returns_null cp_function_chain->returns_null
-#define current_function_just_assigned_this \
- cp_function_chain->just_assigned_this
-
-#define current_function_parms_stored \
- cp_function_chain->parms_stored
-
/* Nonzero if we have already generated code to initialize virtual
function tables in this function. */
@@ -3513,6 +3504,11 @@ extern int flag_inline_trees;
extern int at_eof;
+/* Functions called along with real static constructors and destructors. */
+
+extern tree static_ctors;
+extern tree static_dtors;
+
enum overload_flags { NO_SPECIAL = 0, DTOR_FLAG, OP_FLAG, TYPENAME_FLAG };
/* Some macros for char-based bitfields. */
@@ -3641,8 +3637,6 @@ enum overload_flags { NO_SPECIAL = 0, DTOR_FLAG, OP_FLAG, TYPENAME_FLAG };
already been parsed. */
#define SF_INCLASS_INLINE 2 /* The function is an inline, defined
in the class body. */
-#define SF_EXPAND 4 /* Generate RTL for this function. */
-
/* Returns nonzero iff TYPE1 and TYPE2 are the same type, or if TYPE2
is derived from TYPE1, or if TYPE2 is a pointer (reference) to a
@@ -3833,7 +3827,7 @@ extern void pop_nested_namespace PARAMS ((tree));
extern void maybe_push_to_top_level PARAMS ((int));
extern void push_to_top_level PARAMS ((void));
extern void pop_from_top_level PARAMS ((void));
-extern void push_switch PARAMS ((void));
+extern void push_switch PARAMS ((tree));
extern void pop_switch PARAMS ((void));
extern tree identifier_type_value PARAMS ((tree));
extern void set_identifier_type_value PARAMS ((tree, tree));
@@ -3909,8 +3903,6 @@ extern tree start_enum PARAMS ((tree));
extern tree finish_enum PARAMS ((tree));
extern void build_enumerator PARAMS ((tree, tree, tree));
extern int start_function PARAMS ((tree, tree, tree, int));
-extern void expand_start_early_try_stmts PARAMS ((void));
-extern void store_parm_decls PARAMS ((void));
extern tree finish_function PARAMS ((int));
extern tree start_method PARAMS ((tree, tree, tree));
extern tree finish_method PARAMS ((tree));
@@ -3994,7 +3986,6 @@ extern tree reparse_absdcl_as_casts PARAMS ((tree, tree));
extern tree build_expr_from_tree PARAMS ((tree));
extern tree reparse_decl_as_expr PARAMS ((tree, tree));
extern tree finish_decl_parsing PARAMS ((tree));
-extern tree check_cp_case_value PARAMS ((tree));
extern void set_decl_namespace PARAMS ((tree, tree, int));
extern tree current_decl_namespace PARAMS ((void));
extern void push_decl_namespace PARAMS ((tree));
@@ -4079,7 +4070,6 @@ extern tree get_type_value PARAMS ((tree));
extern tree build_member_call PARAMS ((tree, tree, tree));
extern tree build_offset_ref PARAMS ((tree, tree));
extern tree resolve_offset_ref PARAMS ((tree));
-extern tree decl_constant_value PARAMS ((tree));
extern tree build_new PARAMS ((tree, tree, tree, int));
extern tree build_vec_init PARAMS ((tree, tree, tree, tree, int));
extern tree build_x_delete PARAMS ((tree, int, tree));
@@ -4390,6 +4380,7 @@ extern void init_spew PARAMS ((void));
extern int peekyylex PARAMS ((void));
extern int yylex PARAMS ((void));
extern tree arbitrate_lookup PARAMS ((tree, tree, tree));
+extern tree frob_opname PARAMS ((tree));
/* in tree.c */
extern void init_tree PARAMS ((void));
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index ac7884d96f9..eec9f68297b 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -42,13 +42,10 @@ Boston, MA 02111-1307, USA. */
#include "except.h"
#include "toplev.h"
#include "../hash.h"
-#include "defaults.h"
#include "ggc.h"
extern int current_class_depth;
-extern tree static_ctors, static_dtors;
-
extern tree global_namespace;
extern int (*valid_lang_attribute) PARAMS ((tree, tree, tree, tree));
@@ -57,14 +54,6 @@ extern int (*valid_lang_attribute) PARAMS ((tree, tree, tree, tree));
int ggc_p = 1;
-#ifndef WCHAR_UNSIGNED
-#define WCHAR_UNSIGNED 0
-#endif
-
-#ifndef CHAR_TYPE_SIZE
-#define CHAR_TYPE_SIZE BITS_PER_UNIT
-#endif
-
#ifndef BOOL_TYPE_SIZE
#ifdef SLOW_BYTE_ACCESS
/* In the new ABI, `bool' has size and alignment `1', on all
@@ -172,7 +161,7 @@ static void mark_saved_scope PARAMS ((void *));
static void mark_lang_function PARAMS ((struct cp_language_function *));
static void mark_stmt_tree PARAMS ((stmt_tree));
static void save_function_data PARAMS ((tree));
-static void check_function_type PARAMS ((tree));
+static void check_function_type PARAMS ((tree, tree));
static void destroy_local_var PARAMS ((tree));
static void finish_constructor_body PARAMS ((void));
static void finish_destructor_body PARAMS ((void));
@@ -187,6 +176,8 @@ static tree check_special_function_return_type
PARAMS ((special_function_kind, tree, tree, tree));
static tree push_cp_library_fn PARAMS ((enum tree_code, tree));
static tree build_cp_library_fn PARAMS ((tree, enum tree_code, tree));
+static int case_compare PARAMS ((splay_tree_key, splay_tree_key));
+static void store_parm_decls PARAMS ((tree));
#if defined (DEBUG_CP_BINDING_LEVELS)
static void indent PARAMS ((void));
@@ -455,10 +446,6 @@ struct binding_level
that were entered and exited one level down. */
tree blocks;
- /* The BLOCK node for this level, if one has been preallocated.
- If 0, the BLOCK is allocated (if needed) when the level is popped. */
- tree this_block;
-
/* The _TYPE node for this level, if parm_flag == 2. */
tree this_class;
@@ -1296,7 +1283,6 @@ poplevel (keep, reverse, functionbody)
tree subblocks;
tree block = NULL_TREE;
tree decl;
- int block_previously_created;
int leaving_for_scope;
if (cfun && !doing_semantic_analysis_p ())
@@ -1404,34 +1390,12 @@ poplevel (keep, reverse, functionbody)
or if this level is a function body,
create a BLOCK to record them for the life of this function. */
block = NULL_TREE;
- block_previously_created = (current_binding_level->this_block != NULL_TREE);
- if (block_previously_created)
- block = current_binding_level->this_block;
- else if (keep == 1 || functionbody)
+ if (keep == 1 || functionbody)
block = make_node (BLOCK);
if (block != NULL_TREE)
{
- if (block_previously_created)
- {
- if (decls || tags || subblocks)
- {
- if (BLOCK_VARS (block))
- warning ("internal compiler error: debugging info corrupted");
-
- BLOCK_VARS (block) = decls;
-
- /* We can have previous subblocks and new subblocks when
- doing fixup_gotos with complex cleanups. We chain the new
- subblocks onto the end of any pre-existing subblocks. */
- BLOCK_SUBBLOCKS (block) = chainon (BLOCK_SUBBLOCKS (block),
- subblocks);
- }
- }
- else
- {
- BLOCK_VARS (block) = decls;
- BLOCK_SUBBLOCKS (block) = subblocks;
- }
+ BLOCK_VARS (block) = decls;
+ BLOCK_SUBBLOCKS (block) = subblocks;
}
/* In each subblock, record that this is its superior. */
@@ -1582,11 +1546,9 @@ poplevel (keep, reverse, functionbody)
if (functionbody)
DECL_INITIAL (current_function_decl) = block;
else if (block)
- {
- if (!block_previously_created)
- current_binding_level->blocks
- = chainon (current_binding_level->blocks, block);
- }
+ current_binding_level->blocks
+ = chainon (current_binding_level->blocks, block);
+
/* If we did not make a block for the level just exited,
any blocks made for inner levels
(since they cannot be recorded as subblocks in that level)
@@ -1663,9 +1625,11 @@ insert_block (block)
void
set_block (block)
- register tree block;
+ tree block ATTRIBUTE_UNUSED;
{
- current_binding_level->this_block = block;
+ /* The RTL expansion machinery requires us to provide this callback,
+ but it is not applicable in function-at-a-time mode. */
+ my_friendly_assert (cfun && !doing_semantic_analysis_p (), 20000911);
}
/* Do a pushlevel for class declarations. */
@@ -2019,7 +1983,6 @@ mark_binding_level (arg)
ggc_mark_tree (lvl->type_shadowed);
ggc_mark_tree (lvl->shadowed_labels);
ggc_mark_tree (lvl->blocks);
- ggc_mark_tree (lvl->this_block);
ggc_mark_tree (lvl->this_class);
ggc_mark_tree (lvl->incomplete);
ggc_mark_tree (lvl->dead_vars_from_for);
@@ -2477,7 +2440,6 @@ mark_saved_scope (arg)
if (t->lang_base)
ggc_mark_tree_varray (t->lang_base);
ggc_mark_tree (t->lang_name);
- ggc_mark_tree (t->x_function_parms);
ggc_mark_tree (t->template_parms);
ggc_mark_tree (t->x_previous_class_type);
ggc_mark_tree (t->x_previous_class_values);
@@ -5176,17 +5138,52 @@ struct cp_switch
{
struct binding_level *level;
struct cp_switch *next;
+ /* The SWITCH_STMT being built. */
+ tree switch_stmt;
+ /* A splay-tree mapping the low element of a case range to the high
+ element, or NULL_TREE if there is no high element. Used to
+ determine whether or not a new case label duplicates an old case
+ label. We need a tree, rather than simply a hash table, because
+ of the GNU case range extension. */
+ splay_tree cases;
};
+/* A stack of the currently active switch statements. The innermost
+ switch statement is on the top of the stack. There is no need to
+ mark the stack for garbage collection because it is only active
+ during the processing of the body of a function, and we never
+ collect at that point. */
+
static struct cp_switch *switch_stack;
+static int
+case_compare (k1, k2)
+ splay_tree_key k1;
+ splay_tree_key k2;
+{
+ /* Consider a NULL key (such as arises with a `default' label) to be
+ smaller than anything else. */
+ if (!k1)
+ return k2 ? -1 : 0;
+ else if (!k2)
+ return k1 ? 1 : 0;
+
+ return tree_int_cst_compare ((tree) k1, (tree) k2);
+}
+
+/* Called right after a switch-statement condition is parsed.
+ SWITCH_STMT is the switch statement being parsed. */
+
void
-push_switch ()
+push_switch (switch_stmt)
+ tree switch_stmt;
{
struct cp_switch *p
= (struct cp_switch *) xmalloc (sizeof (struct cp_switch));
p->level = current_binding_level;
p->next = switch_stack;
+ p->switch_stmt = switch_stmt;
+ p->cases = splay_tree_new (case_compare, NULL, NULL);
switch_stack = p;
}
@@ -5196,6 +5193,7 @@ pop_switch ()
struct cp_switch *cs;
cs = switch_stack;
+ splay_tree_delete (cs->cases);
switch_stack = switch_stack->next;
free (cs);
}
@@ -5204,14 +5202,151 @@ pop_switch ()
is a bad place for one. */
void
-define_case_label ()
+finish_case_label (low_value, high_value)
+ tree low_value;
+ tree high_value;
{
- tree cleanup = last_cleanup_this_contour ();
+ tree label;
+ tree cleanup;
+ tree type;
+ tree cond;
+ tree case_label;
+ splay_tree_node node;
if (! switch_stack)
- /* Don't crash; we'll complain in do_case. */
+ {
+ if (high_value)
+ error ("case label not within a switch statement");
+ else if (low_value)
+ cp_error ("case label `%E' not within a switch statement",
+ low_value);
+ else
+ error ("`default' label not within a switch statement");
+ return;
+ }
+
+ label = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
+ DECL_CONTEXT (label) = current_function_decl;
+
+ if (processing_template_decl)
+ {
+ /* For templates, just add the case label; we'll do semantic
+ analysis at instantiation-time. */
+ add_stmt (build_case_label (low_value, high_value, label));
+ return;
+ }
+
+ /* Find the condition on which this switch statement depends. */
+ cond = SWITCH_COND (switch_stack->switch_stmt);
+ if (cond && TREE_CODE (cond) == TREE_LIST)
+ cond = TREE_VALUE (cond);
+ /* If there was an error processing the switch condition, bail now
+ before we get more confused. */
+ if (!cond || cond == error_mark_node)
+ return;
+ type = TREE_TYPE (cond);
+
+ if ((low_value && TREE_TYPE (low_value)
+ && POINTER_TYPE_P (TREE_TYPE (low_value)))
+ || (high_value && TREE_TYPE (high_value)
+ && POINTER_TYPE_P (TREE_TYPE (high_value))))
+ error ("pointers are not permitted as case values");
+
+ /* Case ranges are a GNU extension. */
+ if (high_value && pedantic)
+ pedwarn ("ISO C++ forbids range expressions in switch statement");
+
+ if (low_value)
+ {
+ low_value = check_case_value (low_value);
+ low_value = convert_and_check (type, low_value);
+ }
+ if (high_value)
+ {
+ high_value = check_case_value (high_value);
+ high_value = convert_and_check (type, high_value);
+ }
+
+ /* If an error has occurred, bail out now. */
+ if (low_value == error_mark_node || high_value == error_mark_node)
return;
+ /* If the LOW_VALUE and HIGH_VALUE are the same, then this isn't
+ really a case range, even though it was written that way. Remove
+ the HIGH_VALUE to simplify later processing. */
+ if (tree_int_cst_equal (low_value, high_value))
+ high_value = NULL_TREE;
+ if (low_value && high_value
+ && !tree_int_cst_lt (low_value, high_value))
+ warning ("empty range specified");
+
+ /* Look up the LOW_VALUE in the table of case labels we already
+ have. */
+ node = splay_tree_lookup (switch_stack->cases, (splay_tree_key) low_value);
+ /* If there was not an exact match, check for overlapping ranges.
+ There's no need to do this if there's no LOW_VALUE or HIGH_VALUE;
+ that's a `default' label and the only overlap is an exact match. */
+ if (!node && (low_value || high_value))
+ {
+ splay_tree_node low_bound;
+ splay_tree_node high_bound;
+
+ /* Even though there wasn't an exact match, there might be an
+ overlap between this case range and another case range.
+ Since we've (inductively) not allowed any overlapping case
+ ranges, we simply need to find the greatest low case label
+ that is smaller that LOW_VALUE, and the smallest low case
+ label that is greater than LOW_VALUE. If there is an overlap
+ it will occur in one of these two ranges. */
+ low_bound = splay_tree_predecessor (switch_stack->cases,
+ (splay_tree_key) low_value);
+ high_bound = splay_tree_successor (switch_stack->cases,
+ (splay_tree_key) low_value);
+
+ /* Check to see if the LOW_BOUND overlaps. It is smaller than
+ the LOW_VALUE, so there is no need to check unless the
+ LOW_BOUND is in fact itself a case range. */
+ if (low_bound
+ && CASE_HIGH ((tree) low_bound->value)
+ && tree_int_cst_compare (CASE_HIGH ((tree) low_bound->value),
+ low_value) >= 0)
+ node = low_bound;
+ /* Check to see if the HIGH_BOUND overlaps. The low end of that
+ range is bigger than the low end of the current range, so we
+ are only interested if the current range is a real range, and
+ not an ordinary case label. */
+ else if (high_bound
+ && high_value
+ && (tree_int_cst_compare ((tree) high_bound->key,
+ high_value)
+ <= 0))
+ node = high_bound;
+ }
+ /* If there was an overlap, issue an error. */
+ if (node)
+ {
+ tree duplicate = CASE_LABEL_DECL ((tree) node->value);
+
+ if (high_value)
+ {
+ error ("duplicate (or overlapping) case value");
+ cp_error_at ("this is the first entry overlapping that value",
+ duplicate);
+ }
+ else if (low_value)
+ {
+ cp_error ("duplicate case value `%E'", low_value) ;
+ cp_error_at ("previously used here", duplicate);
+ }
+ else
+ {
+ error ("multiple default labels in one switch");
+ cp_error_at ("this is the first default label", duplicate);
+ }
+ return;
+ }
+
+ cleanup = last_cleanup_this_contour ();
if (cleanup)
{
static int explained = 0;
@@ -5228,9 +5363,18 @@ define_case_label ()
/* After labels, make any new cleanups go into their
own new (temporary) binding contour. */
-
current_binding_level->more_cleanups_ok = 0;
current_function_return_value = NULL_TREE;
+
+ /* Add a representation for the case label to the statement
+ tree. */
+ case_label = build_case_label (low_value, high_value, label);
+ add_stmt (case_label);
+
+ /* Register this case label in the splay tree. */
+ splay_tree_insert (switch_stack->cases,
+ (splay_tree_key) low_value,
+ (splay_tree_value) case_label);
}
/* Return the list of declarations of the current level.
@@ -6695,7 +6839,6 @@ init_decl_processing ()
ggc_add_tree_root (&last_function_parm_tags, 1);
ggc_add_tree_root (&current_function_return_value, 1);
- ggc_add_tree_root (&current_function_parms, 1);
ggc_add_tree_root (&current_function_parm_tags, 1);
ggc_add_tree_root (&last_function_parms, 1);
ggc_add_tree_root (&error_mark_list, 1);
@@ -7511,12 +7654,9 @@ maybe_deduce_size_from_array_init (decl, init)
&& TYPE_DOMAIN (type) == NULL_TREE
&& TREE_CODE (decl) != TYPE_DECL)
{
- int do_default
- = (TREE_STATIC (decl)
- /* Even if pedantic, an external linkage array
- may have incomplete type at first. */
- ? pedantic && ! DECL_EXTERNAL (decl)
- : !DECL_EXTERNAL (decl));
+ /* do_default is really a C-ism to deal with tentative definitions.
+ But let's leave it here to ease the eventual merge. */
+ int do_default = !DECL_EXTERNAL (decl);
tree initializer = init ? init : DECL_INITIAL (decl);
int failure = complete_array_type (type, initializer, do_default);
@@ -11274,12 +11414,23 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
cp_error ("`inline' specified for friend class declaration");
inlinep = 0;
}
- if (!current_aggr && TREE_CODE (type) != TYPENAME_TYPE)
+
+ /* Until core issue 180 is resolved, allow 'friend typename A::B'.
+ But don't allow implicit typenames. */
+ if (!current_aggr && (TREE_CODE (type) != TYPENAME_TYPE
+ || IMPLICIT_TYPENAME_P (type)))
{
if (TREE_CODE (type) == TEMPLATE_TYPE_PARM)
- cp_error ("template parameters cannot be friends");
+ cp_pedwarn ("template parameters cannot be friends");
+ else if (TREE_CODE (type) == TYPENAME_TYPE)
+ cp_pedwarn ("\
+friend declaration requires class-key, i.e. `friend class %T::%T'",
+ constructor_name (current_class_type),
+ TYPE_IDENTIFIER (type));
else
- cp_error ("friend declaration requires `%#T'", type);
+ cp_pedwarn ("\
+friend declaration requires class-key, i.e. `friend %#T'",
+ type);
}
/* Only try to do this stuff if we didn't already give up. */
@@ -12789,6 +12940,22 @@ xref_tag (code_type_node, name, globalize)
else
t = IDENTIFIER_TYPE_VALUE (name);
+ /* Warn about 'friend struct Inherited;' doing the wrong thing. */
+ if (t && globalize && TREE_CODE (t) == TYPENAME_TYPE)
+ {
+ static int explained;
+
+ cp_warning ("`%s %T' declares a new type at namespace scope;\n\
+to refer to the inherited type, say `%s %T::%T'%s",
+ tag_name (tag_code), name, tag_name (tag_code),
+ constructor_name (current_class_type), TYPE_IDENTIFIER (t),
+ (!explained ? "\n\
+(names from dependent base classes are not visible to unqualified name lookup)"
+ : ""));
+
+ explained = 1;
+ }
+
if (t && TREE_CODE (t) != code && TREE_CODE (t) != TEMPLATE_TYPE_PARM
&& TREE_CODE (t) != BOUND_TEMPLATE_TEMPLATE_PARM)
t = NULL_TREE;
@@ -13456,8 +13623,9 @@ build_enumerator (name, value, enumtype)
/* We're defining DECL. Make sure that it's type is OK. */
static void
-check_function_type (decl)
+check_function_type (decl, current_function_parms)
tree decl;
+ tree current_function_parms;
{
tree fntype = TREE_TYPE (decl);
tree return_type = complete_type (TREE_TYPE (fntype));
@@ -13499,9 +13667,7 @@ check_function_type (decl)
FLAGS is a bitwise or of SF_PRE_PARSED (indicating that the
DECLARATOR is really the DECL for the function we are about to
process and that DECLSPECS should be ignored), SF_INCLASS_INLINE
- indicating that the function is an inline defined in-class, and
- SF_EXPAND indicating that we should generate RTL for this
- function.
+ indicating that the function is an inline defined in-class.
This function creates a binding context for the function body
as well as setting up the FUNCTION_DECL in current_function_decl.
@@ -13528,6 +13694,7 @@ start_function (declspecs, declarator, attrs, flags)
extern int used_extern_spec;
int doing_friend = 0;
struct binding_level *bl;
+ tree current_function_parms;
/* Sanity check. */
my_friendly_assert (TREE_CODE (TREE_VALUE (void_list_node)) == VOID_TYPE, 160);
@@ -13639,7 +13806,7 @@ start_function (declspecs, declarator, attrs, flags)
if (flags & SF_INCLASS_INLINE)
maybe_begin_member_template_processing (decl1);
- /* Effective C++ rule 15. See also c_expand_return. */
+ /* Effective C++ rule 15. */
if (warn_ecpp
&& DECL_OVERLOADED_OPERATOR_P (decl1) == NOP_EXPR
&& TREE_CODE (TREE_TYPE (fntype)) == VOID_TYPE)
@@ -13677,7 +13844,7 @@ start_function (declspecs, declarator, attrs, flags)
you declare a function, these types can be incomplete, but they
must be complete when you define the function. */
if (! processing_template_decl)
- check_function_type (decl1);
+ check_function_type (decl1, current_function_parms);
/* Build the return declaration for the function. */
restype = TREE_TYPE (fntype);
@@ -13702,7 +13869,6 @@ start_function (declspecs, declarator, attrs, flags)
bl = current_binding_level;
init_function_start (decl1, input_filename, lineno);
current_binding_level = bl;
- expanding_p = (flags & SF_EXPAND) != 0;
/* Even though we're inside a function body, we still don't want to
call expand_expr to calculate the size of a variable-sized array.
@@ -13711,9 +13877,8 @@ start_function (declspecs, declarator, attrs, flags)
immediate_size_expand = 0;
cfun->x_dont_save_pending_sizes_p = 1;
- /* If we're building a statement-tree, start the tree now. */
- if (processing_template_decl || !expanding_p)
- begin_stmt_tree (&DECL_SAVED_TREE (decl1));
+ /* Start the statement-tree, start the tree now. */
+ begin_stmt_tree (&DECL_SAVED_TREE (decl1));
/* Let the user know we're compiling this function. */
announce_function (decl1);
@@ -13742,29 +13907,11 @@ start_function (declspecs, declarator, attrs, flags)
current_function_decl = decl1;
cfun->decl = decl1;
- /* Initialize the per-function data. */
- if (!DECL_PENDING_INLINE_P (decl1) && DECL_SAVED_FUNCTION_DATA (decl1))
- {
- /* If we already parsed this function, and we're just expanding it
- now, restore saved state. */
- struct binding_level *bl = current_binding_level;
- *cp_function_chain = *DECL_SAVED_FUNCTION_DATA (decl1);
- current_binding_level = bl;
-
- /* This function is being processed in whole-function mode; we
- already did semantic analysis. */
- cfun->x_whole_function_mode_p = 1;
+ my_friendly_assert ((DECL_PENDING_INLINE_P (decl1)
+ || !DECL_SAVED_FUNCTION_DATA (decl1)),
+ 20000911);
- /* If we decided that we didn't want to inline this function,
- make sure the back-end knows that. */
- if (!current_function_cannot_inline)
- current_function_cannot_inline = cp_function_chain->cannot_inline;
-
- /* We don't need the saved data anymore. */
- free (DECL_SAVED_FUNCTION_DATA (decl1));
- DECL_SAVED_FUNCTION_DATA (decl1) = NULL;
- }
- else if (ctype && !doing_friend && !DECL_STATIC_FUNCTION_P (decl1))
+ if (ctype && !doing_friend && !DECL_STATIC_FUNCTION_P (decl1))
{
/* We know that this was set up by `grokclassfn'. We do not
wait until `store_parm_decls', since evil parse errors may
@@ -13852,18 +13999,12 @@ start_function (declspecs, declarator, attrs, flags)
DECL_INTERFACE_KNOWN (decl1) = 1;
}
- if (doing_semantic_analysis_p ())
- {
- pushlevel (0);
- current_binding_level->parm_flag = 1;
- }
+ pushlevel (0);
+ current_binding_level->parm_flag = 1;
if (attrs)
cplus_decl_attributes (decl1, NULL_TREE, attrs);
- if (!building_stmt_tree ())
- GNU_xref_function (decl1, current_function_parms);
-
/* We need to do this even if we aren't expanding yet so that
assemble_external works. */
make_function_rtl (decl1);
@@ -13903,25 +14044,20 @@ start_function (declspecs, declarator, attrs, flags)
DECL_CONTEXT (ctor_label) = current_function_decl;
}
+ store_parm_decls (current_function_parms);
+
return 1;
}
-/* Called after store_parm_decls for a function-try-block. */
-
-void
-expand_start_early_try_stmts ()
-{
- expand_start_try_stmts ();
-}
-
/* Store the parameter declarations into the current function declaration.
This is called after parsing the parameter declarations, before
digesting the body of the function.
Also install to binding contour return value identifier, if any. */
-void
-store_parm_decls ()
+static void
+store_parm_decls (current_function_parms)
+ tree current_function_parms;
{
register tree fndecl = current_function_decl;
register tree parm;
@@ -13936,10 +14072,6 @@ store_parm_decls ()
then CONST_DECLs for foo and bar are put here. */
tree nonparms = NULL_TREE;
- /* Create a binding level for the parms. */
- if (!building_stmt_tree ())
- expand_start_bindings (2);
-
if (current_function_parms)
{
/* This case is when the function was defined with an ANSI prototype.
@@ -13950,45 +14082,34 @@ store_parm_decls ()
tree specparms = current_function_parms;
tree next;
- if (doing_semantic_analysis_p ())
- {
- /* Must clear this because it might contain TYPE_DECLs declared
+ /* Must clear this because it might contain TYPE_DECLs declared
at class level. */
- storedecls (NULL_TREE);
+ storedecls (NULL_TREE);
- /* If we're doing semantic analysis, then we'll call pushdecl
+ /* If we're doing semantic analysis, then we'll call pushdecl
for each of these. We must do them in reverse order so that
they end in the correct forward order. */
- specparms = nreverse (specparms);
- }
+ specparms = nreverse (specparms);
for (parm = specparms; parm; parm = next)
{
next = TREE_CHAIN (parm);
if (TREE_CODE (parm) == PARM_DECL)
{
- tree type = TREE_TYPE (parm);
+ tree cleanup;
- if (doing_semantic_analysis_p ())
- {
- tree cleanup;
-
- if (DECL_NAME (parm) == NULL_TREE
- || TREE_CODE (parm) != VOID_TYPE)
- pushdecl (parm);
- else
- cp_error ("parameter `%D' declared void", parm);
+ if (DECL_NAME (parm) == NULL_TREE
+ || TREE_CODE (parm) != VOID_TYPE)
+ pushdecl (parm);
+ else
+ cp_error ("parameter `%D' declared void", parm);
- cleanup = (processing_template_decl
- ? NULL_TREE
- : maybe_build_cleanup (parm));
+ cleanup = (processing_template_decl
+ ? NULL_TREE
+ : maybe_build_cleanup (parm));
- if (cleanup)
- cleanups = tree_cons (parm, cleanup, cleanups);
- }
- else if (type != error_mark_node
- && TYPE_HAS_NONTRIVIAL_DESTRUCTOR (type))
- parms_have_cleanups = 1;
+ if (cleanup)
+ cleanups = tree_cons (parm, cleanup, cleanups);
}
else
{
@@ -13999,14 +14120,11 @@ store_parm_decls ()
}
}
- if (doing_semantic_analysis_p ())
- {
- /* Get the decls in their original chain order
- and record in the function. This is all and only the
- PARM_DECLs that were pushed into scope by the loop above. */
- DECL_ARGUMENTS (fndecl) = getdecls ();
- storetags (chainon (parmtags, gettags ()));
- }
+ /* Get the decls in their original chain order and record in the
+ function. This is all and only the PARM_DECLs that were
+ pushed into scope by the loop above. */
+ DECL_ARGUMENTS (fndecl) = getdecls ();
+ storetags (chainon (parmtags, gettags ()));
}
else
DECL_ARGUMENTS (fndecl) = NULL_TREE;
@@ -14015,20 +14133,7 @@ store_parm_decls ()
as the decl-chain of the current lexical scope.
Put the enumerators in as well, at the front so that
DECL_ARGUMENTS is not modified. */
- if (doing_semantic_analysis_p ())
- storedecls (chainon (nonparms, DECL_ARGUMENTS (fndecl)));
-
- /* Initialize the RTL code for the function. */
- DECL_SAVED_INSNS (fndecl) = 0;
- if (! building_stmt_tree ())
- expand_function_start (fndecl, parms_have_cleanups);
-
- current_function_parms_stored = 1;
-
- /* If this function is `main', emit a call to `__main'
- to run global initializers, etc. */
- if (DECL_MAIN_P (fndecl) && !building_stmt_tree ())
- expand_main_function ();
+ storedecls (chainon (nonparms, DECL_ARGUMENTS (fndecl)));
/* Now that we have initialized the parms, we can start their
cleanups. We cannot do this before, since expand_decl_cleanup
@@ -14041,19 +14146,13 @@ store_parm_decls ()
}
/* Create a binding contour which can be used to catch
- cleanup-generated temporaries. Also, if the return value needs or
- has initialization, deal with that now. */
+ cleanup-generated temporaries. */
if (parms_have_cleanups)
- {
- pushlevel (0);
- if (!building_stmt_tree ())
- expand_start_bindings (2);
- }
+ pushlevel (0);
/* Do the starting of the exception specifications, if we have any. */
if (flag_exceptions && !processing_template_decl
&& flag_enforce_eh_specs
- && building_stmt_tree ()
&& TYPE_RAISES_EXCEPTIONS (TREE_TYPE (current_function_decl)))
current_eh_spec_try_block = expand_start_eh_spec ();
}
@@ -14249,13 +14348,9 @@ finish_function (flags)
{
register tree fndecl = current_function_decl;
tree fntype, ctype = NULL_TREE;
- /* Label to use if this function is supposed to return a value. */
- tree no_return_label = NULL_TREE;
int call_poplevel = (flags & 1) != 0;
int inclass_inline = (flags & 2) != 0;
- int expand_p;
int nested;
- int current_line = lineno;
/* When we get some parse errors, we can end up without a
current_function_decl, so cope. */
@@ -14269,18 +14364,11 @@ finish_function (flags)
This caused &foo to be of type ptr-to-const-function
which then got a warning when stored in a ptr-to-function variable. */
- /* This happens on strange parse errors. */
- if (! current_function_parms_stored)
- {
- call_poplevel = 0;
- store_parm_decls ();
- }
+ my_friendly_assert (building_stmt_tree (), 20000911);
/* For a cloned function, we've already got all the code we need;
there's no need to add any extra bits. */
- if (building_stmt_tree () && DECL_CLONED_FUNCTION_P (fndecl))
- ;
- else if (building_stmt_tree ())
+ if (!DECL_CLONED_FUNCTION_P (fndecl))
{
if (DECL_CONSTRUCTOR_P (fndecl))
{
@@ -14308,132 +14396,16 @@ finish_function (flags)
(TREE_TYPE (current_function_decl)),
current_eh_spec_try_block);
}
- else
- {
-#if 0
- if (write_symbols != NO_DEBUG /*&& TREE_CODE (fntype) != METHOD_TYPE*/)
- {
- /* Keep this code around in case we later want to control debug info
- based on whether a type is "used". (jason 1999-11-11) */
-
- tree ttype = target_type (fntype);
- tree parmdecl;
-
- if (IS_AGGR_TYPE (ttype))
- /* Let debugger know it should output info for this type. */
- note_debug_info_needed (ttype);
-
- for (parmdecl = DECL_ARGUMENTS (fndecl); parmdecl; parmdecl = TREE_CHAIN (parmdecl))
- {
- ttype = target_type (TREE_TYPE (parmdecl));
- if (IS_AGGR_TYPE (ttype))
- /* Let debugger know it should output info for this type. */
- note_debug_info_needed (ttype);
- }
- }
-#endif
-
- /* Clean house because we will need to reorder insns here. */
- do_pending_stack_adjust ();
-
- if (dtor_label)
- ;
- else if (DECL_CONSTRUCTOR_P (fndecl))
- {
- if (call_poplevel)
- do_poplevel ();
- }
- else if (return_label != NULL_RTX
- && flag_this_is_variable <= 0
- && current_function_return_value == NULL_TREE
- && ! DECL_NAME (DECL_RESULT (current_function_decl)))
- no_return_label = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
-
- if (flag_exceptions)
- expand_exception_blocks ();
-
- /* If this function is supposed to return a value, ensure that
- we do not fall into the cleanups by mistake. The end of our
- function will look like this:
-
- user code (may have return stmt somewhere)
- goto no_return_label
- cleanup_label:
- cleanups
- goto return_label
- no_return_label:
- NOTE_INSN_FUNCTION_END
- return_label:
- things for return
-
- If the user omits a return stmt in the USER CODE section, we
- will have a control path which reaches NOTE_INSN_FUNCTION_END.
- Otherwise, we won't. */
- if (no_return_label)
- {
- DECL_CONTEXT (no_return_label) = fndecl;
- DECL_INITIAL (no_return_label) = error_mark_node;
- DECL_SOURCE_FILE (no_return_label) = input_filename;
- DECL_SOURCE_LINE (no_return_label) = current_line;
- expand_goto (no_return_label);
- }
-
- if (cleanup_label)
- {
- /* Remove the binding contour which is used
- to catch cleanup-generated temporaries. */
- expand_end_bindings (0, 0, 0);
- poplevel (0, 0, 0);
-
- /* Emit label at beginning of cleanup code for parameters. */
- emit_label (cleanup_label);
- }
-
- /* Get return value into register if that's where it's supposed
- to be. */
- if (original_result_rtx)
- fixup_result_decl (DECL_RESULT (fndecl), original_result_rtx);
-
- /* Finish building code that will trigger warnings if users forget
- to make their functions return values. */
- if (no_return_label || cleanup_label)
- emit_jump (return_label);
- if (no_return_label)
- {
- /* We don't need to call `expand_*_return' here because we
- don't need any cleanups here--this path of code is only
- for error checking purposes. */
- expand_label (no_return_label);
- }
-
- /* We hard-wired immediate_size_expand to zero in
- start_function. Expand_function_end will decrement this
- variable. So, we set the variable to one here, so that after
- the decrement it will remain zero. */
- immediate_size_expand = 1;
-
- /* Generate rtl for function exit. */
- expand_function_end (input_filename, current_line, 1);
- }
-
- /* We have to save this value here in case
- maybe_end_member_template_processing decides to pop all the
- template parameters. */
- expand_p = !building_stmt_tree ();
/* If we're saving up tree structure, tie off the function now. */
- if (!expand_p)
- finish_stmt_tree (&DECL_SAVED_TREE (fndecl));
+ finish_stmt_tree (&DECL_SAVED_TREE (fndecl));
/* This must come after expand_function_end because cleanups might
have declarations (from inline functions) that need to go into
this function's blocks. */
- if (doing_semantic_analysis_p ())
- {
- if (current_binding_level->parm_flag != 1)
- my_friendly_abort (122);
- poplevel (1, 0, 1);
- }
+ if (current_binding_level->parm_flag != 1)
+ my_friendly_abort (122);
+ poplevel (1, 0, 1);
/* Remember that we were in class scope. */
if (current_class_name)
@@ -14447,7 +14419,7 @@ finish_function (flags)
BLOCK_SUPERCONTEXT (DECL_INITIAL (fndecl)) = fndecl;
/* Save away current state, if appropriate. */
- if (!expanding_p && !processing_template_decl)
+ if (!processing_template_decl)
save_function_data (fndecl);
/* If this function calls `setjmp' it cannot be inlined. When
@@ -14459,96 +14431,15 @@ finish_function (flags)
this function to modify local variables in `c', but their
addresses may have been stored somewhere accessible to this
function.) */
- if (!expanding_p && !processing_template_decl && calls_setjmp_p (fndecl))
+ if (!processing_template_decl && calls_setjmp_p (fndecl))
DECL_UNINLINABLE (fndecl) = 1;
- if (expand_p)
- {
- int returns_null;
- int returns_value;
-
- /* So we can tell if jump_optimize sets it to 1. */
- can_reach_end = 0;
-
- /* Before we call rest_of_compilation (which will pop the
- CURRENT_FUNCTION), we must save these values. */
- returns_null = current_function_returns_null;
- returns_value = current_function_returns_value;
-
- /* If this is a nested function (like a template instantiation
- that we're compiling in the midst of compiling something
- else), push a new GC context. That will keep local variables
- on the stack from being collected while we're doing the
- compilation of this function. */
- if (function_depth > 1)
- ggc_push_context ();
-
- /* Run the optimizers and output the assembler code for this
- function. */
- rest_of_compilation (fndecl);
-
- /* Undo the call to ggc_push_context above. */
- if (function_depth > 1)
- ggc_pop_context ();
-
- if (DECL_SAVED_INSNS (fndecl) && ! TREE_ASM_WRITTEN (fndecl))
- {
- /* Set DECL_EXTERNAL so that assemble_external will be called as
- necessary. We'll clear it again in finish_file. */
- if (! DECL_EXTERNAL (fndecl))
- DECL_NOT_REALLY_EXTERN (fndecl) = 1;
- DECL_EXTERNAL (fndecl) = 1;
- defer_fn (fndecl);
- }
-
-#if 0
- /* Keep this code around in case we later want to control debug info
- based on whether a type is "used". (jason 1999-11-11) */
-
- if (ctype && TREE_ASM_WRITTEN (fndecl))
- note_debug_info_needed (ctype);
-#endif
-
- /* If this function is marked with the constructor attribute,
- add it to the list of functions to be called along with
- constructors from static duration objects. */
- if (DECL_STATIC_CONSTRUCTOR (fndecl))
- static_ctors = tree_cons (NULL_TREE, fndecl, static_ctors);
-
- /* If this function is marked with the destructor attribute,
- add it to the list of functions to be called along with
- destructors from static duration objects. */
- if (DECL_STATIC_DESTRUCTOR (fndecl))
- static_dtors = tree_cons (NULL_TREE, fndecl, static_dtors);
-
- if (DECL_NAME (DECL_RESULT (fndecl)))
- returns_value |= can_reach_end;
- else
- returns_null |= can_reach_end;
-
- if (TREE_THIS_VOLATILE (fndecl) && returns_null)
- warning ("`noreturn' function does return");
- else if (returns_null
- && TREE_CODE (TREE_TYPE (fntype)) != VOID_TYPE)
- {
- /* Always complain if there's just no return statement. */
- if (!returns_value)
- warning ("no return statement in function returning non-void");
- else if (warn_return_type || pedantic)
- /* If this function returns non-void and control can drop through,
- complain. */
- warning ("control reaches end of non-void function");
- }
- }
- else
- {
- /* Clear out memory we no longer need. */
- free_after_parsing (cfun);
- /* Since we never call rest_of_compilation, we never clear
- CFUN. Do so explicitly. */
- free_after_compilation (cfun);
- cfun = NULL;
- }
+ /* Clear out memory we no longer need. */
+ free_after_parsing (cfun);
+ /* Since we never call rest_of_compilation, we never clear
+ CFUN. Do so explicitly. */
+ free_after_compilation (cfun);
+ cfun = NULL;
/* If this is a in-class inline definition, we may have to pop the
bindings for the template parameters that we added in
@@ -14563,19 +14454,6 @@ finish_function (flags)
--function_depth;
- if (!DECL_SAVED_INSNS (fndecl) && !DECL_SAVED_FUNCTION_DATA (fndecl)
- && !(flag_inline_trees && DECL_INLINE (fndecl)))
- {
- tree t;
-
- /* Stop pointing to the local nodes about to be freed. */
- /* But DECL_INITIAL must remain nonzero so we know this
- was an actual function definition. */
- DECL_INITIAL (fndecl) = error_mark_node;
- for (t = DECL_ARGUMENTS (fndecl); t; t = TREE_CHAIN (t))
- DECL_RTL (t) = DECL_INCOMING_RTL (t) = NULL_RTX;
- }
-
/* Clean up. */
if (! nested)
{
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index 7bbd998df45..a2cdb1dd7c9 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -128,7 +128,8 @@ int at_eof;
/* Functions called along with real static constructors and destructors. */
-tree static_ctors, static_dtors;
+tree static_ctors;
+tree static_dtors;
/* The :: namespace. */
@@ -4329,35 +4330,6 @@ finish_decl_parsing (decl)
}
}
-tree
-check_cp_case_value (value)
- tree value;
-{
- if (value == NULL_TREE)
- return value;
-
- /* Strip NON_LVALUE_EXPRs since we aren't using as an lvalue. */
- STRIP_TYPE_NOPS (value);
- value = decl_constant_value (value);
- STRIP_TYPE_NOPS (value);
- value = fold (value);
-
- if (TREE_CODE (value) != INTEGER_CST
- && value != error_mark_node)
- {
- cp_error ("case label `%E' does not reduce to an integer constant",
- value);
- value = error_mark_node;
- }
- else
- /* Promote char or short to int. */
- value = default_conversion (value);
-
- constant_expression_warning (value);
-
- return value;
-}
-
/* Return 1 if root encloses child. */
static int
@@ -5465,7 +5437,7 @@ tree
handle_class_head (aggr, scope, id)
tree aggr, scope, id;
{
- tree decl;
+ tree decl = NULL_TREE;
if (TREE_CODE (id) == TYPE_DECL)
/* We must bash typedefs back to the main decl of the type. Otherwise
@@ -5475,7 +5447,7 @@ handle_class_head (aggr, scope, id)
decl = DECL_TEMPLATE_RESULT (id);
else
{
- tree current = current_scope();
+ tree current = current_scope ();
if (current == NULL_TREE)
current = current_namespace;
@@ -5483,7 +5455,17 @@ handle_class_head (aggr, scope, id)
scope = global_namespace;
if (scope == NULL_TREE)
scope = global_namespace;
- if (scope == current)
+
+ if (TYPE_P (scope))
+ {
+ /* According to the suggested resolution of core issue 180,
+ 'typename' is assumed after a class-key. */
+ decl = make_typename_type (scope, id, 1);
+ if (decl == error_mark_node)
+ return error_mark_node;
+ decl = TYPE_MAIN_DECL (decl);
+ }
+ else if (scope == current)
{
/* We've been given AGGR SCOPE::ID, when we're already inside SCOPE.
Be nice about it. */
@@ -5497,7 +5479,8 @@ handle_class_head (aggr, scope, id)
cp_error ("no file-scope type named `%D'", id);
/* Inject it at the current scope. */
- decl = TYPE_MAIN_DECL (xref_tag (aggr, id, 1));
+ if (!decl)
+ decl = TYPE_MAIN_DECL (xref_tag (aggr, id, 1));
}
/* Enter the SCOPE. If this turns out not to be a definition, the
diff --git a/gcc/cp/error.c b/gcc/cp/error.c
index b4268ddc46d..8856cde1e83 100644
--- a/gcc/cp/error.c
+++ b/gcc/cp/error.c
@@ -30,6 +30,39 @@ Boston, MA 02111-1307, USA. */
enum pad { none, before, after };
+/* These constants can used as bit flags in the process of tree formatting.
+
+ TFF_PLAIN_IDENTIFER: unqualified part of a name.
+ TFF_NAMESPACE_SCOPE: the complete qualified-id form of a name.
+ TFF_CLASS_SCOPE: if possible, include the class-name part of a
+ qualified-id. This flag may be implied in some circumstances by
+ TFF_NAMESPACE_SCOPE.
+ TFF_SCOPE: the combinaison of the two above.
+ TFF_CHASE_TYPDEF: print the original type-id instead of the typedef-name.
+ TFF_DECL_SPECIFIERS: print decl-specifiers.
+ TFF_CLASS_KEY_OR_ENUM: precede a class-type name (resp. enum name) with
+ a class-key (resp. `enum').
+ TFF_RETURN_TYPE: include function return type.
+ TFF_FUNCTION_DEFAULT_ARGUMENTS: include function default parameter values.
+ TFF_EXCEPTION_SPECIFICATION: show function exception specification.
+ TFF_TEMPLATE_HEADER: show the template<...> hearder in a
+ template-declaration.
+ TFF_TEMPLATE_DEFAULT_ARGUMENTS: show template paramter default values. */
+
+#define TFF_PLAIN_IDENTIFIER (0)
+#define TFF_NAMESPACE_SCOPE (1)
+#define TFF_CLASS_SCOPE (1 << 1)
+#define TFF_CHASE_NAMESPACE_ALIAS (1 << 2)
+#define TFF_CHASE_TYPEDEF (1 << 3)
+#define TFF_DECL_SPECIFIERS (1 << 4)
+#define TFF_CLASS_KEY_OR_ENUM (1 << 5)
+#define TFF_RETURN_TYPE (1 << 6)
+#define TFF_FUNCTION_DEFAULT_ARGUMENTS (1 << 7)
+#define TFF_EXCEPTION_SPECIFICATION (1 << 8)
+#define TFF_TEMPLATE_HEADER (1 << 9)
+#define TFF_TEMPLATE_DEFAULT_ARGUMENTS (1 << 10)
+#define TFF_SCOPE (TFF_NAMESPACE_SCOPE | TFF_CLASS_SCOPE)
+
/* This data structure bundles altogether, all the information necessary
for pretty-printing a C++ source-level entity represented by a tree. */
typedef struct
@@ -43,6 +76,21 @@ typedef struct
#define tree_formatting_flags(TFI) (TFI)->flags
#define put_whitespace(TFI) (TFI)->pad
+#define sorry_for_unsupported_tree(T) \
+ sorry ("`%s' not supported by %s", tree_code_name[(int) TREE_CODE (T)], \
+ __FUNCTION__)
+
+#define print_scope_operator(BUFFER) output_add_string (BUFFER, "::")
+#define print_left_paren(BUFFER) output_add_character (BUFFER, '(')
+#define print_right_paren(BUFFER) output_add_character (BUFFER, ')')
+#define print_left_bracket(BUFFER) output_add_character (BUFFER, '[')
+#define print_right_bracket(BUFFER) output_add_character (BUFFER, ']')
+#define print_whitespace(BUFFER, TFI) \
+ do { \
+ output_add_space (BUFFER); \
+ put_whitespace (TFI) = none; \
+ } while (0)
+
typedef const char *cp_printer ();
#define obstack_chunk_alloc xmalloc
@@ -106,7 +154,7 @@ static enum pad dump_qualifiers PARAMS ((tree, enum pad));
static void dump_char PARAMS ((int));
static void dump_parameters PARAMS ((tree, enum tree_string_flags));
static void dump_exception_spec PARAMS ((tree, enum tree_string_flags));
-static const char *aggr_variety PARAMS ((tree));
+static const char *class_key_or_enum PARAMS ((tree));
static tree ident_fndecl PARAMS ((tree));
static void dump_template_argument PARAMS ((tree, enum tree_string_flags));
static void dump_template_argument_list PARAMS ((tree, enum tree_string_flags));
@@ -134,9 +182,21 @@ static void print_declaration PARAMS ((output_buffer *, tfi_t));
static void print_expression PARAMS ((output_buffer *, tfi_t));
static void print_function_declaration PARAMS ((output_buffer *, tfi_t));
static void print_function_parameter PARAMS ((output_buffer *, int));
-static void print_type PARAMS ((output_buffer *, tfi_t));
-static void print_cv_qualifier PARAMS ((output_buffer *, tfi_t));
-
+static void print_type_id PARAMS ((output_buffer *, tfi_t));
+static void print_cv_qualifier_seq PARAMS ((output_buffer *, tfi_t));
+static void print_type_specifier_seq PARAMS ((output_buffer *, tfi_t));
+static void print_simple_type_specifier PARAMS ((output_buffer *, tfi_t));
+static void print_elaborated_type_specifier PARAMS ((output_buffer *, tfi_t));
+static void print_rest_of_abstract_declarator PARAMS ((output_buffer *,
+ tfi_t));
+static void print_parameter_declaration_clause PARAMS ((output_buffer *,
+ tfi_t));
+static void print_exception_specification PARAMS ((output_buffer *, tfi_t));
+static void print_nested_name_specifier PARAMS ((output_buffer *, tfi_t));
+static void print_template_id PARAMS ((output_buffer *, tfi_t));
+static void print_template_argument_list_start PARAMS ((output_buffer *));
+static void print_template_argument_list_end PARAMS ((output_buffer *));
+static tree typedef_original_name PARAMS ((tree));
#define A args_to_string
#define C code_to_string
@@ -556,7 +616,7 @@ dump_typename (t, flags)
/* Return the name of the supplied aggregate, or enumeral type. */
static const char *
-aggr_variety (t)
+class_key_or_enum (t)
tree t;
{
if (TREE_CODE (t) == ENUMERAL_TYPE)
@@ -578,7 +638,7 @@ dump_aggr_type (t, flags)
enum tree_string_flags flags;
{
tree name;
- const char *variety = aggr_variety (t);
+ const char *variety = class_key_or_enum (t);
int typdef = 0;
int tmplate = 0;
@@ -2669,8 +2729,8 @@ cp_tree_printer (buffer)
{
int be_verbose = 0;
tree_formatting_info tfi;
-
- put_whitespace (&tfi) = none;
+
+ bzero (&tfi, sizeof (tree_formatting_info));
if (*output_buffer_text_cursor (buffer) == '+')
++output_buffer_text_cursor (buffer);
@@ -2685,41 +2745,59 @@ cp_tree_printer (buffer)
case 'A':
tree_being_formatted (&tfi) =
va_arg (output_buffer_format_args (buffer), tree);
+ if (be_verbose)
+ tree_formatting_flags (&tfi) = TFF_SCOPE
+ | TFF_FUNCTION_DEFAULT_ARGUMENTS;
print_function_argument_list (buffer, &tfi);
break;
case 'D':
tree_being_formatted (&tfi) =
va_arg (output_buffer_format_args (buffer), tree);
+ if (be_verbose)
+ tree_formatting_flags (&tfi) = TFF_SCOPE | TFF_DECL_SPECIFIERS
+ | TFF_CLASS_KEY_OR_ENUM | TFF_RETURN_TYPE
+ | TFF_FUNCTION_DEFAULT_ARGUMENTS | TFF_TEMPLATE_DEFAULT_ARGUMENTS
+ | TFF_EXCEPTION_SPECIFICATION | TFF_CHASE_NAMESPACE_ALIAS;
print_declaration (buffer, &tfi);
break;
case 'E':
tree_being_formatted (&tfi) =
va_arg (output_buffer_format_args (buffer), tree);
+ if (be_verbose)
+ tree_formatting_flags (&tfi) = TFF_SCOPE;
print_expression (buffer, &tfi);
break;
case 'F':
tree_being_formatted (&tfi) =
va_arg (output_buffer_format_args (buffer), tree);
+ if (be_verbose)
+ tree_formatting_flags (&tfi) = TFF_SCOPE | TFF_DECL_SPECIFIERS
+ | TFF_RETURN_TYPE | TFF_FUNCTION_DEFAULT_ARGUMENTS
+ | TFF_EXCEPTION_SPECIFICATION;
print_function_declaration (buffer, &tfi);
break;
case 'P':
print_function_parameter
(buffer, va_arg (output_buffer_format_args (buffer), int));
+ break;
case 'T':
tree_being_formatted (&tfi) =
va_arg (output_buffer_format_args (buffer), tree);
- print_type (buffer, &tfi);
+ if (be_verbose)
+ tree_formatting_flags (&tfi) = TFF_SCOPE | TFF_CLASS_KEY_OR_ENUM
+ | TFF_RETURN_TYPE | TFF_EXCEPTION_SPECIFICATION;
+ print_type_id (buffer, &tfi);
break;
case 'V':
tree_being_formatted (&tfi) =
va_arg (output_buffer_format_args (buffer), tree);
- print_cv_qualifier (buffer, &tfi);
+ print_cv_qualifier_seq (buffer, &tfi);
break;
default:
@@ -2765,14 +2843,6 @@ print_function_declaration (buffer, tfi)
{
}
-/* Print a type represented by tree_being_formattted (TFI) onto BUFFER. */
-static void
-print_type (buffer, tfi)
- output_buffer *buffer __attribute__ ((__unused__));
- tfi_t tfi __attribute__ ((__unused__));
-{
-}
-
/* Print the N'th function parameter onto BUFFER. A negative value of N
means the implicit "this" parameter of a member function. */
static void
@@ -2785,10 +2855,479 @@ print_function_parameter (buffer, n)
else
output_decimal (buffer, n + 1);
}
+
+/* Print a type represented by tree_being_formatted (TFI) onto BUFFER. */
+static void
+print_type_id (buffer, tfi)
+ output_buffer *buffer;
+ tfi_t tfi;
+{
+ tree t = tree_being_formatted (tfi);
+ int flags = tree_formatting_flags (tfi);
+ if (t == NULL_TREE)
+ return;
+
+ if (flags & TFF_CHASE_TYPEDEF)
+ tree_being_formatted (tfi) =
+ typedef_original_name (tree_being_formatted (tfi));
+
+ /* A type-id is of the form:
+ type-id:
+ type-specifier-seq abstract-declarator(opt) */
+ print_type_specifier_seq (buffer, tfi);
+
+ if (TYPE_PTRMEMFUNC_P (t))
+ goto ptr_mem_fun;
+
+ /* For types with abstract-declarator, print_type_specifier_seq prints
+ the start of the abstract-declarator. Fiinish the job. */
+ switch (TREE_CODE (t))
+ {
+ case ARRAY_TYPE:
+ case POINTER_TYPE:
+ case REFERENCE_TYPE:
+ case OFFSET_TYPE:
+ case METHOD_TYPE:
+ case FUNCTION_TYPE:
+ ptr_mem_fun:
+ print_rest_of_abstract_declarator (buffer, tfi);
+
+ default:
+ break;
+ }
+
+ tree_being_formatted (tfi) = t;
+}
+
+/* Print the type-specifier-seq part of a type-id. If appropriate, print
+ also the prefix of the abstract-declarator. */
+static void
+print_type_specifier_seq (buffer, tfi)
+ output_buffer *buffer;
+ tfi_t tfi;
+{
+ int flags = tree_formatting_flags (tfi);
+ tree t = tree_being_formatted (tfi);
+ enum tree_code code = TREE_CODE (t);
+
+ /* A type-speficier-seq is:
+ type-specifier type-specifier-seq(opt)
+ where
+ type-specifier:
+ simple-type-specifier
+ class-specifier
+ enum-specifier
+ elaborated-type-specifier
+ cv-qualifier
+
+ We do not, however, pretty-print class-specifier nor enum-specifier. */
+
+ switch (code)
+ {
+ case UNKNOWN_TYPE:
+ case IDENTIFIER_NODE:
+ case VOID_TYPE:
+ case INTEGER_TYPE:
+ case REAL_TYPE:
+ case COMPLEX_TYPE:
+ case ENUMERAL_TYPE:
+ case BOOLEAN_TYPE:
+ case UNION_TYPE:
+ case TYPE_DECL:
+ case TEMPLATE_DECL:
+ case TEMPLATE_TYPE_PARM:
+ case TYPEOF_TYPE:
+ case TEMPLATE_TEMPLATE_PARM:
+ case TYPENAME_TYPE:
+ class_type:
+ print_cv_qualifier_seq (buffer, tfi);
+ if ((flags & TFF_DECL_SPECIFIERS)
+ && (code == TYPENAME_TYPE || IS_AGGR_TYPE (t)))
+ print_elaborated_type_specifier (buffer, tfi);
+ else
+ print_simple_type_specifier (buffer, tfi);
+ break;
+
+ /* Because the abstract-declarator can modify the type-specifier-seq
+ in a highly non linear manner, we pretty-print its prefix here.
+ The suffix part is handled by print_rest_of_abstract_declarator. */
+
+ /* A RECORD_TYPE is also used to represent a pointer to member
+ function. */
+ case RECORD_TYPE:
+ if (TYPE_PTRMEMFUNC_P (t))
+ {
+ /* Print the return type. */
+ tree_being_formatted (tfi) =
+ TREE_TYPE (TYPE_PTRMEMFUNC_FN_TYPE (t));
+ print_type_id (buffer, tfi);
+ print_whitespace (buffer, tfi);
+
+ /* Then the beginning of the abstract-declarator part. */
+ tree_being_formatted (tfi) =
+ TYPE_METHOD_BASETYPE (TYPE_PTRMEMFUNC_FN_TYPE (t));
+ print_left_paren (buffer);
+ print_nested_name_specifier (buffer, tfi);
+ }
+ else
+ goto class_type;
+ break;
+
+ case POINTER_TYPE:
+ if (TYPE_PTRMEM_P (t))
+ goto ptr_data_member;
+ else
+ goto non_ptr_data_member;
+ break;
+
+ case ARRAY_TYPE:
+ case REFERENCE_TYPE:
+ case FUNCTION_TYPE:
+ case METHOD_TYPE:
+ non_ptr_data_member:
+ tree_being_formatted (tfi) = TREE_TYPE (t);
+ print_type_specifier_seq (buffer, tfi);
+ if (code == POINTER_TYPE || code == REFERENCE_TYPE)
+ {
+ if (TREE_CODE (TREE_TYPE (t)) == ARRAY_TYPE)
+ print_left_paren (buffer);
+ }
+ else if (code == FUNCTION_TYPE || code == METHOD_TYPE)
+ {
+ print_whitespace (buffer, tfi);
+ print_left_paren (buffer);
+ if (code == METHOD_TYPE)
+ {
+ tree_being_formatted (tfi) = TYPE_METHOD_BASETYPE (t);
+ print_nested_name_specifier (buffer, tfi);
+ tree_being_formatted (tfi) = t;
+ }
+ }
+ tree_being_formatted (tfi) = t;
+ break;
+
+ ptr_data_member:
+ case OFFSET_TYPE:
+ /* Firstly, the type of the member. */
+ tree_being_formatted (tfi) = TREE_TYPE (t);
+ print_type_id (buffer, tfi);
+ print_whitespace (buffer, tfi);
+
+ /* Then, the containing class. */
+ tree_being_formatted (tfi) = TYPE_OFFSET_BASETYPE (t);
+ print_nested_name_specifier (buffer, tfi);
+ tree_being_formatted (tfi) = t;
+ break;
+
+ default:
+ sorry_for_unsupported_tree (t);
+ /* fall throught */
+
+ case ERROR_MARK:
+ print_identifier (buffer, "{type-specifier-seq error}");
+ break;
+ }
+
+ tree_being_formatted (tfi) = t;
+}
+
+/* Print the simpe-type-specifier component of a type-specifier. */
+static void
+print_simple_type_specifier (buffer, tfi)
+ output_buffer *buffer;
+ tfi_t tfi;
+{
+ int flags = tree_formatting_flags (tfi);
+ tree t = tree_being_formatted (tfi);
+ enum tree_code code = TREE_CODE (t);
+
+ switch (code)
+ {
+ case UNKNOWN_TYPE:
+ print_identifier (buffer, "{unknown type}");
+ break;
+
+ case IDENTIFIER_NODE:
+ print_tree_identifier (buffer, t);
+ break;
+
+ case COMPLEX_TYPE:
+ print_identifier (buffer, "__complex__ ");
+ tree_being_formatted (tfi) = TREE_TYPE (t);
+ print_type_id (buffer, tfi);
+ break;
+
+ case TYPENAME_TYPE:
+ tree_being_formatted (tfi) = TYPE_CONTEXT (t);
+ print_nested_name_specifier (buffer, tfi);
+ tree_being_formatted (tfi) = TYPENAME_TYPE_FULLNAME (t);
+ tree_formatting_flags (tfi) |= ~TFF_CHASE_TYPEDEF;
+ print_type_id (buffer, tfi);
+ break;
+
+ case TYPEOF_TYPE:
+ print_identifier (buffer, "__typeof__");
+ tree_being_formatted (tfi) = TYPE_FIELDS (t);
+ print_left_paren (buffer);
+ print_expression (buffer, tfi);
+ print_right_paren (buffer);
+ break;
+
+ case INTEGER_TYPE:
+ if (TREE_UNSIGNED (t))
+ {
+ if (TYPE_MAIN_VARIANT (t) == integer_type_node)
+ /* We don't want pedantry like `unsigned int'. */;
+ else if (!TREE_UNSIGNED (TYPE_MAIN_VARIANT (t)))
+ {
+ print_identifier (buffer, "unsigned");
+ print_whitespace (buffer, tfi);
+ }
+ }
+ else if (TYPE_MAIN_VARIANT (t) == char_type_node)
+ {
+ print_identifier (buffer, "signed");
+ print_whitespace (buffer, tfi);
+ }
+ case REAL_TYPE:
+ case BOOLEAN_TYPE:
+ case VOID_TYPE:
+ {
+ tree s = (flags & TFF_CHASE_TYPEDEF) ? TYPE_MAIN_VARIANT (t) : t;
+
+ if (TYPE_NAME (s) && TYPE_IDENTIFIER (s))
+ print_tree_identifier (buffer, TYPE_IDENTIFIER (s));
+ else
+ /* Types like intQI_type_node and friends have no names.
+ These don't come up in user error messages, but it's nice
+ to be able to print them from the debugger. */
+ print_identifier (buffer, "{anonymous}");
+ }
+ break;
+
+ case TEMPLATE_TEMPLATE_PARM:
+ if (TYPE_IDENTIFIER (t))
+ print_tree_identifier (buffer, TYPE_IDENTIFIER (t));
+ else
+ print_identifier (buffer, "{anonymous template template parameter}");
+ break;
+
+ case TYPE_DECL:
+ if (flags & TFF_CHASE_TYPEDEF)
+ print_type_id (buffer, tfi);
+ else
+ print_tree_identifier (buffer, DECL_NAME (t));
+ break;
+
+ case BOUND_TEMPLATE_TEMPLATE_PARM:
+ case TEMPLATE_DECL:
+ print_template_id (buffer, tfi);
+ break;
+
+ case TEMPLATE_TYPE_PARM:
+ if (TYPE_IDENTIFIER (t))
+ print_tree_identifier (buffer, TYPE_IDENTIFIER (t));
+ else
+ print_identifier (buffer, "{anonymous template type parameter}");
+ break;
+
+ default:
+ break;
+ }
+
+ tree_being_formatted (tfi) = t;
+ tree_formatting_flags (tfi) = flags;
+}
+
+/* Print the elaborated-type-specifier form of a type-specifier. */
+static void
+print_elaborated_type_specifier (buffer, tfi)
+ output_buffer *buffer;
+ tfi_t tfi;
+{
+ int flags = tree_formatting_flags (tfi);
+ tree t = tree_being_formatted (tfi);
+
+ switch (TREE_CODE (t))
+ {
+ case TYPENAME_TYPE:
+ print_identifier (buffer, "typename");
+ print_whitespace (buffer, tfi);
+ tree_formatting_flags (tfi) |= ~TFF_DECL_SPECIFIERS;
+ print_simple_type_specifier (buffer, tfi);
+ break;
+
+ case UNION_TYPE:
+ case RECORD_TYPE:
+ {
+ tree name = NULL_TREE;
+
+ if (flags & TFF_CHASE_TYPEDEF)
+ tree_being_formatted (tfi) = typedef_original_name (t);
+
+ print_identifier
+ (buffer, class_key_or_enum (tree_being_formatted (tfi)));
+ print_whitespace (buffer, tfi);
+
+ name = TYPE_NAME (tree_being_formatted (tfi));
+ if (name)
+ {
+ if (flags & TFF_SCOPE)
+ {
+ tree_being_formatted (tfi) = CP_DECL_CONTEXT (name);
+ print_nested_name_specifier (buffer, tfi);
+ }
+ print_tree_identifier (buffer, DECL_NAME (name));
+ }
+ else
+ print_identifier (buffer, "{anonymous}");
+ }
+ break;
+
+ default:
+ sorry_for_unsupported_tree (t);
+ break;
+ }
+
+ tree_being_formatted (tfi) = t;
+ tree_formatting_flags (tfi) = flags;
+}
+
+/* Finish the job of printing the abstract-declarator part of a
+ type-id. */
+static void
+print_rest_of_abstract_declarator (buffer, tfi)
+ output_buffer *buffer;
+ tfi_t tfi;
+{
+ tree t = tree_being_formatted (tfi);
+ enum tree_code code = TREE_CODE (t);
+
+ /* An abstract-declarator has the form:
+
+ abstract-declarator:
+ ptr-operator abstract-declarator(opt)
+ direct-abstract-declarator
+
+ direct-abstract-declarator:
+ direct-abstract-declarator(opt)
+ ( parameter-declaration-clause ) cv-qualifier-seq(opt)
+ exception-specification(opt)
+ direct-abstract-declarator(opt) [ constant-expression(opt) ]
+ ( direct-abstract-declarator ) */
+
+ switch (code)
+ {
+ case ARRAY_TYPE:
+ print_left_bracket (buffer);
+ if (TYPE_DOMAIN (t))
+ {
+ tree s = TYPE_DOMAIN (t);
+
+ if (host_integerp (TYPE_MAX_VALUE (s), 0))
+ output_decimal (buffer, tree_low_cst (TYPE_MAX_VALUE (s), 0) + 1);
+ else if (TREE_CODE (TYPE_MAX_VALUE (s)) == MINUS_EXPR)
+ {
+ tree_being_formatted (tfi) =
+ TREE_OPERAND (TYPE_MAX_VALUE (s), 0);
+ print_expression (buffer, tfi);
+ tree_being_formatted (tfi) = t;
+ }
+ else
+ {
+ tree_being_formatted (tfi) = fold
+ (cp_build_binary_op (PLUS_EXPR, TYPE_MAX_VALUE (s),
+ integer_one_node));
+ print_expression (buffer, tfi);
+ tree_being_formatted (tfi) = t;
+ }
+ }
+ print_right_bracket (buffer);
+ put_whitespace (tfi) = none;
+ tree_being_formatted (tfi) = TREE_TYPE (t);
+ print_rest_of_abstract_declarator (buffer, tfi);
+ tree_being_formatted (tfi) = t;
+ break;
+
+ case POINTER_TYPE:
+ case REFERENCE_TYPE:
+ case OFFSET_TYPE:
+ if (code == POINTER_TYPE || code == REFERENCE_TYPE)
+ {
+ output_add_character (buffer, "&*"[code == POINTER_TYPE]);
+ if (TREE_CODE (TREE_TYPE (t)) == ARRAY_TYPE)
+ print_right_paren (buffer);
+ }
+ put_whitespace (tfi) = before;
+ print_cv_qualifier_seq (buffer, tfi);
+ tree_being_formatted (tfi) = TREE_TYPE (t);
+ print_rest_of_abstract_declarator (buffer, tfi);
+ tree_being_formatted (tfi) = t;
+ break;
+
+ case FUNCTION_TYPE:
+ case METHOD_TYPE:
+ print_right_paren (buffer);
+ print_whitespace (buffer, tfi);
+
+ /* Skip the `this' implicit parameter if present. */
+ tree_being_formatted (tfi) = TYPE_ARG_TYPES (t);
+ if (code == METHOD_TYPE)
+ tree_being_formatted (tfi) = TREE_CHAIN (tree_being_formatted (tfi));
+
+ /* Print the parameter-list. */
+ print_left_paren (buffer);
+ print_parameter_declaration_clause (buffer, tfi);
+ print_right_paren (buffer);
+
+ print_whitespace (buffer, tfi);
+
+ if (code == METHOD_TYPE)
+ {
+ tree_being_formatted (tfi) =
+ TREE_TYPE (TREE_VALUE (TYPE_ARG_TYPES (t)));
+ print_cv_qualifier_seq (buffer, tfi);
+ }
+
+ /* Finish the abstract-declarator. */
+ tree_being_formatted (tfi) = TREE_TYPE (t);
+ print_rest_of_abstract_declarator (buffer, tfi);
+
+ /* Print the exception-specification for documentaion purpose. */
+ tree_being_formatted (tfi) = TYPE_RAISES_EXCEPTIONS (t);
+ print_exception_specification (buffer, tfi);
+ tree_being_formatted (tfi) = t;
+ break;
+
+ /* These types don't have abstract-declarator. */
+ case UNKNOWN_TYPE:
+ case IDENTIFIER_NODE:
+ case VOID_TYPE:
+ case INTEGER_TYPE:
+ case REAL_TYPE:
+ case COMPLEX_TYPE:
+ case ENUMERAL_TYPE:
+ case BOOLEAN_TYPE:
+ case UNION_TYPE:
+ case TYPE_DECL:
+ case TEMPLATE_DECL:
+ case TEMPLATE_TYPE_PARM:
+ case TYPEOF_TYPE:
+ case TEMPLATE_TEMPLATE_PARM:
+ case TYPENAME_TYPE:
+ break;
+
+ default:
+ sorry_for_unsupported_tree (t);
+ /* fall throught. */
+ case ERROR_MARK:
+ break;
+ }
+}
/* Print the cv-quafilers of tree_being_formatted (TFI) onto BUFFER. */
static void
-print_cv_qualifier (buffer, tfi)
+print_cv_qualifier_seq (buffer, tfi)
output_buffer *buffer;
tree_formatting_info *tfi;
{
@@ -2818,3 +3357,94 @@ print_cv_qualifier (buffer, tfi)
}
}
}
+
+static void
+print_parameter_declaration_clause (buffer, tfi)
+ output_buffer *buffer __attribute__ ((__unused__));
+ tfi_t tfi __attribute__ ((__unused__));
+{
+}
+
+static void
+print_exception_specification (buffer, tfi)
+ output_buffer *buffer __attribute__ ((__unused__));
+ tfi_t tfi __attribute__ ((__unused__));
+{
+}
+
+static void
+print_nested_name_specifier (buffer, tfi)
+ output_buffer *buffer;
+ tfi_t tfi;
+{
+ int flags = tree_formatting_flags (tfi);
+ tree t = tree_being_formatted (tfi);
+ /* A nested-name-specifier is:
+ class-or-namespace-name :: nested-name-specifier(opt)
+ class-or-namespace-name :: template nested-name-specifier
+
+ The latter form being the correct syntax for a name designating
+ a template member, where the preceding class-or-namespace-name part
+ is name-dependent. For the time being, we do not do such a
+ sophisticated pretty-printing.
+
+ class-or-namespace-name:
+ class-name
+ namespace-name */
+
+ if (t == NULL_TREE || t == global_namespace)
+ return;
+
+ if (CLASS_TYPE_P (t) && !(flags & TFF_CLASS_SCOPE))
+ return;
+
+ if (TREE_CODE (t) == NAMESPACE_DECL && !(flags & TFF_NAMESPACE_SCOPE))
+ return;
+
+ tree_being_formatted (tfi) = DECL_CONTEXT (t);
+ print_nested_name_specifier (buffer, tfi);
+ print_scope_operator (buffer);
+ if (TREE_CODE (t) == NAMESPACE_DECL)
+ print_tree_identifier (buffer, DECL_NAME (t));
+ else if (CLASS_TYPE_P (t))
+ {
+ if (!DECL_USE_TEMPLATE (t))
+ print_tree_identifier (buffer, TYPE_IDENTIFIER (t));
+ else
+ {
+ tree_being_formatted (tfi) = t;
+ print_template_id (buffer, tfi);
+ }
+ }
+
+ tree_being_formatted (tfi) = t;
+}
+
+static void
+print_template_id (buffer, tfi)
+ output_buffer *buffer;
+ tfi_t tfi __attribute__ ((__unused__));
+{
+ print_template_argument_list_start (buffer);
+ /* ... */
+ print_template_argument_list_end (buffer);
+}
+
+static tree
+typedef_original_name (t)
+ tree t;
+{
+ return DECL_ORIGINAL_TYPE (t) ? DECL_ORIGINAL_TYPE (t) : TREE_TYPE (t);
+}
+
+static void
+print_template_argument_list_start (buffer)
+ output_buffer *buffer __attribute__ ((__unused__));
+{
+}
+
+static void
+print_template_argument_list_end (buffer)
+ output_buffer *buffer __attribute__ ((__unused__));
+{
+}
diff --git a/gcc/cp/expr.c b/gcc/cp/expr.c
index 42a53903ee3..39095ec17db 100644
--- a/gcc/cp/expr.c
+++ b/gcc/cp/expr.c
@@ -205,82 +205,3 @@ extract_init (decl, init)
return 0;
}
-void
-do_case (start, end)
- tree start, end;
-{
- tree value1 = NULL_TREE, value2 = NULL_TREE, label;
-
- if (start != NULL_TREE && TREE_TYPE (start) != NULL_TREE
- && POINTER_TYPE_P (TREE_TYPE (start)))
- error ("pointers are not permitted as case values");
-
- if (end && pedantic)
- pedwarn ("ISO C++ forbids range expressions in switch statement");
-
- if (start)
- value1 = check_cp_case_value (start);
- if (end)
- value2 = check_cp_case_value (end);
-
- label = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
-
- if (value1 != error_mark_node
- && value2 != error_mark_node)
- {
- tree duplicate;
- int success;
-
- if (end)
- success = pushcase_range (value1, value2, convert_and_check,
- label, &duplicate);
- else if (start)
- success = pushcase (value1, convert_and_check, label, &duplicate);
- else
- success = pushcase (NULL_TREE, 0, label, &duplicate);
-
- if (success == 1)
- {
- if (end)
- error ("case label not within a switch statement");
- else if (start)
- cp_error ("case label `%E' not within a switch statement", start);
- else
- error ("default label not within a switch statement");
- }
- else if (success == 2)
- {
- if (end)
- {
- error ("duplicate (or overlapping) case value");
- cp_error_at ("this is the first entry overlapping that value",
- duplicate);
- }
- else if (start)
- {
- cp_error ("duplicate case value `%E'", start);
- cp_error_at ("previously used here", duplicate);
- }
- else
- {
- error ("multiple default labels in one switch");
- cp_error_at ("this is the first default label", duplicate);
- }
- }
- else if (success == 3)
- warning ("case value out of range");
- else if (success == 4)
- warning ("empty range specified");
- else if (success == 5)
- {
- if (end)
- error ("case label within scope of cleanup or variable array");
- else if (! start)
- error ("`default' label within scope of cleanup or variable array");
- else
- cp_error ("case label `%E' within scope of cleanup or variable array", start);
- }
- }
-
- current_function_return_value = NULL_TREE;
-}
diff --git a/gcc/cp/init.c b/gcc/cp/init.c
index f39f37f4e9b..5a8696519f1 100644
--- a/gcc/cp/init.c
+++ b/gcc/cp/init.c
@@ -98,8 +98,10 @@ begin_init_stmts (stmt_expr_p, compound_stmt_p)
if (building_stmt_tree ())
*compound_stmt_p = begin_compound_stmt (/*has_no_scope=*/1);
- // else
- // *compound_stmt_p = genrtl_begin_compound_stmt (has_no_scope=1);
+ /*
+ else
+ *compound_stmt_p = genrtl_begin_compound_stmt (has_no_scope=1);
+ */
}
/* Finish out the statement-expression begun by the previous call to
diff --git a/gcc/cp/ir.texi b/gcc/cp/ir.texi
index e951b9ed4d5..14208186100 100644
--- a/gcc/cp/ir.texi
+++ b/gcc/cp/ir.texi
@@ -342,6 +342,7 @@ The elements are indexed from zero.
@findex TYPE_NAME
@findex TYPENAME_TYPE_FULLNAME
@findex TYPE_FIELDS
+@findex TYPE_PTROBV_P
All C++ types have corresponding tree nodes. However, you should not
assume that there is exactly one tree node corresponding to each C++
@@ -384,6 +385,11 @@ This macro holds if the type is @code{volatile}-qualified.
@item CP_TYPE_RESTRICT_P
This macro holds if the type is @code{restrict}-qualified.
+@item CP_TYPE_CONST_NON_VOLATILE_P
+This predicate holds for a type that is @code{const}-qualified, but
+@emph{not} @code{volatile}-qualified; other cv-qualifiers are ignored as
+well: only the @code{const}-ness is tested.
+
@item TYPE_MAIN_VARIANT
This macro returns the unqualified version of a type. It may be applied
to an unqualified type, but it is not always the identity function in
@@ -414,6 +420,36 @@ actual name of the type. The @code{TYPE_NAME} will be @code{NULL_TREE}
for a type that is not a builtin type, the result of a typedef, or a
named class type.
+@item CP_INTEGRAL_TYPE
+This predicate holds if the type is an integral type. Notice that in
+C++, enumerations are @emph{not} integral types.
+
+@item ARITHMETIC_TYPE_P
+This predicate holds if the type is an integral type (in the C++ sense)
+or a floating point type.
+
+@item CLASS_TYPE_P
+This predicate holds for a class-type.
+
+@item TYPE_BUILT_IN
+This predicate holds for a builtin type.
+
+@item TYPE_PTRMEM_P
+This predicate holds if the type is a pointer to data member.
+
+@item TYPE_PTR_P
+This predicate holds if the type is a pointer type, and the pointee is
+not a data member.
+
+@item TYPE_PTRFN_P
+This predicate holds for a pointer to function type.
+
+@item TYPE_PTROB_P
+This predicate holds for a pointer to object type. Note however that it
+does not hold for the generic pointer to object type @code{void *}. You
+may use @code{TYPE_PTROBV_P} to test for a pointer to object type as
+well as @code{void *}.
+
@item same_type_p
This predicate takes two types as input, and holds if they are the same
type. For example, if one type is a @code{typedef} for the other, or
@@ -697,7 +733,6 @@ This macro returns the enclosing namespace. The @code{DECL_CONTEXT} for
the @code{global_namespace} is @code{NULL_TREE}.
@item DECL_NAMESPACE_ALIAS
-
If this declaration is for a namespace alias, then
@code{DECL_NAMESPACE_ALIAS} is the namespace for which this one is an
alias.
@@ -707,6 +742,10 @@ an alias. Instead, follow @code{DECL_NAMESPACE_ALIAS} links until you
reach an ordinary, non-alias, namespace, and call
@code{cp_namespace_decls} there.
+@item DECL_NAMESPACE_STD_P
+This predicate holds if the namespace is the special @code{::std}
+namespace.
+
@item cp_namespace_decls
This function will return the declarations contained in the namespace,
including types, overloaded functions, other namespaces, and so forth.
@@ -815,6 +854,50 @@ virtually.
FIXME: Talk about @code{TYPE_NONCOPIED_PARTS}.
+The following macros can be used on a tree node representing a class-type.
+
+@ftable @code
+@item LOCAL_CLASS_P
+This predicate holds if the class is local class @emph{i.e.} declared
+inside a function body.
+
+@item TYPE_POLYMORPHIC_P
+This predicate holds if the class has at least one virtual function
+(declared or inherited).
+
+@item TYPE_HAS_DEFAULT_CONSTRUCTOR
+This predicate holds whenever its argument represents a class-type with
+default constructor.
+
+@item CLASSTYPE_HAS_MUTABLE
+@item TYPE_HAS_MUTABLE_P
+These predicates hold for a class-type having a mutable data member.
+
+@item CLASSTYPE_NON_POD_P
+This predicate holds only for class-types that are not PODs.
+
+@item TYPE_HAS_NEW_OPERATOR
+This predicate holds for a class-type that defines
+@code{operator new}.
+
+@item TYPE_HAS_ARRAY_NEW_OPERATOR
+This predicate holds for a class-type for which
+@code{operator new[]} is defined.
+
+@item TYPE_OVERLOADS_CALL_EXPR
+This predicate holds for class-type for which the function call
+@code{operator()} is overloaded.
+
+@item TYPE_OVERLOADS_ARRAY_REF
+This predicate holds for a class-type that overloads
+@code{operator[]}
+
+@item TYPE_OVERLOADS_ARROW
+This predicate holds for a class-type for which @code{operator->} is
+overloaded.
+
+@end ftable
+
@c ---------------------------------------------------------------------
@c Declarations
@c ---------------------------------------------------------------------
@@ -834,8 +917,8 @@ FIXME: Talk about @code{TYPE_NONCOPIED_PARTS}.
@tindex RESULT_DECL
@tindex TEMPLATE_DECL
@tindex THUNK_DECL
-@findex THUNK_DELTA
@tindex USING_DECL
+@findex THUNK_DELTA
@findex DECL_INITIAL
@findex DECL_SIZE
@findex DECL_ALIGN
@@ -881,6 +964,17 @@ typedef struct S S;
@end example
The implicitly generated @code{typedef} declaration is represented by a
@code{TYPE_DECL} for which @code{DECL_ARTIFICIAL} holds.
+
+@item DECL_NAMESPACE_SCOPE_P
+This predicate holds if the entity was declared at a namespace scope.
+
+@item DECL_CLASS_SCOPE_P
+This predicate holds if the entity was declared at a class scope.
+
+@item DECL_FUNCTION_SCOPE_P
+This predicate holds if the entity was declared inside a function
+body.
+
@end ftable
The various kinds of declarations include:
@@ -915,7 +1009,10 @@ analogous to @code{TYPE_SIZE} and @code{TYPE_ALIGN}. For a declaration,
you should always use the @code{DECL_SIZE} and @code{DECL_ALIGN} rather
than the @code{TYPE_SIZE} and @code{TYPE_ALIGN} given by the
@code{TREE_TYPE}, since special attributes may have been applied to the
-variable to give it a particular size and alignment.
+variable to give it a particular size and alignment. You may use the
+predicates @code{DECL_THIS_STATIC} or @code{DECL_THIS_EXTERN} to test
+whether the storage class specifiers @code{static} or @code{extern} were
+used to declare a variable.
If this variable is initialized (but does not require a constructor),
the @code{DECL_INITIAL} will be an expression for the initializer. The
@@ -1044,6 +1141,10 @@ the @code{DECL_REAL_CONTEXT} for @code{f} will be the
The following macros and functions can be used on a @code{FUNCTION_DECL}:
@ftable @code
+@item DECL_MAIN_P
+This predicate holds for a function that is the program entry point
+@code{::code}.
+
@item DECL_NAME
This macro returns the unqualified name of the function, as an
@code{IDENTIFIER_NODE}. For an instantiation of a function template,
@@ -1070,6 +1171,18 @@ This predicate holds if the function is undefined.
@item TREE_PUBLIC
This predicate holds if the function has external linkage.
+@item DECL_LOCAL_FUNCTION_P
+This predicate holds if the function was declared at block scope, even
+though it has a global scope.
+
+@item DECL_ANTICIPATED
+This predicate holds if the function is a built-in function but its
+prototype is not yet explicitly declared.
+
+@item DECL_EXTERN_C_FUNCTION_P
+This predicate holds if the function is declared as an
+`@code{extern "C"}' function.
+
@item DECL_LINKONCE_P
This macro holds if multiple copies of this function may be emitted in
various translation units. It is the responsibility of the linker to
@@ -1084,15 +1197,42 @@ FIXME: This macro is not yet implemented.
This macro holds if the function is a member of a class, rather than a
member of a namespace.
+@item DECL_STATIC_FUNCTION_P
+This predicate holds if the function a static member function.
+
@item DECL_NONSTATIC_MEMBER_FUNCTION_P
This macro holds for a non-static member function.
+@item DECL_CONST_MEMFUNC_P
+This predicate holds for a @code{const}-member function.
+
+@item DECL_VOLATILE_MEMFUNC_P
+This predicate holds for a @code{volatile}-member function.
+
@item DECL_CONSTRUCTOR_P
This macro holds if the function is a constructor.
+@item DECL_NONCONVERTING_P
+This predicate holds if the constructor is a non-converting constructor.
+
+@item DECL_COMPLETE_CONSTRUCTOR_P
+This predicate holds for a function which is a constructor for an object
+of a complete type.
+
+@item DECL_BASE_CONSTRUCTOR_P
+This predicate holds for a function which is a constructor for a base
+class sub-object.
+
+@item DECL_COPY_CONSTRUCTOR_P
+This predicate holds for a function which is a copy-constructor.
+
@item DECL_DESTRUCTOR_P
This macro holds if the function is a destructor.
+@item DECL_COMPLETE_DESTRUCTOR_P
+This predicate holds if the function is the destructor for an object a
+complet type.
+
@item DECL_OVERLOADED_OPERATOR_P
This macro holds if the function is an overloaded operator.
@@ -1132,6 +1272,9 @@ Finally, the thunk should jump to the location given
by @code{DECL_INITIAL}; this will always be an expression for the
address of a function.
+@item DECL_NON_THUNK_FUNCTION_P
+This predicate holds if the function is @emph{not} a thunk function.
+
@item GLOBAL_INIT_PRIORITY
If either @code{DECL_GLOBAL_CTOR_P} or @code{DECL_GLOBAL_DTOR_P} holds,
then this gives the initialization priority for the function. The
@@ -1159,6 +1302,19 @@ This macro returns the @code{RESULT_DECL} for the function.
This macro returns the @code{FUNCTION_TYPE} or @code{METHOD_TYPE} for
the function.
+@item TYPE_RAISES_EXCEPTIONS
+This macro returns the list of exceptions that a (member-)function can
+raise. The returned list, if non @code{NULL}, is comprised of nodes
+whose @code{TREE_VALUE} represents a type.
+
+@item TYPE_NOTHROW_P
+This predicate holds when the exception-specification of its arguments
+if of the form `@code{()}'.
+
+@item DECL_ARRAY_DELETE_OPERATOR_P
+This predicate holds if the function an overloaded
+@code{operator delete[]}.
+
@end ftable
@c ---------------------------------------------------------------------
diff --git a/gcc/cp/method.c b/gcc/cp/method.c
index d0e3c41bf00..707743bf3f5 100644
--- a/gcc/cp/method.c
+++ b/gcc/cp/method.c
@@ -2262,7 +2262,6 @@ use_thunk (thunk_fndecl, emit_p)
DECL_RESULT (thunk_fndecl) = NULL_TREE;
start_function (NULL_TREE, thunk_fndecl, NULL_TREE, SF_PRE_PARSED);
- store_parm_decls ();
/* Adjust the this pointer by the constant. */
t = ssize_int (delta);
@@ -2534,7 +2533,6 @@ synthesize_method (fndecl)
interface_unknown = 1;
start_function (NULL_TREE, fndecl, NULL_TREE, SF_DEFAULT | SF_PRE_PARSED);
- store_parm_decls ();
clear_last_expr ();
if (DECL_OVERLOADED_OPERATOR_P (fndecl) == NOP_EXPR)
diff --git a/gcc/cp/optimize.c b/gcc/cp/optimize.c
index d80877c2045..fdc1a524947 100644
--- a/gcc/cp/optimize.c
+++ b/gcc/cp/optimize.c
@@ -932,7 +932,6 @@ maybe_clone_body (fn)
/* Start processing the function. */
push_to_top_level ();
start_function (NULL_TREE, clone, NULL_TREE, SF_PRE_PARSED);
- store_parm_decls ();
/* Just clone the body, as if we were making an inline call.
But, remap the parameters in the callee to the parameters of
diff --git a/gcc/cp/parse.y b/gcc/cp/parse.y
index 0fa32e8868e..7d8b245114b 100644
--- a/gcc/cp/parse.y
+++ b/gcc/cp/parse.y
@@ -78,6 +78,10 @@ static tree prefix_attributes;
/* When defining an enumeration, this is the type of the enumeration. */
static tree current_enum_type;
+/* When parsing a conversion operator name, this is the scope of the
+ operator itself. */
+static tree saved_scopes;
+
static tree empty_parms PARAMS ((void));
static tree parse_decl0 PARAMS ((tree, tree, tree, tree, int));
static tree parse_decl PARAMS ((tree, tree, int));
@@ -208,6 +212,7 @@ cp_parse_init ()
ggc_add_tree_root (&current_declspecs, 1);
ggc_add_tree_root (&prefix_attributes, 1);
ggc_add_tree_root (&current_enum_type, 1);
+ ggc_add_tree_root (&saved_scopes, 1);
}
%}
@@ -832,8 +837,6 @@ fn.def2:
return_id:
RETURN_KEYWORD IDENTIFIER
{
- if (! current_function_parms_stored)
- store_parm_decls ();
$$ = $2;
}
;
@@ -860,9 +863,6 @@ base_init:
.set_base_init:
/* empty */
{
- if (! current_function_parms_stored)
- store_parm_decls ();
-
if (DECL_CONSTRUCTOR_P (current_function_decl))
/* Make a contour for the initializer list. */
do_pushlevel ();
@@ -1446,7 +1446,7 @@ do_id:
means that we're in an expression like S::f<int>, so
don't do_identifier; we only do that for unqualified
identifiers. */
- if (lastiddecl && TREE_CODE (lastiddecl) != TREE_LIST)
+ if (!lastiddecl || TREE_CODE (lastiddecl) != TREE_LIST)
$$ = do_identifier ($<ttype>-1, 1, NULL_TREE);
else
$$ = $<ttype>-1;
@@ -1727,8 +1727,6 @@ string:
nodecls:
/* empty */
{
- if (! current_function_parms_stored)
- store_parm_decls ();
setup_vtbl_ptr (NULL_TREE, NULL_TREE);
}
;
@@ -3755,82 +3753,88 @@ conversion_declarator:
;
operator:
- OPERATOR
- { got_scope = NULL_TREE; }
- ;
+ OPERATOR
+ { saved_scopes = tree_cons (got_scope, got_object, saved_scopes);
+ got_scope = NULL_TREE; got_object = NULL_TREE; }
+ ;
+unoperator:
+ { got_scope = TREE_PURPOSE (saved_scopes);
+ got_object = TREE_VALUE (saved_scopes);
+ saved_scopes = TREE_CHAIN (saved_scopes); }
+ ;
operator_name:
- operator '*'
- { $$ = ansi_opname (MULT_EXPR); }
- | operator '/'
- { $$ = ansi_opname (TRUNC_DIV_EXPR); }
- | operator '%'
- { $$ = ansi_opname (TRUNC_MOD_EXPR); }
- | operator '+'
- { $$ = ansi_opname (PLUS_EXPR); }
- | operator '-'
- { $$ = ansi_opname (MINUS_EXPR); }
- | operator '&'
- { $$ = ansi_opname (BIT_AND_EXPR); }
- | operator '|'
- { $$ = ansi_opname (BIT_IOR_EXPR); }
- | operator '^'
- { $$ = ansi_opname (BIT_XOR_EXPR); }
- | operator '~'
- { $$ = ansi_opname (BIT_NOT_EXPR); }
- | operator ','
- { $$ = ansi_opname (COMPOUND_EXPR); }
- | operator ARITHCOMPARE
- { $$ = ansi_opname ($2); }
- | operator '<'
- { $$ = ansi_opname (LT_EXPR); }
- | operator '>'
- { $$ = ansi_opname (GT_EXPR); }
- | operator EQCOMPARE
- { $$ = ansi_opname ($2); }
- | operator ASSIGN
- { $$ = ansi_assopname ($2); }
- | operator '='
- { $$ = ansi_assopname (NOP_EXPR); }
- | operator LSHIFT
- { $$ = ansi_opname ($2); }
- | operator RSHIFT
- { $$ = ansi_opname ($2); }
- | operator PLUSPLUS
- { $$ = ansi_opname (POSTINCREMENT_EXPR); }
- | operator MINUSMINUS
- { $$ = ansi_opname (PREDECREMENT_EXPR); }
- | operator ANDAND
- { $$ = ansi_opname (TRUTH_ANDIF_EXPR); }
- | operator OROR
- { $$ = ansi_opname (TRUTH_ORIF_EXPR); }
- | operator '!'
- { $$ = ansi_opname (TRUTH_NOT_EXPR); }
- | operator '?' ':'
- { $$ = ansi_opname (COND_EXPR); }
- | operator MIN_MAX
- { $$ = ansi_opname ($2); }
- | operator POINTSAT %prec EMPTY
- { $$ = ansi_opname (COMPONENT_REF); }
- | operator POINTSAT_STAR %prec EMPTY
- { $$ = ansi_opname (MEMBER_REF); }
- | operator LEFT_RIGHT
- { $$ = ansi_opname (CALL_EXPR); }
- | operator '[' ']'
- { $$ = ansi_opname (ARRAY_REF); }
- | operator NEW %prec EMPTY
- { $$ = ansi_opname (NEW_EXPR); }
- | operator DELETE %prec EMPTY
- { $$ = ansi_opname (DELETE_EXPR); }
- | operator NEW '[' ']'
- { $$ = ansi_opname (VEC_NEW_EXPR); }
- | operator DELETE '[' ']'
- { $$ = ansi_opname (VEC_DELETE_EXPR); }
+ operator '*' unoperator
+ { $$ = frob_opname (ansi_opname (MULT_EXPR)); }
+ | operator '/' unoperator
+ { $$ = frob_opname (ansi_opname (TRUNC_DIV_EXPR)); }
+ | operator '%' unoperator
+ { $$ = frob_opname (ansi_opname (TRUNC_MOD_EXPR)); }
+ | operator '+' unoperator
+ { $$ = frob_opname (ansi_opname (PLUS_EXPR)); }
+ | operator '-' unoperator
+ { $$ = frob_opname (ansi_opname (MINUS_EXPR)); }
+ | operator '&' unoperator
+ { $$ = frob_opname (ansi_opname (BIT_AND_EXPR)); }
+ | operator '|' unoperator
+ { $$ = frob_opname (ansi_opname (BIT_IOR_EXPR)); }
+ | operator '^' unoperator
+ { $$ = frob_opname (ansi_opname (BIT_XOR_EXPR)); }
+ | operator '~' unoperator
+ { $$ = frob_opname (ansi_opname (BIT_NOT_EXPR)); }
+ | operator ',' unoperator
+ { $$ = frob_opname (ansi_opname (COMPOUND_EXPR)); }
+ | operator ARITHCOMPARE unoperator
+ { $$ = frob_opname (ansi_opname ($2)); }
+ | operator '<' unoperator
+ { $$ = frob_opname (ansi_opname (LT_EXPR)); }
+ | operator '>' unoperator
+ { $$ = frob_opname (ansi_opname (GT_EXPR)); }
+ | operator EQCOMPARE unoperator
+ { $$ = frob_opname (ansi_opname ($2)); }
+ | operator ASSIGN unoperator
+ { $$ = frob_opname (ansi_assopname ($2)); }
+ | operator '=' unoperator
+ { $$ = frob_opname (ansi_assopname (NOP_EXPR)); }
+ | operator LSHIFT unoperator
+ { $$ = frob_opname (ansi_opname ($2)); }
+ | operator RSHIFT unoperator
+ { $$ = frob_opname (ansi_opname ($2)); }
+ | operator PLUSPLUS unoperator
+ { $$ = frob_opname (ansi_opname (POSTINCREMENT_EXPR)); }
+ | operator MINUSMINUS unoperator
+ { $$ = frob_opname (ansi_opname (PREDECREMENT_EXPR)); }
+ | operator ANDAND unoperator
+ { $$ = frob_opname (ansi_opname (TRUTH_ANDIF_EXPR)); }
+ | operator OROR unoperator
+ { $$ = frob_opname (ansi_opname (TRUTH_ORIF_EXPR)); }
+ | operator '!' unoperator
+ { $$ = frob_opname (ansi_opname (TRUTH_NOT_EXPR)); }
+ | operator '?' ':' unoperator
+ { $$ = frob_opname (ansi_opname (COND_EXPR)); }
+ | operator MIN_MAX unoperator
+ { $$ = frob_opname (ansi_opname ($2)); }
+ | operator POINTSAT unoperator %prec EMPTY
+ { $$ = frob_opname (ansi_opname (COMPONENT_REF)); }
+ | operator POINTSAT_STAR unoperator %prec EMPTY
+ { $$ = frob_opname (ansi_opname (MEMBER_REF)); }
+ | operator LEFT_RIGHT unoperator
+ { $$ = frob_opname (ansi_opname (CALL_EXPR)); }
+ | operator '[' ']' unoperator
+ { $$ = frob_opname (ansi_opname (ARRAY_REF)); }
+ | operator NEW unoperator %prec EMPTY
+ { $$ = frob_opname (ansi_opname (NEW_EXPR)); }
+ | operator DELETE unoperator %prec EMPTY
+ { $$ = frob_opname (ansi_opname (DELETE_EXPR)); }
+ | operator NEW '[' ']' unoperator
+ { $$ = frob_opname (ansi_opname (VEC_NEW_EXPR)); }
+ | operator DELETE '[' ']' unoperator
+ { $$ = frob_opname (ansi_opname (VEC_DELETE_EXPR)); }
/* Names here should be looked up in class scope ALSO. */
- | operator type_specifier_seq conversion_declarator
- { $$ = grokoptypename ($2.t, $3); }
- | operator error
- { $$ = ansi_opname (ERROR_MARK); }
+ | operator type_specifier_seq conversion_declarator unoperator
+ { $$ = frob_opname (grokoptypename ($2.t, $3)); }
+ | operator error unoperator
+ { $$ = frob_opname (ansi_opname (ERROR_MARK)); }
;
%%
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 51421fd9a17..99443b58841 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -7269,7 +7269,8 @@ tsubst_expr (t, args, complain, in_decl)
case CASE_LABEL:
prep_stmt (t);
finish_case_label (tsubst_expr (CASE_LOW (t), args, complain, in_decl),
- tsubst_expr (CASE_HIGH (t), args, complain, in_decl));
+ tsubst_expr (CASE_HIGH (t), args, complain,
+ in_decl));
break;
case LABEL_STMT:
@@ -9685,7 +9686,6 @@ instantiate_decl (d, defer_ok)
/* Set up context. */
start_function (NULL_TREE, d, NULL_TREE, SF_PRE_PARSED);
- store_parm_decls ();
/* We already set up __FUNCTION__, etc., so we don't want to do
it again now. */
diff --git a/gcc/cp/rtti.c b/gcc/cp/rtti.c
index 94e67a551a9..3eea2d2261e 100644
--- a/gcc/cp/rtti.c
+++ b/gcc/cp/rtti.c
@@ -29,10 +29,7 @@ Boston, MA 02111-1307, USA. */
#include "output.h"
#include "assert.h"
#include "toplev.h"
-
-#ifndef INT_TYPE_SIZE
-#define INT_TYPE_SIZE BITS_PER_WORD
-#endif
+#include "defaults.h"
/* Accessors for the type_info objects. We need to remember several things
about each of the type_info types. The global tree nodes such as
@@ -1198,7 +1195,6 @@ synthesize_tinfo_fn (fndecl)
start_function (NULL_TREE, fndecl, NULL_TREE,
SF_DEFAULT | SF_PRE_PARSED);
DECL_DEFER_OUTPUT (fndecl) = 1;
- store_parm_decls ();
clear_last_expr ();
/* Begin the body of the function. */
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
index e1a73cee6bc..88eaa72de4c 100644
--- a/gcc/cp/semantics.c
+++ b/gcc/cp/semantics.c
@@ -55,22 +55,10 @@ static void genrtl_handler PARAMS ((tree));
static void genrtl_catch_block PARAMS ((tree));
static void genrtl_ctor_stmt PARAMS ((tree));
static void genrtl_subobject PARAMS ((tree));
-static tree genrtl_do_poplevel PARAMS ((void));
static void genrtl_named_return_value PARAMS ((void));
static void cp_expand_stmt PARAMS ((tree));
-
-/* When parsing a template, LAST_TREE contains the last statement
- parsed. These are chained together through the TREE_CHAIN field,
- but often need to be re-organized since the parse is performed
- bottom-up. This macro makes LAST_TREE the indicated SUBSTMT of
- STMT. */
-
-#define RECHAIN_STMTS(stmt, substmt) \
- do { \
- substmt = TREE_CHAIN (stmt); \
- TREE_CHAIN (stmt) = NULL_TREE; \
- last_tree = stmt; \
- } while (0)
+static void genrtl_start_function PARAMS ((tree));
+static void genrtl_finish_function PARAMS ((tree));
/* Finish processing the COND, the SUBSTMT condition for STMT. */
@@ -520,7 +508,7 @@ finish_for_stmt (for_stmt)
void
finish_break_stmt ()
{
- add_stmt (build_stmt (BREAK_STMT));
+ add_stmt (build_break_stmt ());
}
/* Finish a continue-statement. */
@@ -528,7 +516,7 @@ finish_break_stmt ()
void
finish_continue_stmt ()
{
- add_stmt (build_stmt (CONTINUE_STMT));
+ add_stmt (build_continue_stmt ());
}
/* Begin a switch-statement. Returns a new SWITCH_STMT if
@@ -553,6 +541,9 @@ finish_switch_cond (cond, switch_stmt)
{
if (!processing_template_decl)
{
+ tree type;
+ tree index;
+
/* Convert the condition to an integer or enumeration type. */
cond = build_expr_type_conversion (WANT_INT | WANT_ENUM, cond, 1);
if (cond == NULL_TREE)
@@ -565,9 +556,19 @@ finish_switch_cond (cond, switch_stmt)
cond = default_conversion (cond);
cond = fold (build1 (CLEANUP_POINT_EXPR, TREE_TYPE (cond), cond));
}
+
+ type = TREE_TYPE (cond);
+ index = get_unwidened (cond, NULL_TREE);
+ /* We can't strip a conversion from a signed type to an unsigned,
+ because if we did, int_fits_type_p would do the wrong thing
+ when checking case values for being in range,
+ and it's too hard to do the right thing. */
+ if (TREE_UNSIGNED (TREE_TYPE (cond))
+ == TREE_UNSIGNED (TREE_TYPE (index)))
+ cond = index;
}
FINISH_COND (cond, switch_stmt, SWITCH_COND (switch_stmt));
- push_switch ();
+ push_switch (switch_stmt);
}
/* Finish the body of a switch-statement, which may be given by
@@ -583,21 +584,6 @@ finish_switch_stmt (switch_stmt)
finish_stmt ();
}
-/* Finish a case-label. */
-
-void
-finish_case_label (low_value, high_value)
- tree low_value;
- tree high_value;
-{
- /* Add a representation for the case label to the statement
- tree. */
- add_stmt (build_stmt (CASE_LABEL, low_value, high_value));
- /* And warn about crossing initializations, etc. */
- if (!processing_template_decl)
- define_case_label ();
-}
-
/* Generate the RTL for T, which is a TRY_BLOCK. */
static void
@@ -612,17 +598,9 @@ genrtl_try_block (t)
}
else
{
- if (FN_TRY_BLOCK_P (t))
- {
- if (! current_function_parms_stored)
- store_parm_decls ();
- expand_start_early_try_stmts ();
- }
- else
- {
- emit_line_note (input_filename, lineno);
- expand_start_try_stmts ();
- }
+ if (!FN_TRY_BLOCK_P (t))
+ emit_line_note (input_filename, lineno);
+ expand_start_try_stmts ();
expand_stmt (TRY_STMTS (t));
@@ -2403,7 +2381,6 @@ emit_associated_thunks (fn)
}
}
-
/* Generate RTL for FN. */
void
@@ -2500,8 +2477,7 @@ expand_body (fn)
lineno = DECL_SOURCE_LINE (fn);
input_filename = DECL_SOURCE_FILE (fn);
- start_function (NULL_TREE, fn, NULL_TREE, SF_PRE_PARSED | SF_EXPAND);
- store_parm_decls ();
+ genrtl_start_function (fn);
current_function_is_thunk = DECL_THUNK_P (fn);
/* We don't need to redeclare __FUNCTION__, __PRETTY_FUNCTION__, or
@@ -2521,7 +2497,7 @@ expand_body (fn)
lineno = STMT_LINENO (DECL_SAVED_TREE (fn));
/* Generate code for the function. */
- finish_function (0);
+ genrtl_finish_function (fn);
/* If possible, obliterate the body of the function so that it can
be garbage collected. */
@@ -2544,6 +2520,287 @@ expand_body (fn)
timevar_pop (TV_EXPAND);
}
+/* Start generating the RTL for FN. */
+
+static void
+genrtl_start_function (fn)
+ tree fn;
+{
+ tree parm;
+
+ /* Tell everybody what function we're processing. */
+ current_function_decl = fn;
+ /* Get the RTL machinery going for this function. */
+ init_function_start (fn, DECL_SOURCE_FILE (fn), DECL_SOURCE_LINE (fn));
+ /* Let everybody know that we're expanding this function, not doing
+ semantic analysis. */
+ expanding_p = 1;
+
+ /* Even though we're inside a function body, we still don't want to
+ call expand_expr to calculate the size of a variable-sized array.
+ We haven't necessarily assigned RTL to all variables yet, so it's
+ not safe to try to expand expressions involving them. */
+ immediate_size_expand = 0;
+ cfun->x_dont_save_pending_sizes_p = 1;
+
+ /* Let the user know we're compiling this function. */
+ announce_function (fn);
+
+ /* Initialize the per-function data. */
+ my_friendly_assert (!DECL_PENDING_INLINE_P (fn), 20000911);
+ if (DECL_SAVED_FUNCTION_DATA (fn))
+ {
+ /* If we already parsed this function, and we're just expanding it
+ now, restore saved state. */
+ *cp_function_chain = *DECL_SAVED_FUNCTION_DATA (fn);
+
+ /* This function is being processed in whole-function mode; we
+ already did semantic analysis. */
+ cfun->x_whole_function_mode_p = 1;
+
+ /* If we decided that we didn't want to inline this function,
+ make sure the back-end knows that. */
+ if (!current_function_cannot_inline)
+ current_function_cannot_inline = cp_function_chain->cannot_inline;
+
+ /* We don't need the saved data anymore. */
+ free (DECL_SAVED_FUNCTION_DATA (fn));
+ DECL_SAVED_FUNCTION_DATA (fn) = NULL;
+ }
+
+ /* Tell the cross-reference machinery that we're defining this
+ function. */
+ GNU_xref_function (fn, DECL_ARGUMENTS (fn));
+
+ /* Keep track of how many functions we're presently expanding. */
+ ++function_depth;
+
+ /* Create a binding level for the parameters. */
+ expand_start_bindings (2);
+ /* Clear out any previously saved instructions for this function, in
+ case it was defined more than once. */
+ DECL_SAVED_INSNS (fn) = NULL;
+ /* Go through the PARM_DECLs for this function to see if any need
+ cleanups. */
+ for (parm = DECL_ARGUMENTS (fn); parm; parm = TREE_CHAIN (parm))
+ if (TREE_TYPE (parm) != error_mark_node
+ && TYPE_HAS_NONTRIVIAL_DESTRUCTOR (TREE_TYPE (parm)))
+ {
+ expand_function_start (fn, /*parms_have_cleanups=*/1);
+ break;
+ }
+ if (!parm)
+ expand_function_start (fn, /*parms_have_cleanups=*/0);
+ /* If this function is `main'. */
+ if (DECL_MAIN_P (fn))
+ expand_main_function ();
+ /* Create a binding contour which can be used to catch
+ cleanup-generated temporaries. */
+ expand_start_bindings (2);
+}
+
+/* Finish generating the RTL for FN. */
+
+static void
+genrtl_finish_function (fn)
+ tree fn;
+{
+ int returns_null;
+ int returns_value;
+ tree no_return_label = NULL_TREE;
+
+#if 0
+ if (write_symbols != NO_DEBUG)
+ {
+ /* Keep this code around in case we later want to control debug info
+ based on whether a type is "used". (jason 1999-11-11) */
+
+ tree ttype = target_type (fntype);
+ tree parmdecl;
+
+ if (IS_AGGR_TYPE (ttype))
+ /* Let debugger know it should output info for this type. */
+ note_debug_info_needed (ttype);
+
+ for (parmdecl = DECL_ARGUMENTS (fndecl); parmdecl; parmdecl = TREE_CHAIN (parmdecl))
+ {
+ ttype = target_type (TREE_TYPE (parmdecl));
+ if (IS_AGGR_TYPE (ttype))
+ /* Let debugger know it should output info for this type. */
+ note_debug_info_needed (ttype);
+ }
+ }
+#endif
+
+ /* Clean house because we will need to reorder insns here. */
+ do_pending_stack_adjust ();
+
+ if (!dtor_label && !DECL_CONSTRUCTOR_P (fn)
+ && return_label != NULL_RTX
+ && current_function_return_value == NULL_TREE
+ && ! DECL_NAME (DECL_RESULT (current_function_decl)))
+ no_return_label = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
+
+ if (flag_exceptions)
+ expand_exception_blocks ();
+
+ /* If this function is supposed to return a value, ensure that
+ we do not fall into the cleanups by mistake. The end of our
+ function will look like this:
+
+ user code (may have return stmt somewhere)
+ goto no_return_label
+ cleanup_label:
+ cleanups
+ goto return_label
+ no_return_label:
+ NOTE_INSN_FUNCTION_END
+ return_label:
+ things for return
+
+ If the user omits a return stmt in the USER CODE section, we
+ will have a control path which reaches NOTE_INSN_FUNCTION_END.
+ Otherwise, we won't. */
+ if (no_return_label)
+ {
+ DECL_CONTEXT (no_return_label) = fn;
+ DECL_INITIAL (no_return_label) = error_mark_node;
+ DECL_SOURCE_FILE (no_return_label) = input_filename;
+ DECL_SOURCE_LINE (no_return_label) = lineno;
+ expand_goto (no_return_label);
+ }
+
+ if (cleanup_label)
+ {
+ /* Remove the binding contour which is used to catch
+ cleanup-generated temporaries. */
+ expand_end_bindings (0, 0, 0);
+ poplevel (0, 0, 0);
+
+ /* Emit label at beginning of cleanup code for parameters. */
+ emit_label (cleanup_label);
+ }
+
+ /* Get return value into register if that's where it's supposed to
+ be. */
+ if (original_result_rtx)
+ fixup_result_decl (DECL_RESULT (fn), original_result_rtx);
+
+ /* Finish building code that will trigger warnings if users forget
+ to make their functions return values. */
+ if (no_return_label || cleanup_label)
+ emit_jump (return_label);
+ if (no_return_label)
+ {
+ /* We don't need to call `expand_*_return' here because we don't
+ need any cleanups here--this path of code is only for error
+ checking purposes. */
+ expand_label (no_return_label);
+ }
+
+ /* We hard-wired immediate_size_expand to zero in start_function.
+ Expand_function_end will decrement this variable. So, we set the
+ variable to one here, so that after the decrement it will remain
+ zero. */
+ immediate_size_expand = 1;
+
+ /* Generate rtl for function exit. */
+ expand_function_end (input_filename, lineno, 1);
+
+ /* So we can tell if jump_optimize sets it to 1. */
+ can_reach_end = 0;
+
+ /* Before we call rest_of_compilation (which will pop the
+ CURRENT_FUNCTION), we must save these values. */
+ returns_null = current_function_returns_null;
+ returns_value = current_function_returns_value;
+
+ /* If this is a nested function (like a template instantiation that
+ we're compiling in the midst of compiling something else), push a
+ new GC context. That will keep local variables on the stack from
+ being collected while we're doing the compilation of this
+ function. */
+ if (function_depth > 1)
+ ggc_push_context ();
+
+ /* Run the optimizers and output the assembler code for this
+ function. */
+ rest_of_compilation (fn);
+
+ /* Undo the call to ggc_push_context above. */
+ if (function_depth > 1)
+ ggc_pop_context ();
+
+ if (DECL_SAVED_INSNS (fn) && ! TREE_ASM_WRITTEN (fn))
+ {
+ /* Set DECL_EXTERNAL so that assemble_external will be called as
+ necessary. We'll clear it again in finish_file. */
+ if (! DECL_EXTERNAL (fn))
+ DECL_NOT_REALLY_EXTERN (fn) = 1;
+ DECL_EXTERNAL (fn) = 1;
+ defer_fn (fn);
+ }
+
+#if 0
+ /* Keep this code around in case we later want to control debug info
+ based on whether a type is "used". (jason 1999-11-11) */
+
+ if (ctype && TREE_ASM_WRITTEN (fn))
+ note_debug_info_needed (ctype);
+#endif
+
+ /* If this function is marked with the constructor attribute, add it
+ to the list of functions to be called along with constructors
+ from static duration objects. */
+ if (DECL_STATIC_CONSTRUCTOR (fn))
+ static_ctors = tree_cons (NULL_TREE, fn, static_ctors);
+
+ /* If this function is marked with the destructor attribute, add it
+ to the list of functions to be called along with destructors from
+ static duration objects. */
+ if (DECL_STATIC_DESTRUCTOR (fn))
+ static_dtors = tree_cons (NULL_TREE, fn, static_dtors);
+
+ if (DECL_NAME (DECL_RESULT (fn)))
+ returns_value |= can_reach_end;
+ else
+ returns_null |= can_reach_end;
+
+ if (TREE_THIS_VOLATILE (fn) && returns_null)
+ warning ("`noreturn' function does return");
+ else if (returns_null
+ && TREE_CODE (TREE_TYPE (TREE_TYPE (fn))) != VOID_TYPE)
+ {
+ /* Always complain if there's just no return statement. */
+ if (!returns_value)
+ warning ("no return statement in function returning non-void");
+ else if (warn_return_type || pedantic)
+ /* If this function returns non-void and control can drop through,
+ complain. */
+ warning ("control reaches end of non-void function");
+ }
+
+ --function_depth;
+
+ if (!DECL_SAVED_INSNS (fn)
+ && !(flag_inline_trees && DECL_INLINE (fn)))
+ {
+ tree t;
+
+ /* Stop pointing to the local nodes about to be freed. */
+ /* But DECL_INITIAL must remain nonzero so we know this
+ was an actual function definition. */
+ DECL_INITIAL (fn) = error_mark_node;
+ for (t = DECL_ARGUMENTS (fn); t; t = TREE_CHAIN (t))
+ DECL_RTL (t) = DECL_INCOMING_RTL (t) = NULL_RTX;
+ }
+
+ /* Let the error reporting routines know that we're outside a
+ function. For a nested function, this value is used in
+ pop_cp_function_context and then reset via pop_function_context. */
+ current_function_decl = NULL_TREE;
+}
+
/* Perform initialization related to this module. */
void
diff --git a/gcc/cp/spew.c b/gcc/cp/spew.c
index 341f772e3ab..d6bf7bb4586 100644
--- a/gcc/cp/spew.c
+++ b/gcc/cp/spew.c
@@ -938,6 +938,42 @@ yyungetc (ch, rescan)
}
}
+/* ID is an operator name. Duplicate the hackery in yylex to determine what
+ it really is. */
+
+tree frob_opname (id)
+ tree id;
+{
+ tree trrr;
+
+ if (yychar == '<')
+ looking_for_template = 1;
+ trrr = lookup_name (id, -2);
+ if (trrr)
+ {
+ switch (identifier_type (trrr))
+ {
+ case TYPENAME:
+ case SELFNAME:
+ case NSNAME:
+ case PTYPENAME:
+ if (got_scope || got_object)
+ id = trrr;
+ case PFUNCNAME:
+ case IDENTIFIER:
+ lastiddecl = trrr;
+ break;
+ default:
+ my_friendly_abort (20000907);
+ }
+ }
+ else
+ lastiddecl = NULL_TREE;
+ got_scope = NULL_TREE;
+ got_object = NULL_TREE;
+ looking_for_template = 0;
+ return id;
+}
/* Set up the state required to correctly handle the definition of the
inline function whose preparsed state has been saved in PI. */
diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c
index bff019d36c9..e15a7248930 100644
--- a/gcc/cp/typeck.c
+++ b/gcc/cp/typeck.c
@@ -6839,56 +6839,7 @@ check_return_expr (retval)
return retval;
}
-/* Expand a C `return' statement.
- RETVAL is the expression for what to return,
- or a null pointer for `return;' with no value.
-
- C++: upon seeing a `return', we must call destructors on all
- variables in scope which had constructors called on them.
- This means that if in a destructor, the base class destructors
- must be called before returning.
-
- The RETURN statement in C++ has initialization semantics. */
-
-void
-c_expand_return (retval)
- tree retval;
-{
- if (!retval)
- expand_null_return ();
- else
- {
- expand_start_target_temps ();
- expand_return (retval);
- expand_end_target_temps ();
- }
-}
-/* Start a C switch statement, testing expression EXP.
- Return EXP if it is valid, an error node otherwise. */
-
-tree
-c_expand_start_case (exp)
- tree exp;
-{
- tree type;
- tree index;
-
- type = TREE_TYPE (exp);
- index = get_unwidened (exp, NULL_TREE);
- /* We can't strip a conversion from a signed type to an unsigned,
- because if we did, int_fits_type_p would do the wrong thing
- when checking case values for being in range,
- and it's too hard to do the right thing. */
- if (TREE_UNSIGNED (TREE_TYPE (exp))
- == TREE_UNSIGNED (TREE_TYPE (index)))
- exp = index;
-
- expand_start_case (1, exp, type, "switch statement");
-
- return exp;
-}
-
/* Returns non-zero if the pointer-type FROM can be converted to the
pointer-type TO via a qualification conversion. If CONSTP is -1,
then we return non-zero if the pointers are similar, and the
diff --git a/gcc/cppexp.c b/gcc/cppexp.c
index 9631526b18e..5403dce92e6 100644
--- a/gcc/cppexp.c
+++ b/gcc/cppexp.c
@@ -23,22 +23,7 @@ Boston, MA 02111-1307, USA. */
#include "system.h"
#include "cpplib.h"
#include "cpphash.h"
-
-#ifndef CHAR_TYPE_SIZE
-#define CHAR_TYPE_SIZE BITS_PER_UNIT
-#endif
-
-#ifndef INT_TYPE_SIZE
-#define INT_TYPE_SIZE BITS_PER_WORD
-#endif
-
-#ifndef LONG_TYPE_SIZE
-#define LONG_TYPE_SIZE BITS_PER_WORD
-#endif
-
-#ifndef WCHAR_TYPE_SIZE
-#define WCHAR_TYPE_SIZE INT_TYPE_SIZE
-#endif
+#include "defaults.h"
#ifndef MAX_CHAR_TYPE_SIZE
#define MAX_CHAR_TYPE_SIZE CHAR_TYPE_SIZE
diff --git a/gcc/cppfiles.c b/gcc/cppfiles.c
index 79f9ad98ca0..7f5c731c403 100644
--- a/gcc/cppfiles.c
+++ b/gcc/cppfiles.c
@@ -43,6 +43,22 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
# define O_BINARY 0
#endif
+#ifndef INCLUDE_LEN_FUDGE
+# define INCLUDE_LEN_FUDGE 0
+#endif
+
+/* If errno is inspected immediately after a system call fails, it will be
+ nonzero, and no error number will ever be zero. */
+#ifndef ENOENT
+# define ENOENT 0
+#endif
+#ifndef ENOTDIR
+# define ENOTDIR 0
+#endif
+#ifndef ENOMEM
+# define ENOMEM 0
+#endif
+
/* Suppress warning about function macros used w/o arguments in traditional
C. It is unlikely that glibc's strcmp macro helps this file at all. */
#undef strcmp
@@ -57,24 +73,18 @@ static struct file_name_list *actual_directory
static struct include_file *find_include_file
PARAMS ((cpp_reader *, const char *,
struct file_name_list *));
-static struct include_file *open_include_file
+static struct include_file *lookup_include_file
PARAMS ((cpp_reader *, const char *));
static int read_include_file PARAMS ((cpp_reader *, struct include_file *));
-static ssize_t read_with_read PARAMS ((cpp_buffer *, int, ssize_t));
-static ssize_t read_file PARAMS ((cpp_buffer *, int, ssize_t));
-
+static int stack_include_file PARAMS ((cpp_reader *, struct include_file *));
+static void purge_cache PARAMS ((struct include_file *));
static void destroy_include_file_node PARAMS ((splay_tree_value));
-static int close_cached_fd PARAMS ((splay_tree_node, void *));
static int report_missing_guard PARAMS ((splay_tree_node, void *));
#if 0
static void hack_vms_include_specification PARAMS ((char *));
#endif
-#ifndef INCLUDE_LEN_FUDGE
-#define INCLUDE_LEN_FUDGE 0
-#endif
-
/* We use a splay tree to store information about all the include
files seen in this compilation. The key of each tree node is the
physical path to the file. The value is 0 if the file does not
@@ -87,26 +97,11 @@ destroy_include_file_node (v)
struct include_file *f = (struct include_file *)v;
if (f)
{
- if (f->fd != -1)
- close (f->fd);
+ purge_cache (f);
free (f);
}
}
-static int
-close_cached_fd (n, dummy)
- splay_tree_node n;
- void *dummy ATTRIBUTE_UNUSED;
-{
- struct include_file *f = (struct include_file *)n->value;
- if (f && f->fd != -1)
- {
- close (f->fd);
- f->fd = -1;
- }
- return 0;
-}
-
void
_cpp_init_includes (pfile)
cpp_reader *pfile;
@@ -124,48 +119,24 @@ _cpp_cleanup_includes (pfile)
splay_tree_delete (pfile->all_include_files);
}
-/* Given a filename, look it up and possibly open it. If the file
- does not exist, return NULL. If the file does exist but doesn't
- need to be reread, return an include_file entry with fd == -1.
- If it needs to be (re)read, return an include_file entry with
- fd a file descriptor open on the file. */
+/* Given a file name, look it up in the cache; if there is no entry,
+ create one. Returns 0 if the file doesn't exist or is
+ inaccessible, otherwise the cache entry. */
static struct include_file *
-open_include_file (pfile, filename)
+lookup_include_file (pfile, filename)
cpp_reader *pfile;
const char *filename;
-{
+{
splay_tree_node nd;
struct include_file *file = 0;
int fd;
+ struct stat st;
- nd = splay_tree_lookup (pfile->all_include_files,
- (splay_tree_key) filename);
+ nd = splay_tree_lookup (pfile->all_include_files, (splay_tree_key) filename);
if (nd)
- {
- if (nd->value == 0)
- return 0;
-
- file = (struct include_file *)nd->value;
-
- if (DO_NOT_REREAD (file))
- {
- if (file->fd != -1)
- {
- close (file->fd);
- file->fd = -1;
- }
- return file;
- }
-
- /* File descriptors are cached for files that might be reread. */
- if (file->fd != -1)
- {
- lseek (file->fd, 0, SEEK_SET);
- return file;
- }
- }
+ return (struct include_file *)nd->value;
/* We used to open files in nonblocking mode, but that caused more
problems than it solved. Do take care not to acquire a
@@ -180,67 +151,224 @@ open_include_file (pfile, filename)
ourselves.
Special case: the empty string is translated to stdin. */
- retry:
if (filename[0] == '\0')
fd = 0;
else
fd = open (filename, O_RDONLY|O_NOCTTY|O_BINARY, 0666);
-
if (fd == -1)
+ goto fail;
+
+ if (fstat (fd, &st) < 0)
+ goto fail;
+
+ file = xcnew (struct include_file);
+ file->name = xstrdup (filename);
+ file->st = st;
+ file->fd = fd;
+
+ /* If the file is plain and zero length, mark it never-reread now. */
+ if (S_ISREG (st.st_mode) && st.st_size == 0)
+ file->cmacro = NEVER_REREAD;
+
+ splay_tree_insert (pfile->all_include_files,
+ (splay_tree_key) file->name, (splay_tree_value) file);
+ return file;
+
+ fail:
+
+ /* Don't issue an error message if the file doesn't exist. */
+ if (errno != ENOENT && errno != ENOTDIR)
+ cpp_error_from_errno (pfile, filename);
+
+ /* Create a negative node for this path. */
+ splay_tree_insert (pfile->all_include_files,
+ (splay_tree_key) xstrdup (filename), 0);
+ return 0;
+}
+
+/* Place the file referenced by INC into a new buffer on PFILE's stack.
+ Return 1 if successful, 0 if not. */
+
+static int
+stack_include_file (pfile, inc)
+ cpp_reader *pfile;
+ struct include_file *inc;
+{
+ cpp_buffer *fp;
+
+ if (DO_NOT_REREAD (inc))
+ return 0;
+
+ if (inc->buffer == NULL)
+ if (read_include_file (pfile, inc) == 0)
+ return 0;
+
+ fp = cpp_push_buffer (pfile, NULL, 0);
+ if (fp == 0)
+ return 0;
+
+ fp->inc = inc;
+ fp->nominal_fname = inc->name;
+ fp->buf = inc->buffer;
+ fp->rlimit = fp->buf + inc->st.st_size;
+ fp->cur = fp->buf;
+ fp->lineno = 1;
+ fp->line_base = fp->buf;
+
+ /* The ->actual_dir field is only used when ignore_srcdir is not in effect;
+ see do_include */
+ if (!CPP_OPTION (pfile, ignore_srcdir))
+ fp->actual_dir = actual_directory (pfile, inc->name);
+
+ fp->inc->refcnt++;
+ pfile->include_depth++;
+ pfile->input_stack_listing_current = 0;
+ if (pfile->cb.enter_file)
+ (*pfile->cb.enter_file) (pfile);
+ return 1;
+}
+
+/* Read the file referenced by INC into the file cache.
+
+ If fd points to a plain file, we might be able to mmap it; we can
+ definitely allocate the buffer all at once. If fd is a pipe or
+ terminal, we can't do either. If fd is something weird, like a
+ block device or a directory, we don't want to read it at all.
+
+ Unfortunately, different systems use different st.st_mode values
+ for pipes: some have S_ISFIFO, some S_ISSOCK, some are buggy and
+ zero the entire struct stat except a couple fields. Hence we don't
+ even try to figure out what something is, except for plain files,
+ directories, and block devices.
+
+ FIXME: Flush file cache and try again if we run out of memory. */
+
+static int
+read_include_file (pfile, inc)
+ cpp_reader *pfile;
+ struct include_file *inc;
+{
+ ssize_t size, offset, count;
+ U_CHAR *buf;
+#if MMAP_THRESHOLD
+ static int pagesize = -1;
+#endif
+
+ if (S_ISREG (inc->st.st_mode))
{
-#ifdef EACCES
- if (errno == EACCES)
+ /* off_t might have a wider range than ssize_t - in other words,
+ the max size of a file might be bigger than the address
+ space. We can't handle a file that large. (Anyone with
+ a single source file bigger than 2GB needs to rethink
+ their coding style.) Some systems (e.g. AIX 4.1) define
+ SSIZE_MAX to be much smaller than the actual range of the
+ type. Use INTTYPE_MAXIMUM unconditionally to ensure this
+ does not bite us. */
+ if (inc->st.st_size > INTTYPE_MAXIMUM (ssize_t))
{
- cpp_error (pfile, "included file \"%s\" exists but is not readable",
- filename);
+ cpp_error (pfile, "%s is too large", inc->name);
+ goto fail;
}
+ size = inc->st.st_size;
+
+#if MMAP_THRESHOLD
+ if (pagesize == -1)
+ pagesize = getpagesize ();
+
+ if (size / pagesize >= MMAP_THRESHOLD)
+ {
+ buf = (U_CHAR *) mmap (0, size, PROT_READ, MAP_PRIVATE, inc->fd, 0);
+ if (buf == (U_CHAR *)-1)
+ goto perror_fail;
+ inc->mapped = 1;
+ }
+ else
#endif
- if (0
-#ifdef EMFILE
- || errno == EMFILE
-#endif
-#ifdef ENFILE
- || errno == ENFILE
-#endif
- )
{
- /* Too many files open. Close all cached file descriptors and
- try again. */
- splay_tree_foreach (pfile->all_include_files, close_cached_fd, 0);
- goto retry;
+ buf = (U_CHAR *) xmalloc (size);
+ offset = 0;
+ while (offset < size)
+ {
+ count = read (inc->fd, buf + offset, size - offset);
+ if (count < 0)
+ goto perror_fail;
+ if (count == 0)
+ {
+ cpp_warning (pfile, "%s is shorter than expected", inc->name);
+ break;
+ }
+ offset += count;
+ }
+ inc->mapped = 0;
+ }
+ }
+ else if (S_ISBLK (inc->st.st_mode))
+ {
+ cpp_error (pfile, "%s is a block device", inc->name);
+ goto fail;
+ }
+ else if (S_ISDIR (inc->st.st_mode))
+ {
+ cpp_error (pfile, "%s is a directory", inc->name);
+ goto fail;
+ }
+ else
+ {
+ /* 8 kilobytes is a sensible starting size. It ought to be
+ bigger than the kernel pipe buffer, and it's definitely
+ bigger than the majority of C source files. */
+ size = 8 * 1024;
+
+ buf = (U_CHAR *) xmalloc (size);
+ offset = 0;
+ while ((count = read (inc->fd, buf + offset, size - offset)) > 0)
+ {
+ offset += count;
+ if (offset == size)
+ buf = xrealloc (buf, (size *= 2));
}
+ if (count < 0)
+ goto perror_fail;
- /* Nonexistent or inaccessible file. Create a negative node for it. */
- if (nd)
+ if (offset == 0)
{
- cpp_ice (pfile,
- "node for '%s' exists, open failed, error '%s', value %lx\n",
- filename, strerror (errno), (unsigned long) nd->value);
- destroy_include_file_node (nd->value);
+ free (buf);
+ return 0;
}
- splay_tree_insert (pfile->all_include_files,
- (splay_tree_key) xstrdup (filename), 0);
- return 0;
+
+ if (offset < size)
+ buf = xrealloc (buf, offset);
+ inc->st.st_size = offset;
}
- /* If we haven't seen this file before, create a positive node for it. */
- if (!nd)
+ close (inc->fd);
+ inc->buffer = buf;
+ inc->fd = -1;
+ return 1;
+
+ perror_fail:
+ cpp_error_from_errno (pfile, inc->name);
+ fail:
+ /* Do not try to read this file again. */
+ close (inc->fd);
+ inc->fd = -1;
+ inc->cmacro = NEVER_REREAD;
+ return 0;
+}
+
+static void
+purge_cache (inc)
+ struct include_file *inc;
+{
+ if (inc->buffer)
{
- file = xnew (struct include_file);
- file->cmacro = 0;
- file->include_count = 0;
- file->sysp = 0;
- file->foundhere = 0;
- file->name = xstrdup (filename);
- splay_tree_insert (pfile->all_include_files,
- (splay_tree_key) file->name,
- (splay_tree_value) file);
+ if (inc->mapped)
+ munmap ((caddr_t) inc->buffer, inc->st.st_size);
+ else
+ free ((PTR) inc->buffer);
+ inc->buffer = NULL;
}
-
- file->fd = fd;
- file->date = (time_t) -1;
- return file;
}
/* Return 1 if the file named by FNAME has been included before in
@@ -282,8 +410,7 @@ cpp_included (pfile, fname)
/* Search for include file FNAME in the include chain starting at
SEARCH_START. Return 0 if there is no such file (or it's un-openable),
- otherwise an include_file structure, possibly with a file descriptor
- open on the file. */
+ otherwise an include_file structure. */
static struct include_file *
find_include_file (pfile, fname, search_start)
@@ -296,7 +423,7 @@ find_include_file (pfile, fname, search_start)
struct include_file *file;
if (fname[0] == '/')
- return open_include_file (pfile, fname);
+ return lookup_include_file (pfile, fname);
/* Search directory path for the file. */
name = (char *) alloca (strlen (fname) + pfile->max_include_len
@@ -310,7 +437,7 @@ find_include_file (pfile, fname, search_start)
if (CPP_OPTION (pfile, remap))
name = remap_filename (pfile, name, path);
- file = open_include_file (pfile, name);
+ file = lookup_include_file (pfile, name);
if (file)
{
file->sysp = path->sysp;
@@ -321,9 +448,9 @@ find_include_file (pfile, fname, search_start)
return 0;
}
-/* #line uses this to save artificial file names. We have to try
- opening the file because an all_include_files entry is always
- either + or -, there's no 'I don't know' value. */
+/* #line uses this to save artificial file names. We have to stat the
+ file because an all_include_files entry is always either + or -,
+ there's no 'I don't know' value. */
const char *
_cpp_fake_include (pfile, fname)
cpp_reader *pfile;
@@ -335,7 +462,14 @@ _cpp_fake_include (pfile, fname)
file = find_include_file (pfile, fname, CPP_OPTION (pfile, quote_include));
if (file)
- return file->name;
+ {
+ if (file->fd > 0)
+ {
+ close (file->fd);
+ file->fd = -1;
+ }
+ return file->name;
+ }
name = xstrdup (fname);
_cpp_simplify_pathname (name);
@@ -453,31 +587,28 @@ _cpp_execute_include (pfile, f, len, no_reinclude, search_start, angle_brackets)
if (inc)
{
- if (inc->fd == -1)
- return;
-
/* For -M, add the file to the dependencies on its first inclusion. */
if (!inc->include_count && PRINT_THIS_DEP (pfile, angle_brackets))
deps_add_dep (pfile->deps, inc->name);
inc->include_count++;
- /* Handle -H option. */
- if (CPP_OPTION (pfile, print_include_names))
- {
- cpp_buffer *fp = CPP_BUFFER (pfile);
- while ((fp = CPP_PREV_BUFFER (fp)) != NULL)
- putc ('.', stderr);
- fprintf (stderr, " %s\n", inc->name);
- }
-
/* Actually process the file. */
- if (no_reinclude)
- inc->cmacro = NEVER_REREAD;
-
- if (read_include_file (pfile, inc))
+ if (stack_include_file (pfile, inc))
{
if (angle_brackets)
pfile->system_include_depth++;
+
+ if (no_reinclude)
+ inc->cmacro = NEVER_REREAD;
+
+ /* Handle -H option. */
+ if (CPP_OPTION (pfile, print_include_names))
+ {
+ cpp_buffer *fp = CPP_BUFFER (pfile);
+ while ((fp = CPP_PREV_BUFFER (fp)) != NULL)
+ putc ('.', stderr);
+ fprintf (stderr, " %s\n", inc->name);
+ }
}
return;
}
@@ -552,23 +683,13 @@ _cpp_compare_file_date (pfile, f, len, angle_brackets)
if (!inc)
return -1;
- if (inc->fd >= 0)
+ if (inc->fd > 0)
{
- struct stat source;
-
- if (fstat (inc->fd, &source) < 0)
- {
- close (inc->fd);
- inc->fd = -1;
- return -1;
- }
- inc->date = source.st_mtime;
close (inc->fd);
inc->fd = -1;
}
- if (inc->date == (time_t)-1 || current_include->date == (time_t)-1)
- return -1;
- return inc->date > current_include->date;
+
+ return inc->st.st_mtime > current_include->st.st_mtime;
}
@@ -584,7 +705,7 @@ cpp_read_file (pfile, fname)
if (fname == NULL)
fname = "";
- f = open_include_file (pfile, fname);
+ f = lookup_include_file (pfile, fname);
if (f == NULL)
{
@@ -592,188 +713,7 @@ cpp_read_file (pfile, fname)
return 0;
}
- return read_include_file (pfile, f);
-}
-
-/* Read the file referenced by INC into a new buffer on PFILE's stack.
- Return 1 if successful, 0 if not. */
-
-static int
-read_include_file (pfile, inc)
- cpp_reader *pfile;
- struct include_file *inc;
-{
- struct stat st;
- ssize_t length;
- cpp_buffer *fp;
- int fd = inc->fd;
-
- fp = cpp_push_buffer (pfile, NULL, 0);
-
- if (fp == 0)
- goto push_fail;
-
- if (fd < 0 || fstat (fd, &st) < 0)
- goto perror_fail;
-
- /* These must be set right away. */
- inc->date = st.st_mtime;
- fp->inc = inc;
- fp->nominal_fname = inc->name;
-
- /* If fd points to a plain file, we might be able to mmap it; we can
- definitely allocate the buffer all at once. If fd is a pipe or
- terminal, we can't do either. If fd is something weird, like a
- block device or a directory, we don't want to read it at all.
-
- Unfortunately, different systems use different st.st_mode values
- for pipes: some have S_ISFIFO, some S_ISSOCK, some are buggy and
- zero the entire struct stat except a couple fields. Hence we don't
- even try to figure out what something is, except for plain files,
- directories, and block devices. */
-
- if (S_ISREG (st.st_mode))
- {
- ssize_t st_size;
-
- /* off_t might have a wider range than ssize_t - in other words,
- the max size of a file might be bigger than the address
- space. We can't handle a file that large. (Anyone with
- a single source file bigger than 2GB needs to rethink
- their coding style.) Some systems (e.g. AIX 4.1) define
- SSIZE_MAX to be much smaller than the actual range of the
- type. Use INTTYPE_MAXIMUM unconditionally to ensure this
- does not bite us. */
- if (st.st_size > INTTYPE_MAXIMUM (ssize_t))
- {
- cpp_error (pfile, "%s is too large", inc->name);
- goto fail;
- }
- st_size = st.st_size;
- length = read_file (fp, fd, st_size);
- if (length == -1)
- goto perror_fail;
- if (length < st_size)
- cpp_warning (pfile, "%s is shorter than expected\n", inc->name);
- }
- else if (S_ISBLK (st.st_mode))
- {
- cpp_error (pfile, "%s is a block device", inc->name);
- goto fail;
- }
- else if (S_ISDIR (st.st_mode))
- {
- cpp_error (pfile, "%s is a directory", inc->name);
- goto fail;
- }
- else
- {
- /* 8 kilobytes is a sensible starting size. It ought to be
- bigger than the kernel pipe buffer, and it's definitely
- bigger than the majority of C source files. */
- length = read_with_read (fp, fd, 8 * 1024);
- if (length == -1)
- goto perror_fail;
- }
-
- if (length == 0)
- inc->cmacro = NEVER_REREAD;
-
- fp->rlimit = fp->buf + length;
- fp->cur = fp->buf;
- fp->lineno = 1;
- fp->line_base = fp->buf;
-
- /* The ->actual_dir field is only used when ignore_srcdir is not in effect;
- see do_include */
- if (!CPP_OPTION (pfile, ignore_srcdir))
- fp->actual_dir = actual_directory (pfile, inc->name);
-
- pfile->include_depth++;
- pfile->input_stack_listing_current = 0;
- if (pfile->cb.enter_file)
- (*pfile->cb.enter_file) (pfile);
- return 1;
-
- perror_fail:
- cpp_error_from_errno (pfile, inc->name);
- /* Do not try to read this file again. */
- if (fd != -1)
- close (fd);
- inc->fd = -1;
- inc->cmacro = NEVER_REREAD;
- fail:
- cpp_pop_buffer (pfile);
- push_fail:
- return 0;
-}
-
-static ssize_t
-read_file (fp, fd, size)
- cpp_buffer *fp;
- int fd;
- ssize_t size;
-{
- static int pagesize = -1;
-
- if (size == 0)
- return 0;
-
- if (pagesize == -1)
- pagesize = getpagesize ();
-
-#if MMAP_THRESHOLD
- if (size / pagesize >= MMAP_THRESHOLD)
- {
- const U_CHAR *result
- = (const U_CHAR *) mmap (0, size, PROT_READ, MAP_PRIVATE, fd, 0);
- if (result != (const U_CHAR *)-1)
- {
- fp->buf = result;
- fp->mapped = 1;
- return size;
- }
- }
- /* If mmap fails, try read. If there's really a problem, read will
- fail too. */
-#endif
-
- return read_with_read (fp, fd, size);
-}
-
-static ssize_t
-read_with_read (fp, fd, size)
- cpp_buffer *fp;
- int fd;
- ssize_t size;
-{
- ssize_t offset, count;
- U_CHAR *buf;
-
- buf = (U_CHAR *) xmalloc (size);
- offset = 0;
- while ((count = read (fd, buf + offset, size - offset)) > 0)
- {
- offset += count;
- if (offset == size)
- buf = xrealloc (buf, (size *= 2));
- }
- if (count < 0)
- {
- free (buf);
- return -1;
- }
- if (offset == 0)
- {
- free (buf);
- return 0;
- }
-
- if (offset < size)
- buf = xrealloc (buf, offset);
- fp->buf = buf;
- fp->mapped = 0;
- return offset;
+ return stack_include_file (pfile, f);
}
/* Do appropriate cleanup when a file buffer is popped off the input
@@ -797,21 +737,9 @@ _cpp_pop_file_buffer (pfile, buf)
}
pfile->input_stack_listing_current = 0;
- /* Discard file buffer. XXX Would be better to cache these instead
- of the file descriptors. */
-#ifdef HAVE_MMAP_FILE
- if (buf->mapped)
- munmap ((caddr_t) buf->buf, buf->rlimit - buf->buf);
- else
-#endif
- free ((PTR) buf->buf);
-
- /* If the file will not be included again, close it. */
- if (DO_NOT_REREAD (inc))
- {
- close (inc->fd);
- inc->fd = -1;
- }
+ inc->refcnt--;
+ if (inc->refcnt == 0 && DO_NOT_REREAD (inc))
+ purge_cache (inc);
}
/* The file_name_map structure holds a mapping of file names for a
diff --git a/gcc/cpphash.h b/gcc/cpphash.h
index 45abb691975..41d5b9e5a7f 100644
--- a/gcc/cpphash.h
+++ b/gcc/cpphash.h
@@ -115,12 +115,24 @@ struct include_file
const struct file_name_list *foundhere;
/* location in search path where file was
found, for #include_next */
- int fd; /* file descriptor possibly open on file */
+ const unsigned char *buffer; /* pointer to cached file contents */
+ struct stat st; /* copy of stat(2) data for file */
+ int fd; /* fd open on file (short term storage only) */
unsigned short include_count; /* number of times file has been read */
- unsigned short sysp; /* file is a system header */
- time_t date; /* modification date of file, if known */
+ unsigned short refcnt; /* number of stacked buffers using this file */
+ unsigned char sysp; /* file is a system header */
+ unsigned char mapped; /* file buffer is mmapped */
};
+/* The cmacro works like this: If it's NULL, the file is to be
+ included again. If it's NEVER_REREAD, the file is never to be
+ included again. Otherwise it is a macro hashnode, and the file is
+ to be included again if the macro is not defined. */
+#define NEVER_REREAD ((const cpp_hashnode *)-1)
+#define DO_NOT_REREAD(inc) \
+((inc)->cmacro && \
+ ((inc)->cmacro == NEVER_REREAD || (inc)->cmacro->type != T_VOID))
+
/* Special nodes - identifiers with predefined significance.
Note that the array length of dirs[] must be kept in sync with
cpplib.c's dtable[]. */
@@ -133,16 +145,6 @@ struct spec_nodes
cpp_hashnode *dirs[19]; /* 19 directives counting #sccs */
};
-
-/* The cmacro works like this: If it's NULL, the file is to be
- included again. If it's NEVER_REREAD, the file is never to be
- included again. Otherwise it is a macro hashnode, and the file is
- to be included again if the macro is not defined. */
-#define NEVER_REREAD ((const cpp_hashnode *)-1)
-#define DO_NOT_REREAD(inc) \
-((inc)->cmacro && \
- ((inc)->cmacro == NEVER_REREAD || (inc)->cmacro->type != T_VOID))
-
/* Character classes.
If the definition of `numchar' looks odd to you, please look up the
definition of a pp-number in the C standard [section 6.4.8 of C99].
@@ -293,6 +295,7 @@ extern void _cpp_init_internal_pragmas PARAMS ((cpp_reader *));
/* Utility routines and macros. */
#define xnew(T) (T *) xmalloc (sizeof(T))
+#define xcnew(T) (T *) xcalloc (1, sizeof(T))
#define xnewvec(T, N) (T *) xmalloc (sizeof(T) * (N))
#define xcnewvec(T, N) (T *) xcalloc (N, sizeof(T))
#define xobnew(O, T) (T *) obstack_alloc (O, sizeof(T))
diff --git a/gcc/cppinit.c b/gcc/cppinit.c
index fbccfc358ed..f8dc69000ee 100644
--- a/gcc/cppinit.c
+++ b/gcc/cppinit.c
@@ -598,6 +598,7 @@ initialize_builtins (pfile)
cpp_reader *pfile;
{
const struct builtin *b;
+
for(b = builtin_array; b < builtin_array_end; b++)
{
if (b->flags & CPLUS && ! CPP_OPTION (pfile, cplusplus))
@@ -617,7 +618,7 @@ initialize_builtins (pfile)
else
{
if (b->flags & ULP)
- val = user_label_prefix;
+ val = CPP_OPTION (pfile, user_label_prefix);
else
val = b->value;
@@ -825,8 +826,8 @@ cpp_start_read (pfile, print, fname)
CPP_OPTION (pfile, warn_paste) = 0;
/* Set this if it hasn't been set already. */
- if (user_label_prefix == NULL)
- user_label_prefix = USER_LABEL_PREFIX;
+ if (CPP_OPTION (pfile, user_label_prefix) == NULL)
+ CPP_OPTION (pfile, user_label_prefix) = USER_LABEL_PREFIX;
/* Figure out if we need to save function macro parameter spellings.
We don't use CPP_PEDANTIC() here because that depends on whether
@@ -1224,10 +1225,10 @@ cpp_handle_option (pfile, argc, argv)
case N_OPTS: /* shut GCC up */
break;
case OPT_fleading_underscore:
- user_label_prefix = "_";
+ CPP_OPTION (pfile, user_label_prefix) = "_";
break;
case OPT_fno_leading_underscore:
- user_label_prefix = "";
+ CPP_OPTION (pfile, user_label_prefix) = "";
break;
case OPT_fpreprocessed:
CPP_OPTION (pfile, preprocessed) = 1;
diff --git a/gcc/cpplex.c b/gcc/cpplex.c
index 1ad6a0429f8..a7abbb597bd 100644
--- a/gcc/cpplex.c
+++ b/gcc/cpplex.c
@@ -1123,12 +1123,23 @@ parse_string (pfile, list, token, terminator)
if (is_vspace (c))
{
/* Drop a backslash newline, and continue. */
+ U_CHAR *old = namebuf;
+ while (namebuf > list->namebuf && is_hspace (namebuf[-1]))
+ namebuf--;
if (namebuf > list->namebuf && namebuf[-1] == '\\')
{
handle_newline (cur, buffer->rlimit, c);
namebuf--;
+ if (old[-1] != '\\')
+ {
+ buffer->cur = cur;
+ cpp_warning (pfile,
+ "backslash and newline separated by space");
+ }
continue;
}
+ else
+ namebuf = old;
cur--;
@@ -1533,37 +1544,40 @@ lex_line (pfile, list)
handle_newline (cur, buffer->rlimit, c);
if (PREV_TOKEN_TYPE == CPP_BACKSLASH)
{
- if (IMMED_TOKEN ())
- {
- /* Remove the escaped newline. Then continue to process
- any interrupted name or number. */
- cur_token--;
- /* Backslash-newline may not be immediately followed by
- EOF (C99 5.1.1.2). */
- if (cur >= buffer->rlimit)
- {
- cpp_pedwarn (pfile, "backslash-newline at end of file");
- break;
- }
- if (IMMED_TOKEN ())
- {
- cur_token--;
- if (cur_token->type == CPP_NAME)
- goto continue_name;
- else if (cur_token->type == CPP_NUMBER)
- goto continue_number;
- cur_token++;
- }
- /* Remember whitespace setting. */
- flags = cur_token->flags;
- break;
- }
- else
+ /* backslash space newline is still treated as backslash-newline;
+ we think this is standard conforming, with some reservations
+ about actually _using_ the weasel words in C99 5.1.1.2
+ (translation phase 1 is allowed to do whatever it wants to
+ your input as long as it's documented). */
+ if (! IMMED_TOKEN ())
{
buffer->cur = cur;
cpp_warning (pfile,
"backslash and newline separated by space");
}
+
+ /* Remove the escaped newline. Then continue to process
+ any interrupted name or number. */
+ cur_token--;
+ /* Backslash-newline may not be immediately followed by
+ EOF (C99 5.1.1.2). */
+ if (cur >= buffer->rlimit)
+ {
+ cpp_pedwarn (pfile, "backslash-newline at end of file");
+ break;
+ }
+ if (IMMED_TOKEN ())
+ {
+ cur_token--;
+ if (cur_token->type == CPP_NAME)
+ goto continue_name;
+ else if (cur_token->type == CPP_NUMBER)
+ goto continue_number;
+ cur_token++;
+ }
+ /* Remember whitespace setting. */
+ flags = cur_token->flags;
+ break;
}
else if (MIGHT_BE_DIRECTIVE ())
{
@@ -3204,12 +3218,6 @@ _cpp_get_token (pfile)
if (is_macro_disabled (pfile, node->value.expansion, token))
return token;
- if (pfile->cur_context > CPP_STACK_MAX)
- {
- cpp_error (pfile, "macros nested too deep invoking '%s'", node->name);
- return token;
- }
-
if (push_macro_context (pfile, token))
return token;
/* else loop */
diff --git a/gcc/cpplib.h b/gcc/cpplib.h
index 1163c2e289c..9793bc0e922 100644
--- a/gcc/cpplib.h
+++ b/gcc/cpplib.h
@@ -28,7 +28,10 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
extern "C" {
#endif
+/* For complex reasons, cpp_reader is also typedefed in c-pragma.h. */
+#ifndef _C_PRAGMA_H
typedef struct cpp_reader cpp_reader;
+#endif
typedef struct cpp_buffer cpp_buffer;
typedef struct cpp_options cpp_options;
typedef struct cpp_printer cpp_printer;
@@ -243,9 +246,6 @@ struct cpp_buffer
or for -Wtraditional, and only once per file (otherwise it would
be far too noisy). */
char warned_cplusplus_comments;
-
- /* True if this buffer's data is mmapped. */
- char mapped;
};
struct file_name_map_list;
@@ -298,6 +298,9 @@ struct cpp_options
const char *include_prefix;
unsigned int include_prefix_len;
+ /* -fleading_underscore sets this to "_". */
+ const char *user_label_prefix;
+
/* Non-0 means -v, so print the full set of include dirs. */
unsigned char verbose;
diff --git a/gcc/cppmacro.c b/gcc/cppmacro.c
index 3c9ffb97483..2b16fd4757c 100644
--- a/gcc/cppmacro.c
+++ b/gcc/cppmacro.c
@@ -52,6 +52,9 @@ static const cpp_toklist * save_expansion PARAMS((cpp_reader *,
static unsigned int find_param PARAMS ((const cpp_token *,
const cpp_token *));
static cpp_toklist * alloc_macro PARAMS ((cpp_reader *, struct macro_info *));
+static void check_trad_stringification PARAMS ((cpp_reader *,
+ const struct macro_info *,
+ const cpp_string *));
/* These are all the tokens that can have something pasted after them.
Comma is included in the list only to support the GNU varargs extension
@@ -502,6 +505,12 @@ save_expansion (pfile, info)
continue;
break;
+ case CPP_STRING:
+ case CPP_CHAR:
+ if (CPP_WTRADITIONAL (pfile) && list->paramc > 0)
+ check_trad_stringification (pfile, info, &token->val.str);
+ break;
+
default:
break;
}
@@ -618,3 +627,46 @@ dump_macro_args (fp, list)
}
putc (')', fp);
}
+
+/* Warn if a token in `string' matches one of the function macro
+ arguments in `info'. This function assumes that the macro is a
+ function macro and not an object macro. */
+static void
+check_trad_stringification (pfile, info, string)
+ cpp_reader *pfile;
+ const struct macro_info *info;
+ const cpp_string *string;
+{
+ const U_CHAR *p, *q, *limit = string->text + string->len;
+
+ /* Loop over the string. */
+ for (p = string->text; p < limit; p = q)
+ {
+ const cpp_token *token;
+
+ /* Find the start of an identifier. */
+ while (!is_idstart (*p) && p < limit) p++;
+
+ /* Find the end of the identifier. */
+ q = p;
+ while (is_idchar (*q) && q < limit) q++;
+
+ /* Loop over the function macro arguments to see if the
+ identifier inside the string matches one of them. */
+ for (token = info->first_param; token < info->first; token++)
+ {
+ /* Skip the commas in between the arguments. */
+ if (token->type != CPP_NAME)
+ continue;
+
+ if (token->val.node->length == (q - p)
+ && !memcmp (p, token->val.node->name, (q - p)))
+ {
+ cpp_warning (pfile,
+ "macro arg \"%.*s\" would be stringified with -traditional.",
+ (int) (q - p), p);
+ break;
+ }
+ }
+ }
+}
diff --git a/gcc/cppulp.c b/gcc/cppulp.c
deleted file mode 100644
index c419f4a5293..00000000000
--- a/gcc/cppulp.c
+++ /dev/null
@@ -1,27 +0,0 @@
-/* CPP Library.
- Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999 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
-
-This program is free software; you can redistribute it and/or modify it
-under the terms of the GNU General Public License as published by the
-Free Software Foundation; either version 2, or (at your option) any
-later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-#include "config.h"
-#include "system.h"
-
-#include "output.h"
-
-const char *user_label_prefix = 0;
diff --git a/gcc/cse.c b/gcc/cse.c
index f9348fbabeb..2396889c7d0 100644
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -730,7 +730,7 @@ approx_reg_cost_1 (xp, data)
/* Return an estimate of the cost of the registers used in an rtx.
This is mostly the number of different REG expressions in the rtx;
however for some excecptions like fixed registers we use a cost of
- 0. */
+ 0. If any other hard register reference occurs, return MAX_COST. */
static int
approx_reg_cost (x)
@@ -739,6 +739,7 @@ approx_reg_cost (x)
regset_head set;
int i;
int cost = 0;
+ int hardregs = 0;
INIT_REG_SET (&set);
for_each_rtx (&x, approx_reg_cost_1, (void *)&set);
@@ -747,11 +748,16 @@ approx_reg_cost (x)
(&set, 0, i,
{
if (! CHEAP_REGNO (i))
- cost++;
+ {
+ if (i < FIRST_PSEUDO_REGISTER)
+ hardregs++;
+
+ cost += i < FIRST_PSEUDO_REGISTER ? 2 : 1;
+ }
});
CLEAR_REG_SET (&set);
- return cost;
+ return hardregs && SMALL_REGISTER_CLASSES ? MAX_COST : cost;
}
/* Return a negative value if an rtx A, whose costs are given by COST_A
@@ -762,8 +768,29 @@ static int
preferrable (cost_a, regcost_a, cost_b, regcost_b)
int cost_a, regcost_a, cost_b, regcost_b;
{
+ /* First, get rid of a cases involving expressions that are entirely
+ unwanted. */
+ if (cost_a != cost_b)
+ {
+ if (cost_a == MAX_COST)
+ return 1;
+ if (cost_b == MAX_COST)
+ return -1;
+ }
+
+ /* Avoid extending lifetimes of hardregs. */
+ if (regcost_a != regcost_b)
+ {
+ if (regcost_a == MAX_COST)
+ return 1;
+ if (regcost_b == MAX_COST)
+ return -1;
+ }
+
+ /* Normal operation costs take precedence. */
if (cost_a != cost_b)
return cost_a - cost_b;
+ /* Only if these are identical consider effects on register pressure. */
if (regcost_a != regcost_b)
return regcost_a - regcost_b;
return 0;
@@ -789,12 +816,6 @@ notreg_cost (x)
: rtx_cost (x, SET) * 2);
}
-/* Return the right cost to give to an operation
- to make the cost of the corresponding register-to-register instruction
- N times that of a fast register-to-register instruction. */
-
-#define COSTS_N_INSNS(N) ((N) * 2)
-
/* Return an estimate of the cost of computing rtx X.
One use is in cse, to decide which expression to keep in the hash table.
Another is in rtl generation, to pick the cheapest way to multiply.
@@ -2331,6 +2352,28 @@ canon_hash (x, mode)
x = XEXP (x, 0);
goto repeat;
+ case USE:
+ /* A USE that mentions non-volatile memory needs special
+ handling since the MEM may be BLKmode which normally
+ prevents an entry from being made. Pure calls are
+ marked by a USE which mentions BLKmode memory. */
+ if (GET_CODE (XEXP (x, 0)) == MEM
+ && ! MEM_VOLATILE_P (XEXP (x, 0)))
+ {
+ hash += (unsigned)USE;
+ x = XEXP (x, 0);
+
+ if (! RTX_UNCHANGING_P (x) || FIXED_BASE_PLUS_P (XEXP (x, 0)))
+ hash_arg_in_memory = 1;
+
+ /* Now that we have already found this special case,
+ might as well speed it up as much as possible. */
+ hash += (unsigned) MEM;
+ x = XEXP (x, 0);
+ goto repeat;
+ }
+ break;
+
case PRE_DEC:
case PRE_INC:
case POST_DEC:
@@ -3611,6 +3654,13 @@ fold_rtx (x, insn)
return x;
}
+#ifdef NO_FUNCTION_CSE
+ case CALL:
+ if (CONSTANT_P (XEXP (XEXP (x, 0), 0)))
+ return x;
+ break;
+#endif
+
case ASM_OPERANDS:
for (i = ASM_OPERANDS_INPUT_LENGTH (x) - 1; i >= 0; i--)
validate_change (insn, &ASM_OPERANDS_INPUT (x, i),
@@ -4874,8 +4924,8 @@ cse_insn (insn, libcall_insn)
rtx src_const = 0;
rtx src_related = 0;
struct table_elt *src_const_elt = 0;
- int src_cost = 10000, src_eqv_cost = 10000, src_folded_cost = 10000;
- int src_related_cost = 10000, src_elt_cost = 10000;
+ int src_cost = MAX_COST, src_eqv_cost = MAX_COST, src_folded_cost = MAX_COST;
+ int src_related_cost = MAX_COST, src_elt_cost = MAX_COST;
int src_regcost, src_eqv_regcost, src_folded_regcost;
int src_related_regcost, src_elt_regcost;
/* Set non-zero if we need to call force_const_mem on with the
@@ -5284,7 +5334,7 @@ cse_insn (insn, libcall_insn)
if (src)
{
if (rtx_equal_p (src, dest))
- src_cost = -1;
+ src_cost = src_regcost = -1;
else
{
src_cost = COST (src);
@@ -5295,7 +5345,7 @@ cse_insn (insn, libcall_insn)
if (src_eqv_here)
{
if (rtx_equal_p (src_eqv_here, dest))
- src_eqv_cost = -1;
+ src_eqv_cost = src_eqv_regcost = -1;
else
{
src_eqv_cost = COST (src_eqv_here);
@@ -5306,7 +5356,7 @@ cse_insn (insn, libcall_insn)
if (src_folded)
{
if (rtx_equal_p (src_folded, dest))
- src_folded_cost = -1;
+ src_folded_cost = src_folded_regcost = -1;
else
{
src_folded_cost = COST (src_folded);
@@ -5317,7 +5367,7 @@ cse_insn (insn, libcall_insn)
if (src_related)
{
if (rtx_equal_p (src_related, dest))
- src_related_cost = -1;
+ src_related_cost = src_related_regcost = -1;
else
{
src_related_cost = COST (src_related);
@@ -5328,7 +5378,7 @@ cse_insn (insn, libcall_insn)
/* If this was an indirect jump insn, a known label will really be
cheaper even though it looks more expensive. */
if (dest == pc_rtx && src_const && GET_CODE (src_const) == LABEL_REF)
- src_folded = src_const, src_folded_cost = -1;
+ src_folded = src_const, src_folded_cost = src_folded_regcost -1;
/* Terminate loop when replacement made. This must terminate since
the current contents will be tested and will always be valid. */
@@ -5378,7 +5428,7 @@ cse_insn (insn, libcall_insn)
&& preferrable (src_folded_cost, src_folded_regcost,
src_elt_cost, src_elt_regcost) <= 0)
{
- trial = src_folded, src_folded_cost = 10000;
+ trial = src_folded, src_folded_cost = MAX_COST;
if (src_folded_force_flag)
trial = force_const_mem (mode, trial);
}
@@ -5388,20 +5438,20 @@ cse_insn (insn, libcall_insn)
src_related_cost, src_related_regcost) <= 0
&& preferrable (src_cost, src_regcost,
src_elt_cost, src_elt_regcost) <= 0)
- trial = src, src_cost = 10000;
+ trial = src, src_cost = MAX_COST;
else if (preferrable (src_eqv_cost, src_eqv_regcost,
src_related_cost, src_related_regcost) <= 0
&& preferrable (src_eqv_cost, src_eqv_regcost,
src_elt_cost, src_elt_regcost) <= 0)
- trial = copy_rtx (src_eqv_here), src_eqv_cost = 10000;
+ trial = copy_rtx (src_eqv_here), src_eqv_cost = MAX_COST;
else if (preferrable (src_related_cost, src_related_regcost,
src_elt_cost, src_elt_regcost) <= 0)
- trial = copy_rtx (src_related), src_related_cost = 10000;
+ trial = copy_rtx (src_related), src_related_cost = MAX_COST;
else
{
trial = copy_rtx (elt->exp);
elt = elt->next_same_value;
- src_elt_cost = 10000;
+ src_elt_cost = MAX_COST;
}
/* We don't normally have an insn matching (set (pc) (pc)), so
@@ -5732,9 +5782,15 @@ cse_insn (insn, libcall_insn)
else if (do_not_record)
{
- if (GET_CODE (dest) == REG || GET_CODE (dest) == SUBREG
- || GET_CODE (dest) == MEM)
+ if (GET_CODE (dest) == REG || GET_CODE (dest) == SUBREG)
invalidate (dest, VOIDmode);
+ else if (GET_CODE (dest) == MEM)
+ {
+ /* Outgoing arguments for a libcall don't
+ affect any recorded expressions. */
+ if (! libcall_insn || insn == libcall_insn)
+ invalidate (dest, VOIDmode);
+ }
else if (GET_CODE (dest) == STRICT_LOW_PART
|| GET_CODE (dest) == ZERO_EXTRACT)
invalidate (XEXP (dest, 0), GET_MODE (dest));
@@ -5891,9 +5947,15 @@ cse_insn (insn, libcall_insn)
previous quantity's chain.
Needed for memory if this is a nonvarying address, unless
we have just done an invalidate_memory that covers even those. */
- if (GET_CODE (dest) == REG || GET_CODE (dest) == SUBREG
- || GET_CODE (dest) == MEM)
+ if (GET_CODE (dest) == REG || GET_CODE (dest) == SUBREG)
invalidate (dest, VOIDmode);
+ else if (GET_CODE (dest) == MEM)
+ {
+ /* Outgoing arguments for a libcall don't
+ affect any recorded expressions. */
+ if (! libcall_insn || insn == libcall_insn)
+ invalidate (dest, VOIDmode);
+ }
else if (GET_CODE (dest) == STRICT_LOW_PART
|| GET_CODE (dest) == ZERO_EXTRACT)
invalidate (XEXP (dest, 0), GET_MODE (dest));
diff --git a/gcc/defaults.h b/gcc/defaults.h
index b551fea125f..13772aa934b 100644
--- a/gcc/defaults.h
+++ b/gcc/defaults.h
@@ -1,7 +1,8 @@
/* Definitions of various defaults for how to do assembler output
(most of which are designed to be appropriate for GAS or for
some BSD assembler).
- Copyright (C) 1992, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1992, 1996, 1997, 1998, 1999, 2000
+ Free Software Foundation, Inc.
Contributed by Ron Guilmette (rfg@monkeys.com)
This file is part of GNU CC.
@@ -21,6 +22,9 @@ along with GNU CC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
+#ifndef GCC_DEFAULTS_H
+#define GCC_DEFAULTS_H
+
/* Store in OUTPUT a string (made with alloca) containing
an assembler-name for a local static variable or function named NAME.
LABELNO is an integer which is different for each call. */
@@ -194,3 +198,50 @@ do { ASM_OUTPUT_LABEL(FILE,LABEL_ALTERNATE_NAME (INSN)); } while (0)
#ifndef DWARF_FRAME_REGISTERS
#define DWARF_FRAME_REGISTERS FIRST_PSEUDO_REGISTER
#endif
+
+/* Default sizes for base C types. If the sizes are different for
+ your target, you should override these values by defining the
+ appropriate symbols in your tm.h file. */
+
+#ifndef CHAR_TYPE_SIZE
+#define CHAR_TYPE_SIZE BITS_PER_UNIT
+#endif
+
+#ifndef SHORT_TYPE_SIZE
+#define SHORT_TYPE_SIZE (BITS_PER_UNIT * MIN ((UNITS_PER_WORD + 1) / 2, 2))
+#endif
+
+#ifndef INT_TYPE_SIZE
+#define INT_TYPE_SIZE BITS_PER_WORD
+#endif
+
+#ifndef LONG_TYPE_SIZE
+#define LONG_TYPE_SIZE BITS_PER_WORD
+#endif
+
+#ifndef LONG_LONG_TYPE_SIZE
+#define LONG_LONG_TYPE_SIZE (BITS_PER_WORD * 2)
+#endif
+
+#ifndef WCHAR_TYPE_SIZE
+#define WCHAR_TYPE_SIZE INT_TYPE_SIZE
+#endif
+
+#ifndef WCHAR_UNSIGNED
+#define WCHAR_UNSIGNED 0
+#endif
+
+#ifndef FLOAT_TYPE_SIZE
+#define FLOAT_TYPE_SIZE BITS_PER_WORD
+#endif
+
+#ifndef DOUBLE_TYPE_SIZE
+#define DOUBLE_TYPE_SIZE (BITS_PER_WORD * 2)
+#endif
+
+#ifndef LONG_DOUBLE_TYPE_SIZE
+#define LONG_DOUBLE_TYPE_SIZE (BITS_PER_WORD * 2)
+#endif
+
+#endif /* GCC_DEFAULTS_H */
+
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 27d2663ec5d..de67f8553b6 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -139,15 +139,6 @@ dw_fde_node;
/* Maximum size (in bytes) of an artificially generated label. */
#define MAX_ARTIFICIAL_LABEL_BYTES 30
-/* Make sure we know the sizes of the various types dwarf can describe. These
- are only defaults. If the sizes are different for your target, you should
- override these values by defining the appropriate symbols in your tm.h
- file. */
-
-#ifndef CHAR_TYPE_SIZE
-#define CHAR_TYPE_SIZE BITS_PER_UNIT
-#endif
-
/* The size of the target's pointer type. */
#ifndef PTR_SIZE
#define PTR_SIZE (POINTER_SIZE / BITS_PER_UNIT)
diff --git a/gcc/dwarfout.c b/gcc/dwarfout.c
index 7df90f20b8f..098fbd8d024 100644
--- a/gcc/dwarfout.c
+++ b/gcc/dwarfout.c
@@ -97,51 +97,6 @@ extern int flag_traditional;
#define MAX_ARTIFICIAL_LABEL_BYTES 30
-/* Make sure we know the sizes of the various types dwarf can describe.
- These are only defaults. If the sizes are different for your target,
- you should override these values by defining the appropriate symbols
- in your tm.h file. */
-
-#ifndef CHAR_TYPE_SIZE
-#define CHAR_TYPE_SIZE BITS_PER_UNIT
-#endif
-
-#ifndef SHORT_TYPE_SIZE
-#define SHORT_TYPE_SIZE (BITS_PER_UNIT * MIN ((UNITS_PER_WORD + 1) / 2, 2))
-#endif
-
-#ifndef INT_TYPE_SIZE
-#define INT_TYPE_SIZE BITS_PER_WORD
-#endif
-
-#ifndef LONG_TYPE_SIZE
-#define LONG_TYPE_SIZE BITS_PER_WORD
-#endif
-
-#ifndef LONG_LONG_TYPE_SIZE
-#define LONG_LONG_TYPE_SIZE (BITS_PER_WORD * 2)
-#endif
-
-#ifndef WCHAR_TYPE_SIZE
-#define WCHAR_TYPE_SIZE INT_TYPE_SIZE
-#endif
-
-#ifndef WCHAR_UNSIGNED
-#define WCHAR_UNSIGNED 0
-#endif
-
-#ifndef FLOAT_TYPE_SIZE
-#define FLOAT_TYPE_SIZE BITS_PER_WORD
-#endif
-
-#ifndef DOUBLE_TYPE_SIZE
-#define DOUBLE_TYPE_SIZE (BITS_PER_WORD * 2)
-#endif
-
-#ifndef LONG_DOUBLE_TYPE_SIZE
-#define LONG_DOUBLE_TYPE_SIZE (BITS_PER_WORD * 2)
-#endif
-
/* Structure to keep track of source filenames. */
struct filename_entry {
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c
index 9eb9639e7d5..3fb272dd4c0 100644
--- a/gcc/emit-rtl.c
+++ b/gcc/emit-rtl.c
@@ -54,6 +54,7 @@ Boston, MA 02111-1307, USA. */
#include "bitmap.h"
#include "basic-block.h"
#include "ggc.h"
+#include "defaults.h"
/* Commonly used modes. */
@@ -4076,10 +4077,6 @@ init_emit_once (line_numbers)
word_mode = mode;
}
-#ifndef DOUBLE_TYPE_SIZE
-#define DOUBLE_TYPE_SIZE (BITS_PER_WORD * 2)
-#endif
-
for (mode = GET_CLASS_NARROWEST_MODE (MODE_FLOAT); mode != VOIDmode;
mode = GET_MODE_WIDER_MODE (mode))
{
diff --git a/gcc/expr.c b/gcc/expr.c
index 7d7f92dab30..edbdc2c1806 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -6618,9 +6618,16 @@ expand_expr (exp, target, tmode, modifier)
else if (TREE_CODE (init) == STRING_CST
&& 0 > compare_tree_int (index,
TREE_STRING_LENGTH (init)))
- return (GEN_INT
- (TREE_STRING_POINTER
- (init)[TREE_INT_CST_LOW (index)]));
+ {
+ tree type = TREE_TYPE (TREE_TYPE (init));
+ enum machine_mode mode = TYPE_MODE (type);
+
+ if (GET_MODE_CLASS (mode) == MODE_INT
+ && GET_MODE_SIZE (mode) == 1)
+ return (GEN_INT
+ (TREE_STRING_POINTER
+ (init)[TREE_INT_CST_LOW (index)]));
+ }
}
}
}
diff --git a/gcc/f/ChangeLog b/gcc/f/ChangeLog
index 19ca3799276..4ca227248b8 100644
--- a/gcc/f/ChangeLog
+++ b/gcc/f/ChangeLog
@@ -1,3 +1,9 @@
+2000-09-10 Zack Weinberg <zack@wolery.cumb.org>
+
+ * com.c: Include defaults.h.
+ * com.h: Don't define the *_TYPE_SIZE macros.
+ * Makefile.in: Update dependencies.
+
2000-08-29 Zack Weinberg <zack@wolery.cumb.org>
* ansify.c: Use #line, not # <number>.
diff --git a/gcc/f/Makefile.in b/gcc/f/Makefile.in
index a6f389911de..ccc1ed095d6 100644
--- a/gcc/f/Makefile.in
+++ b/gcc/f/Makefile.in
@@ -240,6 +240,7 @@ SYSTEM_H = $(srcdir)/../system.h
TOPLEV_H = $(srcdir)/../toplev.h
TREE_H = $(srcdir)/../tree.h $(srcdir)/../real.h \
$(srcdir)/../tree.def $(srcdir)/../machmode.h $(srcdir)/../machmode.def
+DEFAULTS_H = $(srcdir)/../defaults.h
ansify.o: ansify.c $(HCONFIG_H) $(SYSTEM_H) $(ASSERT_H)
bad.o: bad.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) bad.h bad.def where.h \
@@ -254,12 +255,12 @@ bld.o: bld.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) bld.h bld-op.def bit.h \
info-w.def target.h bad.h bad.def where.h $(GLIMITS_H) top.h lex.h \
type.h lab.h storag.h symbol.h symbol.def equiv.h global.h name.h \
intrin.h intrin.def
-com.o: com.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) $(FLAGS_H) $(RTL_H) $(TOPLEV_H) \
+com.o: com.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) $(FLAGS_H) $(RTL_H) \
$(TREE_H) $(OUTPUT_H) $(CONVERT_H) com.h com-rt.def bld.h bld-op.def bit.h \
malloc.h info.h info-b.def info-k.def info-w.def target.h bad.h \
bad.def where.h $(GLIMITS_H) top.h lex.h type.h intrin.h intrin.def \
lab.h symbol.h symbol.def equiv.h storag.h global.h name.h expr.h \
- implic.h src.h st.h $(GGC_H)
+ implic.h src.h st.h $(GGC_H) $(TOPLEV_H) $(DEFAULTS_H)
data.o: data.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) data.h bld.h \
bld-op.def bit.h malloc.h com.h com-rt.def $(TREE_H) info.h info-b.def \
info-k.def info-w.def target.h bad.h bad.def where.h $(GLIMITS_H) top.h \
diff --git a/gcc/f/com.c b/gcc/f/com.c
index 93d8c44e3a8..c3a50e92a20 100644
--- a/gcc/f/com.c
+++ b/gcc/f/com.c
@@ -95,6 +95,7 @@ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "output.h" /* Must follow tree.h so TREE_CODE is defined! */
#include "convert.h"
#include "ggc.h"
+#include "defaults.h"
#endif /* FFECOM_targetCURRENT == FFECOM_targetGCC */
#define FFECOM_GCC_INCLUDE 1 /* Enable -I. */
diff --git a/gcc/f/com.h b/gcc/f/com.h
index 15576979b84..d0dfe8f84bc 100644
--- a/gcc/f/com.h
+++ b/gcc/f/com.h
@@ -84,49 +84,6 @@ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
to build the libf2c with which g77-generated code is linked, or there
will probably be bugs, some of them difficult to detect or even trigger. */
-/* Do we need int (for 32-bit or 64-bit systems) or long (16-bit or
- normally 32-bit) for f2c-type integers? */
-
-#ifndef BITS_PER_WORD
-#define BITS_PER_WORD 32
-#endif
-
-#ifndef CHAR_TYPE_SIZE
-#define CHAR_TYPE_SIZE BITS_PER_UNIT
-#endif
-
-#ifndef SHORT_TYPE_SIZE
-#define SHORT_TYPE_SIZE (BITS_PER_UNIT * MIN ((UNITS_PER_WORD + 1) / 2, 2))
-#endif
-
-#ifndef INT_TYPE_SIZE
-#define INT_TYPE_SIZE BITS_PER_WORD
-#endif
-
-#ifndef LONG_TYPE_SIZE
-#define LONG_TYPE_SIZE BITS_PER_WORD
-#endif
-
-#ifndef LONG_LONG_TYPE_SIZE
-#define LONG_LONG_TYPE_SIZE (BITS_PER_WORD * 2)
-#endif
-
-#ifndef WCHAR_UNSIGNED
-#define WCHAR_UNSIGNED 0
-#endif
-
-#ifndef FLOAT_TYPE_SIZE
-#define FLOAT_TYPE_SIZE BITS_PER_WORD
-#endif
-
-#ifndef DOUBLE_TYPE_SIZE
-#define DOUBLE_TYPE_SIZE (BITS_PER_WORD * 2)
-#endif
-
-#ifndef LONG_DOUBLE_TYPE_SIZE
-#define LONG_DOUBLE_TYPE_SIZE (BITS_PER_WORD * 2)
-#endif
-
/* The C front-end provides __g77_integer and __g77_uinteger types so that
the appropriately-sized signed and unsigned integer types are available
for libf2c. If you change this, also the definitions of those types
diff --git a/gcc/f/version.c b/gcc/f/version.c
index 0e640f91bec..1c2e163b411 100644
--- a/gcc/f/version.c
+++ b/gcc/f/version.c
@@ -1 +1 @@
-const char *ffe_version_string = "0.5.26 20000907 (experimental)";
+const char *ffe_version_string = "0.5.26 20000914 (experimental)";
diff --git a/gcc/final.c b/gcc/final.c
index e580d5ba0ca..c22df2f4c96 100644
--- a/gcc/final.c
+++ b/gcc/final.c
@@ -19,7 +19,6 @@ along with GNU CC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
-
/* This is the final pass of the compiler.
It looks at the rtl code for a function and outputs assembler code.
@@ -111,14 +110,6 @@ Boston, MA 02111-1307, USA. */
#define N_SOL 0x84
#endif
-#ifndef INT_TYPE_SIZE
-#define INT_TYPE_SIZE BITS_PER_WORD
-#endif
-
-#ifndef LONG_TYPE_SIZE
-#define LONG_TYPE_SIZE BITS_PER_WORD
-#endif
-
/* If we aren't using cc0, CC_STATUS_INIT shouldn't exist. So define a
null default for it to save conditionalization later. */
#ifndef CC_STATUS_INIT
@@ -249,7 +240,8 @@ rtx current_insn_predicate;
/* Linked list to hold line numbers for each basic block. */
-struct bb_list {
+struct bb_list
+{
struct bb_list *next; /* pointer to next basic block */
int line_num; /* line number */
int file_label_num; /* LPBC<n> label # for stored filename */
@@ -263,7 +255,8 @@ static int bb_func_label_num = -1; /* Current label # for func */
/* Linked list to hold the strings for each file and function name output. */
-struct bb_str {
+struct bb_str
+{
struct bb_str *next; /* pointer to next string */
const char *string; /* string */
int label_num; /* label number */
@@ -317,7 +310,7 @@ init_final (filename)
void
end_final (filename)
- const char *filename;
+ const char *filename;
{
int i;
@@ -461,8 +454,8 @@ end_final (filename)
else
#endif
#ifdef ASM_OUTPUT_ALIGNED_DECL_LOCAL
- ASM_OUTPUT_ALIGNED_DECL_LOCAL (asm_out_file, NULL_TREE, name, size,
- BIGGEST_ALIGNMENT);
+ ASM_OUTPUT_ALIGNED_DECL_LOCAL (asm_out_file, NULL_TREE, name,
+ size, BIGGEST_ALIGNMENT);
#else
#ifdef ASM_OUTPUT_ALIGNED_LOCAL
ASM_OUTPUT_ALIGNED_LOCAL (asm_out_file, name, size,
@@ -520,7 +513,7 @@ end_final (filename)
assemble_integer (const0_rtx, pointer_bytes, 1);
}
- for ( ; i < count_basic_blocks; i++)
+ for (; i < count_basic_blocks; i++)
assemble_integer (const0_rtx, pointer_bytes, 1);
}
@@ -531,7 +524,7 @@ end_final (filename)
for ((ptr = bb_head), (i = 0); ptr != 0; (ptr = ptr->next), i++)
assemble_integer (GEN_INT (ptr->line_num), long_bytes, 1);
- for ( ; i < count_basic_blocks; i++)
+ for (; i < count_basic_blocks; i++)
assemble_integer (const0_rtx, long_bytes, 1);
/* Output the table of file names. */
@@ -549,7 +542,7 @@ end_final (filename)
assemble_integer (const0_rtx, pointer_bytes, 1);
}
- for ( ; i < count_basic_blocks; i++)
+ for (; i < count_basic_blocks; i++)
assemble_integer (const0_rtx, pointer_bytes, 1);
}
@@ -590,7 +583,7 @@ app_disable ()
}
}
-/* Return the number of slots filled in the current
+/* Return the number of slots filled in the current
delayed branch sequence (we don't count the insn needing the
delay slot). Zero if not in a delayed branch sequence. */
@@ -638,7 +631,8 @@ int insn_current_align;
for each insn we'll call the alignment chain of this insn in the following
comments. */
-struct label_alignment {
+struct label_alignment
+{
short alignment;
short max_skip;
};
@@ -749,34 +743,34 @@ get_attr_length (insn)
Call a sequence of instructions beginning with alignment point X
and continuing until the next alignment point `block X'. When `X'
- is used in an expression, it means the alignment value of the
+ is used in an expression, it means the alignment value of the
alignment point.
-
+
Call the distance between the start of the first insn of block X, and
the end of the last insn of block X `IX', for the `inner size of X'.
This is clearly the sum of the instruction lengths.
-
+
Likewise with the next alignment-delimited block following X, which we
shall call block Y.
-
+
Call the distance between the start of the first insn of block X, and
the start of the first insn of block Y `OX', for the `outer size of X'.
-
+
The estimated padding is then OX - IX.
-
+
OX can be safely estimated as
-
+
if (X >= Y)
OX = round_up(IX, Y)
else
OX = round_up(IX, X) + Y - X
-
+
Clearly est(IX) >= real(IX), because that only depends on the
instruction lengths, and those being overestimated is a given.
-
+
Clearly round_up(foo, Z) >= round_up(bar, Z) if foo >= bar, so
we needn't worry about that when thinking about OX.
-
+
When X >= Y, the alignment provided by Y adds no uncertainty factor
for branch ranges starting before X, so we can just round what we have.
But when X < Y, we don't know anything about the, so to speak,
@@ -819,6 +813,7 @@ final_addr_vec_align (addr_vec)
return align;
}
+
#define ADDR_VEC_ALIGN(ADDR_VEC) final_addr_vec_align (ADDR_VEC)
#endif
@@ -837,6 +832,7 @@ static int min_labelno, max_labelno;
(label_align[CODE_LABEL_NUMBER (LABEL) - min_labelno].max_skip)
/* For the benefit of port specific code do this also as a function. */
+
int
label_to_alignment (label)
rtx label;
@@ -865,7 +861,6 @@ label_to_alignment (label)
For this purpose, align_fuzz with a growth argument of 0 comuptes the
appropriate adjustment. */
-
/* Compute the maximum delta by which the difference of the addresses of
START and END might grow / shrink due to a different address for start
which changes the size of alignment insns between START and END.
@@ -873,6 +868,7 @@ label_to_alignment (label)
GROWTH should be ~0 if the objective is to compute potential code size
increase, and 0 if the objective is to compute potential shrink.
The return value is undefined for any other value of GROWTH. */
+
static int
align_fuzz (start, end, known_align_log, growth)
rtx start, end;
@@ -914,6 +910,7 @@ align_fuzz (start, end, known_align_log, growth)
to account for possible size increase due to alignment.
NB.: Therefore, the maximum offset allowed for backward branches needs
to exclude the branch size. */
+
int
insn_current_reference_address (branch)
rtx branch;
@@ -938,13 +935,13 @@ insn_current_reference_address (branch)
/* BRANCH has no proper alignment chain set, so use SEQ. */
if (INSN_SHUID (branch) < INSN_SHUID (dest))
{
- /* Forward branch. */
+ /* Forward branch. */
return (insn_last_address + insn_lengths[seq_uid]
- align_fuzz (seq, dest, length_unit_log, ~0));
}
else
{
- /* Backward branch. */
+ /* Backward branch. */
return (insn_current_address
+ align_fuzz (dest, seq, length_unit_log, ~0));
}
@@ -1000,11 +997,11 @@ shorten_branches (first)
with only the 'deleted' bit set. Transform it into a note
to avoid confusion of subsequent processing. */
if (INSN_DELETED_P (old))
- {
- PUT_CODE (old , NOTE);
- NOTE_LINE_NUMBER (old) = NOTE_INSN_DELETED;
- NOTE_SOURCE_FILE (old) = 0;
- }
+ {
+ PUT_CODE (old, NOTE);
+ NOTE_LINE_NUMBER (old) = NOTE_INSN_DELETED;
+ NOTE_SOURCE_FILE (old) = 0;
+ }
}
#endif
@@ -1028,7 +1025,7 @@ shorten_branches (first)
/* We use max_log here to keep track of the maximum alignment we want to
impose on the next CODE_LABEL (or the current one if we are processing
the CODE_LABEL itself). */
-
+
max_log = 0;
max_skip = 0;
@@ -1153,7 +1150,7 @@ shorten_branches (first)
alignment of n. */
uid_align = (rtx *) xcalloc (max_uid, sizeof *uid_align);
- for (i = MAX_CODE_ALIGN; --i >= 0; )
+ for (i = MAX_CODE_ALIGN; --i >= 0;)
align_tab[i] = NULL_RTX;
seq = get_last_insn ();
for (; seq; seq = PREV_INSN (seq))
@@ -1227,7 +1224,6 @@ shorten_branches (first)
}
#endif /* CASE_VECTOR_SHORTEN_MODE */
-
/* Compute initial lengths, addresses, and varying flags for each insn. */
for (insn_current_address = FIRST_INSN_ADDRESS, insn = first;
insn != 0;
@@ -1250,7 +1246,7 @@ shorten_branches (first)
}
INSN_ADDRESSES (uid) = insn_current_address;
-
+
if (GET_CODE (insn) == NOTE || GET_CODE (insn) == BARRIER
|| GET_CODE (insn) == CODE_LABEL)
continue;
@@ -1298,7 +1294,7 @@ shorten_branches (first)
* insn_default_length (inner_insn));
else
inner_length = insn_default_length (inner_insn);
-
+
insn_lengths[inner_uid] = inner_length;
if (const_delay_slots)
{
@@ -1489,7 +1485,7 @@ shorten_branches (first)
if (GET_CODE (insn) == INSN && GET_CODE (PATTERN (insn)) == SEQUENCE)
{
int i;
-
+
body = PATTERN (insn);
new_length = 0;
for (i = 0; i < XVECLEN (body, 0); i++)
@@ -1563,8 +1559,8 @@ asm_insn_count (body)
template = decode_asm_operands (body, NULL_PTR, NULL_PTR,
NULL_PTR, NULL_PTR);
- for ( ; *template; template++)
- if (IS_ASM_LOGICAL_LINE_SEPARATOR(*template) || *template == '\n')
+ for (; *template; template++)
+ if (IS_ASM_LOGICAL_LINE_SEPARATOR (*template) || *template == '\n')
count++;
return count;
@@ -1603,7 +1599,7 @@ final_start_function (first, file, optimize)
regs_ever_live[i] = 1;
}
#endif
-
+
/* Initial line number is supposed to be output
before the function's prologue and label
so that the function's address will not appear to be
@@ -1633,7 +1629,7 @@ final_start_function (first, file, optimize)
if (write_symbols == XCOFF_DEBUG)
xcoffout_begin_function (file, last_linenum);
else
-#endif
+#endif
/* But only output line number for other debug info types if -g2
or better. */
if (NOTE_LINE_NUMBER (first) != NOTE_INSN_DELETED)
@@ -1686,8 +1682,9 @@ final_start_function (first, file, optimize)
of the function name. */
if (profile_block_flag)
{
- bb_func_label_num
- = add_bb_string ((*decl_printable_name) (current_function_decl, 2), FALSE);
+ bb_func_label_num =
+ add_bb_string ((*decl_printable_name) (current_function_decl, 2),
+ FALSE);
}
}
@@ -1855,7 +1852,8 @@ static void
add_bb (file)
FILE *file;
{
- struct bb_list *ptr = (struct bb_list *) permalloc (sizeof (struct bb_list));
+ struct bb_list *ptr =
+ (struct bb_list *) permalloc (sizeof (struct bb_list));
/* Add basic block to linked list. */
ptr->next = 0;
@@ -1928,7 +1926,6 @@ add_bb_string (string, perm_p)
return ptr->label_num;
}
-
/* Output assembler code for some insns: all or part of a function.
For description of args, see `final_start_function', above.
@@ -1996,9 +1993,9 @@ final (first, file, optimize, prescan)
for (insn = first; insn; insn = NEXT_INSN (insn))
{
if (INSN_UID (insn) > max_uid) /* find largest UID */
- max_uid = INSN_UID (insn);
+ max_uid = INSN_UID (insn);
if (GET_CODE (insn) == NOTE && NOTE_LINE_NUMBER (insn) > 0)
- line_note_exists[NOTE_LINE_NUMBER (insn)] = 1;
+ line_note_exists[NOTE_LINE_NUMBER (insn)] = 1;
#ifdef HAVE_cc0
/* If CC tracking across branches is enabled, record the insn which
jumps to each branch only reached from one place. */
@@ -2013,8 +2010,8 @@ final (first, file, optimize, prescan)
#endif
}
- /* Initialize insn_eh_region table if eh is being used. */
-
+ /* Initialize insn_eh_region table if eh is being used. */
+
init_insn_eh_region (first, max_uid);
init_recog ();
@@ -2066,16 +2063,17 @@ get_insn_template (code, insn)
case INSN_OUTPUT_FORMAT_SINGLE:
return (const char *) output;
case INSN_OUTPUT_FORMAT_MULTI:
- return ((const char * const *) output)[which_alternative];
+ return ((const char *const *) output)[which_alternative];
case INSN_OUTPUT_FORMAT_FUNCTION:
if (insn == NULL)
abort ();
- return (* (insn_output_fn) output) (recog_data.operand, insn);
+ return (*(insn_output_fn) output) (recog_data.operand, insn);
default:
abort ();
}
}
+
/* The final scan for one insn, INSN.
Args are same as in `final', except that INSN
is the insn being scanned.
@@ -2278,11 +2276,11 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes)
|| debug_info_level == DINFO_LEVEL_VERBOSE)
{
#ifdef DWARF_DEBUGGING_INFO
- if (write_symbols == DWARF_DEBUG)
+ if (write_symbols == DWARF_DEBUG)
dwarfout_label (insn);
#endif
#ifdef DWARF2_DEBUGGING_INFO
- if (write_symbols == DWARF2_DEBUG)
+ if (write_symbols == DWARF2_DEBUG)
dwarf2out_label (insn);
#endif
}
@@ -2300,7 +2298,7 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes)
register rtx note;
int note_after = 0;
- /* If there is anything real after this note, output it.
+ /* If there is anything real after this note, output it.
If another line note follows, omit this one. */
for (note = NEXT_INSN (insn); note; note = NEXT_INSN (note))
{
@@ -2336,7 +2334,7 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes)
if (!note_after)
output_source_line (file, insn);
}
- break;
+ break;
}
break;
@@ -2451,19 +2449,19 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes)
ASM_OUTPUT_CASE_LABEL (file, "L", CODE_LABEL_NUMBER (insn),
NEXT_INSN (insn));
#else
- if (LABEL_ALTERNATE_NAME (insn))
- ASM_OUTPUT_ALTERNATE_LABEL_NAME (file, insn);
- else
- ASM_OUTPUT_INTERNAL_LABEL (file, "L", CODE_LABEL_NUMBER (insn));
+ if (LABEL_ALTERNATE_NAME (insn))
+ ASM_OUTPUT_ALTERNATE_LABEL_NAME (file, insn);
+ else
+ ASM_OUTPUT_INTERNAL_LABEL (file, "L", CODE_LABEL_NUMBER (insn));
#endif
#endif
break;
}
}
if (LABEL_ALTERNATE_NAME (insn))
- ASM_OUTPUT_ALTERNATE_LABEL_NAME (file, insn);
+ ASM_OUTPUT_ALTERNATE_LABEL_NAME (file, insn);
else
- ASM_OUTPUT_INTERNAL_LABEL (file, "L", CODE_LABEL_NUMBER (insn));
+ ASM_OUTPUT_INTERNAL_LABEL (file, "L", CODE_LABEL_NUMBER (insn));
break;
default:
@@ -2520,7 +2518,7 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes)
#ifdef ASM_OUTPUT_ADDR_VEC
ASM_OUTPUT_ADDR_VEC (PREV_INSN (insn), body);
#else
- abort();
+ abort ();
#endif
}
else
@@ -2528,7 +2526,7 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes)
#ifdef ASM_OUTPUT_ADDR_DIFF_VEC
ASM_OUTPUT_ADDR_DIFF_VEC (PREV_INSN (insn), body);
#else
- abort();
+ abort ();
#endif
}
#else
@@ -2696,7 +2694,7 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes)
body = PATTERN (insn);
#ifdef HAVE_cc0
- set = single_set(insn);
+ set = single_set (insn);
/* Check for redundant test and compare instructions
(when the condition codes are already set up as desired).
@@ -2709,7 +2707,7 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes)
if (optimize)
{
#if 0
- rtx set = single_set(insn);
+ rtx set = single_set (insn);
#endif
if (set
@@ -2828,7 +2826,7 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes)
&& set != 0)
{
rtx cond_rtx, then_rtx, else_rtx;
-
+
if (GET_CODE (insn) != JUMP_INSN
&& GET_CODE (SET_SRC (set)) == IF_THEN_ELSE)
{
@@ -2842,7 +2840,7 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes)
then_rtx = const_true_rtx;
else_rtx = const0_rtx;
}
-
+
switch (GET_CODE (cond_rtx))
{
case GTU:
@@ -2924,6 +2922,14 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes)
extract_insn (insn);
cleanup_subreg_operands (insn);
+ /* Dump the insn in the assembly for debugging. */
+ if (flag_dump_rtl_in_asm)
+ {
+ print_rtx_head = ASM_COMMENT_START;
+ print_rtl_single (asm_out_file, insn);
+ print_rtx_head = "";
+ }
+
if (! constrain_operands (1))
fatal_insn_not_found (insn);
@@ -3002,7 +3008,7 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes)
/* If we didn't split the insn, go away. */
if (new == insn && PATTERN (new) == body)
fatal_insn ("Could not split insn", insn);
-
+
#ifdef HAVE_ATTR_length
/* This instruction should have been split in shorten_branches,
to ensure that we would have valid length info for the
@@ -3013,7 +3019,7 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes)
new_block = 0;
return new;
}
-
+
if (prescan > 0)
break;
@@ -3124,9 +3130,9 @@ output_source_line (file, insn)
}
}
-
/* For each operand in INSN, simplify (subreg (reg)) so that it refers
directly to the desired hard register. */
+
void
cleanup_subreg_operands (insn)
rtx insn;
@@ -3137,19 +3143,19 @@ cleanup_subreg_operands (insn)
for (i = 0; i < recog_data.n_operands; i++)
{
if (GET_CODE (recog_data.operand[i]) == SUBREG)
- recog_data.operand[i] = alter_subreg (recog_data.operand[i]);
+ recog_data.operand[i] = alter_subreg (recog_data.operand[i]);
else if (GET_CODE (recog_data.operand[i]) == PLUS
- || GET_CODE (recog_data.operand[i]) == MULT)
- recog_data.operand[i] = walk_alter_subreg (recog_data.operand[i]);
+ || GET_CODE (recog_data.operand[i]) == MULT)
+ recog_data.operand[i] = walk_alter_subreg (recog_data.operand[i]);
}
for (i = 0; i < recog_data.n_dups; i++)
{
if (GET_CODE (*recog_data.dup_loc[i]) == SUBREG)
- *recog_data.dup_loc[i] = alter_subreg (*recog_data.dup_loc[i]);
+ *recog_data.dup_loc[i] = alter_subreg (*recog_data.dup_loc[i]);
else if (GET_CODE (*recog_data.dup_loc[i]) == PLUS
- || GET_CODE (*recog_data.dup_loc[i]) == MULT)
- *recog_data.dup_loc[i] = walk_alter_subreg (*recog_data.dup_loc[i]);
+ || GET_CODE (*recog_data.dup_loc[i]) == MULT)
+ *recog_data.dup_loc[i] = walk_alter_subreg (*recog_data.dup_loc[i]);
}
}
@@ -3181,8 +3187,8 @@ alter_subreg (x)
gen_lowpart and friends. */
#ifdef ALTER_HARD_SUBREG
- regno = ALTER_HARD_SUBREG(GET_MODE (x), SUBREG_WORD (x),
- GET_MODE (y), REGNO (y));
+ regno = ALTER_HARD_SUBREG (GET_MODE (x), SUBREG_WORD (x),
+ GET_MODE (y), REGNO (y));
#else
regno = REGNO (y) + SUBREG_WORD (x);
#endif
@@ -3227,7 +3233,7 @@ walk_alter_subreg (x)
case SUBREG:
return alter_subreg (x);
-
+
default:
break;
}
@@ -3288,7 +3294,7 @@ alter_cond (cond)
PUT_CODE (cond, NE);
value = 2;
break;
-
+
default:
break;
}
@@ -3317,7 +3323,7 @@ alter_cond (cond)
PUT_CODE (cond, NE);
value = 2;
break;
-
+
default:
break;
}
@@ -3342,7 +3348,7 @@ alter_cond (cond)
case LTU:
/* Jump becomes no-op. */
return -1;
-
+
default:
break;
}
@@ -3441,7 +3447,7 @@ output_asm_name ()
if (debug_insn)
{
register int num = INSN_CODE (debug_insn);
- fprintf (asm_out_file, "\t%s %d\t%s",
+ fprintf (asm_out_file, "\t%s %d\t%s",
ASM_COMMENT_START, INSN_UID (debug_insn),
insn_data[num].name);
if (insn_data[num].n_alternatives > 1)
@@ -3497,7 +3503,7 @@ output_asm_insn (template, operands)
case '{':
{
register int i;
-
+
/* If we want the first dialect, do nothing. Otherwise, skip
DIALECT_NUMBER of strings ending with '|'. */
for (i = 0; i < dialect_number; i++)
@@ -3542,7 +3548,7 @@ output_asm_insn (template, operands)
Letters `acln' are implemented directly.
Other letters are passed to `output_operand' so that
the PRINT_OPERAND macro can define them. */
- else if (ISLOWER(*p) || ISUPPER(*p))
+ else if (ISLOWER (*p) || ISUPPER (*p))
{
int letter = *p++;
c = atoi (p);
@@ -3575,24 +3581,27 @@ output_asm_insn (template, operands)
}
else
output_operand (operands[c], letter);
-
- while ((c = *p) >= '0' && c <= '9') p++;
+
+ while ((c = *p) >= '0' && c <= '9')
+ p++;
}
/* % followed by a digit outputs an operand the default way. */
else if (*p >= '0' && *p <= '9')
{
c = atoi (p);
- if (this_is_asm_operands && (c < 0 || (unsigned int) c >= insn_noperands))
+ if (this_is_asm_operands
+ && (c < 0 || (unsigned int) c >= insn_noperands))
output_operand_lossage ("operand number out of range");
else
output_operand (operands[c], 0);
- while ((c = *p) >= '0' && c <= '9') p++;
+ while ((c = *p) >= '0' && c <= '9')
+ p++;
}
/* % followed by punctuation: output something for that
punctuation character alone, with no operand.
The PRINT_OPERAND macro decides what is actually done. */
#ifdef PRINT_OPERAND_PUNCT_VALID_P
- else if (PRINT_OPERAND_PUNCT_VALID_P ((unsigned char)*p))
+ else if (PRINT_OPERAND_PUNCT_VALID_P ((unsigned char) *p))
output_operand (NULL_RTX, *p++);
#endif
else
@@ -3719,7 +3728,7 @@ output_addr_const (file, x)
if (CONST_DOUBLE_HIGH (x))
fprintf (file, HOST_WIDE_INT_PRINT_DOUBLE_HEX,
CONST_DOUBLE_HIGH (x), CONST_DOUBLE_LOW (x));
- else if (CONST_DOUBLE_LOW (x) < 0)
+ else if (CONST_DOUBLE_LOW (x) < 0)
fprintf (file, HOST_WIDE_INT_PRINT_HEX, CONST_DOUBLE_LOW (x));
else
fprintf (file, HOST_WIDE_INT_PRINT_DEC, CONST_DOUBLE_LOW (x));
@@ -3825,7 +3834,7 @@ asm_fprintf VPARAMS ((FILE *file, const char *p, ...))
if (*p == '|')
p++;
- }
+ }
}
break;
@@ -3941,7 +3950,7 @@ asm_fprintf VPARAMS ((FILE *file, const char *p, ...))
case 'M': case 'N': case 'P': case 'Q': case 'S':
case 'T': case 'V': case 'W': case 'Y': case 'Z':
break;
-
+
ASM_FPRINTF_EXTENSIONS (file, argptr, p)
#endif
default:
@@ -3990,7 +3999,7 @@ split_double (value, first, second)
/* Set sign_extend as any remaining bits. */
sign_extend = ~mask;
-
+
/* Pick the lower word and sign-extend it. */
low = INTVAL (value);
low &= mask;
@@ -4069,7 +4078,8 @@ split_double (value, first, second)
else
{
#ifdef REAL_ARITHMETIC
- REAL_VALUE_TYPE r; long l[2];
+ REAL_VALUE_TYPE r;
+ long l[2];
REAL_VALUE_FROM_CONST_DOUBLE (r, value);
/* Note, this converts the REAL_VALUE_TYPE to the target's
@@ -4144,7 +4154,9 @@ leaf_function_p ()
&& ! SIBLING_CALL_P (XVECEXP (PATTERN (insn), 0, 0)))
return 0;
}
- for (insn = current_function_epilogue_delay_list; insn; insn = XEXP (insn, 1))
+ for (insn = current_function_epilogue_delay_list;
+ insn;
+ insn = XEXP (insn, 1))
{
if (GET_CODE (XEXP (insn, 0)) == CALL_INSN
&& ! SIBLING_CALL_P (insn))
@@ -4208,7 +4220,9 @@ leaf_renumber_regs (first)
for (insn = first; insn; insn = NEXT_INSN (insn))
if (INSN_P (insn))
leaf_renumber_regs_insn (PATTERN (insn));
- for (insn = current_function_epilogue_delay_list; insn; insn = XEXP (insn, 1))
+ for (insn = current_function_epilogue_delay_list;
+ insn;
+ insn = XEXP (insn, 1))
if (INSN_P (XEXP (insn, 0)))
leaf_renumber_regs_insn (PATTERN (XEXP (insn, 0)));
}
diff --git a/gcc/fixinc/fixfixes.c b/gcc/fixinc/fixfixes.c
index e419126944c..e1fd36b7873 100644
--- a/gcc/fixinc/fixfixes.c
+++ b/gcc/fixinc/fixfixes.c
@@ -66,9 +66,10 @@ Boston, MA 02111-1307, USA. */
tSCC zNeedsArg[] = "fixincl error: `%s' needs %s argument (c_fix_arg[%d])\n";
+typedef void t_fix_proc PARAMS ((const char *, const char *, tFixDesc *));
typedef struct {
const char* fix_name;
- void (*fix_proc)();
+ t_fix_proc* fix_proc;
} fix_entry_t;
#define FIXUP_TABLE \
@@ -80,13 +81,14 @@ typedef struct {
_FT_( "gnu_type", gnu_type_fix )
-#define FIX_PROC_HEAD( fix ) \
-static void fix ( filname, text, p_fixd ) \
- const char* filname; \
- const char* text; \
+#define FIX_PROC_HEAD( fix ) \
+static t_fix_proc fix; /* avoid warning */ \
+static void fix ( filname, text, p_fixd ) \
+ const char* filname; \
+ const char* text; \
tFixDesc* p_fixd;
-
+#ifdef NEED_PRINT_QUOTE
/*
* Skip over a quoted string. Single quote strings may
* contain multiple characters if the first character is
@@ -128,6 +130,7 @@ print_quote( q, text )
return text;
}
+#endif /* NEED_PRINT_QUOTE */
/*
@@ -250,7 +253,6 @@ FIX_PROC_HEAD( format_fix )
{
tCC* pz_pat = p_fixd->patch_args[2];
tCC* pz_fmt = p_fixd->patch_args[1];
- const char *p;
regex_t re;
regmatch_t rm[10];
@@ -295,9 +297,6 @@ FIX_PROC_HEAD( format_fix )
compile_re (pz_pat, &re, 1, "format search-text", "format_fix" );
while (regexec (&re, text, 10, rm, 0) == 0)
{
- char* apz[10];
- int i;
-
fwrite( text, rm[0].rm_so, 1, stdout );
format_write( pz_fmt, text, rm );
text += rm[0].rm_eo;
diff --git a/gcc/fixinc/fixincl.c b/gcc/fixinc/fixincl.c
index de3cfcce662..e0513e5bc69 100644
--- a/gcc/fixinc/fixincl.c
+++ b/gcc/fixinc/fixincl.c
@@ -93,12 +93,11 @@ const char incl_quote_pat[] = "^[ \t]*#[ \t]*include[ \t]*\"[^/]";
tSCC z_fork_err[] = "Error %d (%s) starting filter process for %s\n";
regex_t incl_quote_re;
-void do_version ();
-char *load_file _P_((const char *));
-void process _P_((char *, const char *));
-void run_compiles ();
-void initialize _P_((int argc,char** argv));
-void process ();
+void do_version PARAMS((void));
+char *load_file PARAMS((const char *));
+void run_compiles PARAMS((void));
+void initialize PARAMS((int argc,char** argv));
+void process PARAMS((void));
/* External Source Code */
@@ -523,6 +522,7 @@ run_compiles ()
p_test->p_test_regex = p_re++;
compile_re (p_test->pz_test_text, p_test->p_test_regex, 0,
"select test", p_fixd->fix_name);
+ default: break;
}
p_test++;
}
diff --git a/gcc/fixinc/fixincl.tpl b/gcc/fixinc/fixincl.tpl
index a68dec85cac..7d5a6ea5536 100644
--- a/gcc/fixinc/fixincl.tpl
+++ b/gcc/fixinc/fixincl.tpl
@@ -124,7 +124,7 @@ _SETENV re_ct
re_ct _env _val
select _count +
bypass _count + =]
-tTestDesc a[=hackname _cap=]Tests[] = {[=
+static tTestDesc a[=hackname _cap=]Tests[] = {[=
_FOR test =]
{ TT_TEST, z[=hackname _cap=]Test[=_eval _index=], 0 /* unused */ },[=
@@ -149,7 +149,7 @@ tTestDesc a[=hackname _cap=]Tests[] = {[=
/*
* Fix Command Arguments for [=hackname _cap=]
*/
-const char* apz[=hackname _cap=]Patch[] = {[=
+static const char* apz[=hackname _cap=]Patch[] = {[=
_IF sed _exist =] "sed"[=
_FOR sed=],
"-e", [=sed _krstr=][=
diff --git a/gcc/fixinc/fixincl.x b/gcc/fixinc/fixincl.x
index 746a5e375cd..4fe9d9ddf76 100644
--- a/gcc/fixinc/fixincl.x
+++ b/gcc/fixinc/fixincl.x
@@ -55,13 +55,13 @@ tSCC zAaa_Ki_IfaceSelect0[] =
"These definitions are for HP Internal developers";
#define AAA_KI_IFACE_TEST_CT 1
-tTestDesc aAaa_Ki_IfaceTests[] = {
+static tTestDesc aAaa_Ki_IfaceTests[] = {
{ TT_EGREP, zAaa_Ki_IfaceSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Aaa_Ki_Iface
*/
-const char* apzAaa_Ki_IfacePatch[] = {
+static const char* apzAaa_Ki_IfacePatch[] = {
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
@@ -89,13 +89,13 @@ tSCC zAaa_KiSelect0[] =
"11.00 HP-UX LP64";
#define AAA_KI_TEST_CT 1
-tTestDesc aAaa_KiTests[] = {
+static tTestDesc aAaa_KiTests[] = {
{ TT_EGREP, zAaa_KiSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Aaa_Ki
*/
-const char* apzAaa_KiPatch[] = {
+static const char* apzAaa_KiPatch[] = {
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
@@ -123,13 +123,13 @@ tSCC zAaa_Ki_CallsSelect0[] =
"kthread_create_caller_t";
#define AAA_KI_CALLS_TEST_CT 1
-tTestDesc aAaa_Ki_CallsTests[] = {
+static tTestDesc aAaa_Ki_CallsTests[] = {
{ TT_EGREP, zAaa_Ki_CallsSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Aaa_Ki_Calls
*/
-const char* apzAaa_Ki_CallsPatch[] = {
+static const char* apzAaa_Ki_CallsPatch[] = {
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
@@ -157,13 +157,13 @@ tSCC zAaa_Ki_DefsSelect0[] =
"Kernel Instrumentation Definitions";
#define AAA_KI_DEFS_TEST_CT 1
-tTestDesc aAaa_Ki_DefsTests[] = {
+static tTestDesc aAaa_Ki_DefsTests[] = {
{ TT_EGREP, zAaa_Ki_DefsSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Aaa_Ki_Defs
*/
-const char* apzAaa_Ki_DefsPatch[] = {
+static const char* apzAaa_Ki_DefsPatch[] = {
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
@@ -189,7 +189,7 @@ tSCC zAaa_Bad_FixesList[] =
/*
* Fix Command Arguments for Aaa_Bad_Fixes
*/
-const char* apzAaa_Bad_FixesPatch[] = {
+static const char* apzAaa_Bad_FixesPatch[] = {
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
@@ -217,13 +217,13 @@ tSCC zAaa_TimeSelect0[] =
"11.0 and later representation of ki time";
#define AAA_TIME_TEST_CT 1
-tTestDesc aAaa_TimeTests[] = {
+static tTestDesc aAaa_TimeTests[] = {
{ TT_EGREP, zAaa_TimeSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Aaa_Time
*/
-const char* apzAaa_TimePatch[] = {
+static const char* apzAaa_TimePatch[] = {
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
@@ -249,7 +249,7 @@ tSCC zAab_Dgux_Int_VarargsList[] =
/*
* Fix Command Arguments for Aab_Dgux_Int_Varargs
*/
-const char* apzAab_Dgux_Int_VarargsPatch[] = {
+static const char* apzAab_Dgux_Int_VarargsPatch[] = {
"#ifndef __INT_VARARGS_H\n\
#define __INT_VARARGS_H\n\
\n\
@@ -341,13 +341,13 @@ tSCC zAab_Fd_Zero_Asm_Posix_Types_HBypass0[] =
"} while";
#define AAB_FD_ZERO_ASM_POSIX_TYPES_H_TEST_CT 1
-tTestDesc aAab_Fd_Zero_Asm_Posix_Types_HTests[] = {
+static tTestDesc aAab_Fd_Zero_Asm_Posix_Types_HTests[] = {
{ TT_NEGREP, zAab_Fd_Zero_Asm_Posix_Types_HBypass0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Aab_Fd_Zero_Asm_Posix_Types_H
*/
-const char* apzAab_Fd_Zero_Asm_Posix_Types_HPatch[] = {
+static const char* apzAab_Fd_Zero_Asm_Posix_Types_HPatch[] = {
"/* This file fixes a bug in the __FD_ZERO macro\n\
for older versions of the Linux kernel. */\n\
#ifndef _POSIX_TYPES_H_WRAPPER\n\
@@ -395,7 +395,7 @@ tSCC* apzAab_Fd_Zero_Gnu_Types_HMachs[] = {
/*
* Fix Command Arguments for Aab_Fd_Zero_Gnu_Types_H
*/
-const char* apzAab_Fd_Zero_Gnu_Types_HPatch[] = {
+static const char* apzAab_Fd_Zero_Gnu_Types_HPatch[] = {
"/* This file fixes a bug in the __FD_ZERO macro present in glibc 1.x. */\n\
#ifndef _TYPES_H_WRAPPER\n\
#include <features.h>\n\
@@ -442,7 +442,7 @@ tSCC* apzAab_Fd_Zero_Selectbits_HMachs[] = {
/*
* Fix Command Arguments for Aab_Fd_Zero_Selectbits_H
*/
-const char* apzAab_Fd_Zero_Selectbits_HPatch[] = {
+static const char* apzAab_Fd_Zero_Selectbits_HPatch[] = {
"/* This file fixes a bug in the __FD_ZERO macro present in glibc 2.0.x. */\n\
#ifndef _SELECTBITS_H_WRAPPER\n\
#include <features.h>\n\
@@ -493,13 +493,13 @@ tSCC zAab_Sun_MemcpySelect0[] =
"/\\*\t@\\(#\\)(head/memory.h\t50.1\t |memory\\.h 1\\.[2-4] 8./../.. SMI; from S5R2 1\\.2\t)\\*/";
#define AAB_SUN_MEMCPY_TEST_CT 1
-tTestDesc aAab_Sun_MemcpyTests[] = {
+static tTestDesc aAab_Sun_MemcpyTests[] = {
{ TT_EGREP, zAab_Sun_MemcpySelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Aab_Sun_Memcpy
*/
-const char* apzAab_Sun_MemcpyPatch[] = {
+static const char* apzAab_Sun_MemcpyPatch[] = {
"/* This file was generated by fixincludes */\n\
#ifndef __memory_h__\n\
#define __memory_h__\n\
@@ -551,7 +551,7 @@ tSCC* apzAab_Svr4_Replace_ByteorderMachs[] = {
/*
* Fix Command Arguments for Aab_Svr4_Replace_Byteorder
*/
-const char* apzAab_Svr4_Replace_ByteorderPatch[] = {
+static const char* apzAab_Svr4_Replace_ByteorderPatch[] = {
"#ifndef _SYS_BYTEORDER_H\n\
#define _SYS_BYTEORDER_H\n\
\n\
@@ -722,13 +722,13 @@ tSCC zAab_Ultrix_Ansi_CompatSelect0[] =
"ULTRIX";
#define AAB_ULTRIX_ANSI_COMPAT_TEST_CT 1
-tTestDesc aAab_Ultrix_Ansi_CompatTests[] = {
+static tTestDesc aAab_Ultrix_Ansi_CompatTests[] = {
{ TT_EGREP, zAab_Ultrix_Ansi_CompatSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Aab_Ultrix_Ansi_Compat
*/
-const char* apzAab_Ultrix_Ansi_CompatPatch[] = {
+static const char* apzAab_Ultrix_Ansi_CompatPatch[] = {
"/* This file intentionally left blank. */\n",
(char*)NULL };
@@ -757,7 +757,7 @@ tSCC* apzAab_Ultrix_LimitsMachs[] = {
/*
* Fix Command Arguments for Aab_Ultrix_Limits
*/
-const char* apzAab_Ultrix_LimitsPatch[] = {
+static const char* apzAab_Ultrix_LimitsPatch[] = {
"/*\t@(#)limits.h\t\t\t\t*/\n\
/* This file was generated by fixincludes\t*/\n\
#ifndef _LIMITS_INCLUDED\n\
@@ -791,7 +791,7 @@ tSCC* apzAab_Ultrix_MemoryMachs[] = {
/*
* Fix Command Arguments for Aab_Ultrix_Memory
*/
-const char* apzAab_Ultrix_MemoryPatch[] = {
+static const char* apzAab_Ultrix_MemoryPatch[] = {
"/*\t@(#)memory.h\t\t\t\t*/\n\
/* This file was generated by fixincludes\t*/\n\
#ifndef _MEMORY_INCLUDED\n\
@@ -825,7 +825,7 @@ tSCC* apzAab_Ultrix_StringMachs[] = {
/*
* Fix Command Arguments for Aab_Ultrix_String
*/
-const char* apzAab_Ultrix_StringPatch[] = {
+static const char* apzAab_Ultrix_StringPatch[] = {
"/*\t@(#)string.h\t\t\t\t*/\n\
/* This file was generated by fixincludes\t*/\n\
#ifndef _STRING_INCLUDED\n\
@@ -861,13 +861,13 @@ tSCC zAix_PthreadSelect0[] =
(])";
#define AIX_PTHREAD_TEST_CT 1
-tTestDesc aAix_PthreadTests[] = {
+static tTestDesc aAix_PthreadTests[] = {
{ TT_EGREP, zAix_PthreadSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Aix_Pthread
*/
-const char* apzAix_PthreadPatch[] = {
+static const char* apzAix_PthreadPatch[] = {
"format",
"%1 %2",
(char*)NULL };
@@ -897,13 +897,13 @@ tSCC zAix_SysmachineSelect0[] =
"\\\\ +\n";
#define AIX_SYSMACHINE_TEST_CT 1
-tTestDesc aAix_SysmachineTests[] = {
+static tTestDesc aAix_SysmachineTests[] = {
{ TT_EGREP, zAix_SysmachineSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Aix_Sysmachine
*/
-const char* apzAix_SysmachinePatch[] = {
+static const char* apzAix_SysmachinePatch[] = {
"format",
"\\\n",
(char*)NULL };
@@ -935,14 +935,14 @@ tSCC zAix_SyswaitSelect1[] =
"bos325,";
#define AIX_SYSWAIT_TEST_CT 2
-tTestDesc aAix_SyswaitTests[] = {
+static tTestDesc aAix_SyswaitTests[] = {
{ TT_EGREP, zAix_SyswaitSelect0, (regex_t*)NULL },
{ TT_EGREP, zAix_SyswaitSelect1, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Aix_Syswait
*/
-const char* apzAix_SyswaitPatch[] = {
+static const char* apzAix_SyswaitPatch[] = {
"format",
"struct rusage;\n\
%0",
@@ -973,13 +973,13 @@ tSCC zAix_VolatileSelect0[] =
"typedef volatile int sig_atomic_t";
#define AIX_VOLATILE_TEST_CT 1
-tTestDesc aAix_VolatileTests[] = {
+static tTestDesc aAix_VolatileTests[] = {
{ TT_EGREP, zAix_VolatileSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Aix_Volatile
*/
-const char* apzAix_VolatilePatch[] = {
+static const char* apzAix_VolatilePatch[] = {
"format",
"typedef int sig_atomic_t",
(char*)NULL };
@@ -1009,13 +1009,13 @@ tSCC zAlpha_GetoptSelect0[] =
"getopt\\(int, char \\*\\[\\], *char \\*\\)";
#define ALPHA_GETOPT_TEST_CT 1
-tTestDesc aAlpha_GetoptTests[] = {
+static tTestDesc aAlpha_GetoptTests[] = {
{ TT_EGREP, zAlpha_GetoptSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Alpha_Getopt
*/
-const char* apzAlpha_GetoptPatch[] = {
+static const char* apzAlpha_GetoptPatch[] = {
"format",
"getopt(int, char *const[], const char *)",
(char*)NULL };
@@ -1045,13 +1045,13 @@ tSCC zAlpha_ParensSelect0[] =
"#ifndef\\(__mips64\\)";
#define ALPHA_PARENS_TEST_CT 1
-tTestDesc aAlpha_ParensTests[] = {
+static tTestDesc aAlpha_ParensTests[] = {
{ TT_EGREP, zAlpha_ParensSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Alpha_Parens
*/
-const char* apzAlpha_ParensPatch[] = {
+static const char* apzAlpha_ParensPatch[] = {
"format",
"#ifndef __mips64",
(char*)NULL };
@@ -1081,13 +1081,13 @@ tSCC zAlpha_SbrkSelect0[] =
"char[ \t]*\\*[\t ]*sbrk[ \t]*\\(";
#define ALPHA_SBRK_TEST_CT 1
-tTestDesc aAlpha_SbrkTests[] = {
+static tTestDesc aAlpha_SbrkTests[] = {
{ TT_EGREP, zAlpha_SbrkSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Alpha_Sbrk
*/
-const char* apzAlpha_SbrkPatch[] = {
+static const char* apzAlpha_SbrkPatch[] = {
"format",
"void *sbrk(",
(char*)NULL };
@@ -1117,13 +1117,13 @@ tSCC zArm_Norcroft_HintSelect0[] =
"___type p_type";
#define ARM_NORCROFT_HINT_TEST_CT 1
-tTestDesc aArm_Norcroft_HintTests[] = {
+static tTestDesc aArm_Norcroft_HintTests[] = {
{ TT_EGREP, zArm_Norcroft_HintSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Arm_Norcroft_Hint
*/
-const char* apzArm_Norcroft_HintPatch[] = {
+static const char* apzArm_Norcroft_HintPatch[] = {
"format",
"p_type",
(char*)NULL };
@@ -1153,13 +1153,13 @@ tSCC zArm_WcharSelect0[] =
"#[ \t]*define[ \t]*__wchar_t";
#define ARM_WCHAR_TEST_CT 1
-tTestDesc aArm_WcharTests[] = {
+static tTestDesc aArm_WcharTests[] = {
{ TT_EGREP, zArm_WcharSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Arm_Wchar
*/
-const char* apzArm_WcharPatch[] = {
+static const char* apzArm_WcharPatch[] = {
"format",
"%1_GCC_WCHAR_T",
"(#[ \t]*(ifndef|define)[ \t]+)__wchar_t",
@@ -1190,13 +1190,13 @@ tSCC zAux_AsmSelect0[] =
"#ifndef NOINLINE";
#define AUX_ASM_TEST_CT 1
-tTestDesc aAux_AsmTests[] = {
+static tTestDesc aAux_AsmTests[] = {
{ TT_EGREP, zAux_AsmSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Aux_Asm
*/
-const char* apzAux_AsmPatch[] = {
+static const char* apzAux_AsmPatch[] = {
"format",
"#if !defined(NOINLINE) && !defined(__GNUC__)",
(char*)NULL };
@@ -1232,14 +1232,14 @@ tSCC zAvoid_Bool_DefineBypass0[] =
"we must use the C\\+\\+ compiler's type";
#define AVOID_BOOL_DEFINE_TEST_CT 2
-tTestDesc aAvoid_Bool_DefineTests[] = {
+static tTestDesc aAvoid_Bool_DefineTests[] = {
{ TT_NEGREP, zAvoid_Bool_DefineBypass0, (regex_t*)NULL },
{ TT_EGREP, zAvoid_Bool_DefineSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Avoid_Bool_Define
*/
-const char* apzAvoid_Bool_DefinePatch[] = {
+static const char* apzAvoid_Bool_DefinePatch[] = {
"format",
"#ifndef __cplusplus\n\
%0\n\
@@ -1278,14 +1278,14 @@ tSCC zAvoid_Bool_TypeBypass0[] =
"we must use the C\\+\\+ compiler's type";
#define AVOID_BOOL_TYPE_TEST_CT 2
-tTestDesc aAvoid_Bool_TypeTests[] = {
+static tTestDesc aAvoid_Bool_TypeTests[] = {
{ TT_NEGREP, zAvoid_Bool_TypeBypass0, (regex_t*)NULL },
{ TT_EGREP, zAvoid_Bool_TypeSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Avoid_Bool_Type
*/
-const char* apzAvoid_Bool_TypePatch[] = {
+static const char* apzAvoid_Bool_TypePatch[] = {
"format",
"#ifndef __cplusplus\n\
%0\n\
@@ -1318,13 +1318,13 @@ tSCC zBad_LvalSelect0[] =
"^[ \t]*#[ \t]*pragma[ \t]+extern_prefix";
#define BAD_LVAL_TEST_CT 1
-tTestDesc aBad_LvalTests[] = {
+static tTestDesc aBad_LvalTests[] = {
{ TT_EGREP, zBad_LvalSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Bad_Lval
*/
-const char* apzBad_LvalPatch[] = { "sed",
+static const char* apzBad_LvalPatch[] = { "sed",
"-e", "s/^[ \t]*#[ \t]*define[ \t][ \t]*\\([^(]*\\)\\(([^)]*)\\)[ \t]*\\(_.*\\)\\1\\2[ \t]*$/#define \\1 \\3\\1/",
(char*)NULL };
@@ -1353,13 +1353,13 @@ tSCC zBad_Struct_TermSelect0[] =
"^[ \t]*typedef[ \t]+struct[ \t]+term[ \t]*;";
#define BAD_STRUCT_TERM_TEST_CT 1
-tTestDesc aBad_Struct_TermTests[] = {
+static tTestDesc aBad_Struct_TermTests[] = {
{ TT_EGREP, zBad_Struct_TermSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Bad_Struct_Term
*/
-const char* apzBad_Struct_TermPatch[] = {
+static const char* apzBad_Struct_TermPatch[] = {
"format",
"struct term;",
(char*)NULL };
@@ -1389,13 +1389,13 @@ tSCC zBadquoteSelect0[] =
"doesn't";
#define BADQUOTE_TEST_CT 1
-tTestDesc aBadquoteTests[] = {
+static tTestDesc aBadquoteTests[] = {
{ TT_EGREP, zBadquoteSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Badquote
*/
-const char* apzBadquotePatch[] = {
+static const char* apzBadquotePatch[] = {
"format",
"does not",
(char*)NULL };
@@ -1431,14 +1431,14 @@ tSCC zBroken_Assert_StdioBypass0[] =
"include.*stdio\\.h";
#define BROKEN_ASSERT_STDIO_TEST_CT 2
-tTestDesc aBroken_Assert_StdioTests[] = {
+static tTestDesc aBroken_Assert_StdioTests[] = {
{ TT_NEGREP, zBroken_Assert_StdioBypass0, (regex_t*)NULL },
{ TT_EGREP, zBroken_Assert_StdioSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Broken_Assert_Stdio
*/
-const char* apzBroken_Assert_StdioPatch[] = {
+static const char* apzBroken_Assert_StdioPatch[] = {
"wrap",
"#include <stdio.h>\n",
(char*)NULL };
@@ -1474,14 +1474,14 @@ tSCC zBroken_Assert_StdlibBypass0[] =
"include.*stdlib\\.h";
#define BROKEN_ASSERT_STDLIB_TEST_CT 2
-tTestDesc aBroken_Assert_StdlibTests[] = {
+static tTestDesc aBroken_Assert_StdlibTests[] = {
{ TT_NEGREP, zBroken_Assert_StdlibBypass0, (regex_t*)NULL },
{ TT_EGREP, zBroken_Assert_StdlibSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Broken_Assert_Stdlib
*/
-const char* apzBroken_Assert_StdlibPatch[] = {
+static const char* apzBroken_Assert_StdlibPatch[] = {
"wrap",
"#ifdef __cplusplus\n\
#include <stdlib.h>\n\
@@ -1513,13 +1513,13 @@ tSCC zBroken_CabsSelect0[] =
"^extern double cabs";
#define BROKEN_CABS_TEST_CT 1
-tTestDesc aBroken_CabsTests[] = {
+static tTestDesc aBroken_CabsTests[] = {
{ TT_EGREP, zBroken_CabsSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Broken_Cabs
*/
-const char* apzBroken_CabsPatch[] = {
+static const char* apzBroken_CabsPatch[] = {
"format",
"",
"^extern double cabs\\((struct dbl_hypot|)\\);",
@@ -1549,13 +1549,13 @@ tSCC zCtrl_Quotes_DefSelect0[] =
"define[ \t]+[A-Z0-9_]+CTRL\\([a-zA-Z][,)]";
#define CTRL_QUOTES_DEF_TEST_CT 1
-tTestDesc aCtrl_Quotes_DefTests[] = {
+static tTestDesc aCtrl_Quotes_DefTests[] = {
{ TT_EGREP, zCtrl_Quotes_DefSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Ctrl_Quotes_Def
*/
-const char* apzCtrl_Quotes_DefPatch[] = {
+static const char* apzCtrl_Quotes_DefPatch[] = {
"char_macro_def",
"CTRL",
(char*)NULL };
@@ -1584,13 +1584,13 @@ tSCC zCtrl_Quotes_UseSelect0[] =
"define[ \t]+[A-Z0-9_]+[ \t]+[A-Z0-9_]+CTRL[ \t]*\\( *[^,']";
#define CTRL_QUOTES_USE_TEST_CT 1
-tTestDesc aCtrl_Quotes_UseTests[] = {
+static tTestDesc aCtrl_Quotes_UseTests[] = {
{ TT_EGREP, zCtrl_Quotes_UseSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Ctrl_Quotes_Use
*/
-const char* apzCtrl_Quotes_UsePatch[] = {
+static const char* apzCtrl_Quotes_UsePatch[] = {
"char_macro_use",
"CTRL",
(char*)NULL };
@@ -1626,14 +1626,14 @@ tSCC zCxx_UnreadyBypass0[] =
"\"C\"|__BEGIN_DECLS";
#define CXX_UNREADY_TEST_CT 2
-tTestDesc aCxx_UnreadyTests[] = {
+static tTestDesc aCxx_UnreadyTests[] = {
{ TT_NEGREP, zCxx_UnreadyBypass0, (regex_t*)NULL },
{ TT_EGREP, zCxx_UnreadySelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Cxx_Unready
*/
-const char* apzCxx_UnreadyPatch[] = {
+static const char* apzCxx_UnreadyPatch[] = {
"wrap",
"#ifdef __cplusplus\n\
extern \"C\" {\n\
@@ -1666,7 +1666,7 @@ tSCC zDec_Intern_AsmList[] =
/*
* Fix Command Arguments for Dec_Intern_Asm
*/
-const char* apzDec_Intern_AsmPatch[] = { "sed",
+static const char* apzDec_Intern_AsmPatch[] = { "sed",
"-e", "/^[ \t]*float[ \t]*fasm/i\\\n\
#ifdef __DECC\n",
"-e", "/^[ \t]*#[ \t]*pragma[ \t]*intrinsic([ \t]*dasm/a\\\n\
@@ -1698,13 +1698,13 @@ tSCC zEcd_CursorSelect0[] =
"ecd\\.cursor";
#define ECD_CURSOR_TEST_CT 1
-tTestDesc aEcd_CursorTests[] = {
+static tTestDesc aEcd_CursorTests[] = {
{ TT_EGREP, zEcd_CursorSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Ecd_Cursor
*/
-const char* apzEcd_CursorPatch[] = {
+static const char* apzEcd_CursorPatch[] = {
"format",
"ecd_cursor",
(char*)NULL };
@@ -1736,13 +1736,13 @@ tSCC zFix_Header_BreakageSelect0[] =
"extern double floor\\(\\), ceil\\(\\), fmod\\(\\), fabs\\(\\);";
#define FIX_HEADER_BREAKAGE_TEST_CT 1
-tTestDesc aFix_Header_BreakageTests[] = {
+static tTestDesc aFix_Header_BreakageTests[] = {
{ TT_EGREP, zFix_Header_BreakageSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Fix_Header_Breakage
*/
-const char* apzFix_Header_BreakagePatch[] = {
+static const char* apzFix_Header_BreakagePatch[] = {
"format",
"extern double floor(), ceil(), fmod(), fabs _PARAMS((double));",
(char*)NULL };
@@ -1772,13 +1772,13 @@ tSCC zHp_InlineSelect0[] =
"[ \t]*#[ \t]*include[ \t]+\"\\.\\./machine/";
#define HP_INLINE_TEST_CT 1
-tTestDesc aHp_InlineTests[] = {
+static tTestDesc aHp_InlineTests[] = {
{ TT_EGREP, zHp_InlineSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Hp_Inline
*/
-const char* apzHp_InlinePatch[] = {
+static const char* apzHp_InlinePatch[] = {
"format",
"%1<machine/%2.h>",
"([ \t]*#[ \t]*include[ \t]+)\"\\.\\./machine/([a-z]+)\\.h\"",
@@ -1809,13 +1809,13 @@ tSCC zHp_SysfileSelect0[] =
"HPUX_SOURCE";
#define HP_SYSFILE_TEST_CT 1
-tTestDesc aHp_SysfileTests[] = {
+static tTestDesc aHp_SysfileTests[] = {
{ TT_EGREP, zHp_SysfileSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Hp_Sysfile
*/
-const char* apzHp_SysfilePatch[] = {
+static const char* apzHp_SysfilePatch[] = {
"format",
"(struct file *, ...)",
"\\(\\.\\.\\.\\)",
@@ -1852,14 +1852,14 @@ tSCC zHpux11_FabsfBypass0[] =
"__cplusplus";
#define HPUX11_FABSF_TEST_CT 2
-tTestDesc aHpux11_FabsfTests[] = {
+static tTestDesc aHpux11_FabsfTests[] = {
{ TT_NEGREP, zHpux11_FabsfBypass0, (regex_t*)NULL },
{ TT_EGREP, zHpux11_FabsfSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Hpux11_Fabsf
*/
-const char* apzHpux11_FabsfPatch[] = {
+static const char* apzHpux11_FabsfPatch[] = {
"format",
"#ifndef __cplusplus\n\
%0\n\
@@ -1891,13 +1891,13 @@ tSCC zHpux11_Uint32_CSelect0[] =
"^#define UINT32_C\\(__c\\)[ \t]*__CONCAT__\\(__CONCAT_U__\\(__c\\),l\\)";
#define HPUX11_UINT32_C_TEST_CT 1
-tTestDesc aHpux11_Uint32_CTests[] = {
+static tTestDesc aHpux11_Uint32_CTests[] = {
{ TT_EGREP, zHpux11_Uint32_CSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Hpux11_Uint32_C
*/
-const char* apzHpux11_Uint32_CPatch[] = {
+static const char* apzHpux11_Uint32_CPatch[] = {
"format",
"#define UINT32_C(__c) __CONCAT__(__c,ul)",
(char*)NULL };
@@ -1927,13 +1927,13 @@ tSCC zHpux8_Bogus_InlinesSelect0[] =
"inline";
#define HPUX8_BOGUS_INLINES_TEST_CT 1
-tTestDesc aHpux8_Bogus_InlinesTests[] = {
+static tTestDesc aHpux8_Bogus_InlinesTests[] = {
{ TT_EGREP, zHpux8_Bogus_InlinesSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Hpux8_Bogus_Inlines
*/
-const char* apzHpux8_Bogus_InlinesPatch[] = { "sed",
+static const char* apzHpux8_Bogus_InlinesPatch[] = { "sed",
"-e", "s@inline int abs(int [a-z][a-z]*) {.*}@extern \"C\" int abs(int);@",
"-e", "s@inline double abs(double [a-z][a-z]*) {.*}@@",
"-e", "s@inline int sqr(int [a-z][a-z]*) {.*}@@",
@@ -1965,13 +1965,13 @@ tSCC zInt_Abort_Free_And_ExitSelect0[] =
"int[ \t]+(abort|free|exit)[ \t]*\\(";
#define INT_ABORT_FREE_AND_EXIT_TEST_CT 1
-tTestDesc aInt_Abort_Free_And_ExitTests[] = {
+static tTestDesc aInt_Abort_Free_And_ExitTests[] = {
{ TT_EGREP, zInt_Abort_Free_And_ExitSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Int_Abort_Free_And_Exit
*/
-const char* apzInt_Abort_Free_And_ExitPatch[] = {
+static const char* apzInt_Abort_Free_And_ExitPatch[] = {
"format",
"void\t%1(",
(char*)NULL };
@@ -2001,13 +2001,13 @@ tSCC zIsc_Omits_With_StdcSelect0[] =
"!defined\\(__STDC__\\) && !defined\\(_POSIX_SOURCE\\)";
#define ISC_OMITS_WITH_STDC_TEST_CT 1
-tTestDesc aIsc_Omits_With_StdcTests[] = {
+static tTestDesc aIsc_Omits_With_StdcTests[] = {
{ TT_EGREP, zIsc_Omits_With_StdcSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Isc_Omits_With_Stdc
*/
-const char* apzIsc_Omits_With_StdcPatch[] = {
+static const char* apzIsc_Omits_With_StdcPatch[] = {
"format",
"!defined(_POSIX_SOURCE)",
(char*)NULL };
@@ -2036,13 +2036,13 @@ tSCC zIo_Quotes_DefSelect0[] =
"define[ \t]+[A-Z0-9_]+IO[A-Z]*\\([a-zA-Z][,)]";
#define IO_QUOTES_DEF_TEST_CT 1
-tTestDesc aIo_Quotes_DefTests[] = {
+static tTestDesc aIo_Quotes_DefTests[] = {
{ TT_EGREP, zIo_Quotes_DefSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Io_Quotes_Def
*/
-const char* apzIo_Quotes_DefPatch[] = {
+static const char* apzIo_Quotes_DefPatch[] = {
"char_macro_def",
"IO",
(char*)NULL };
@@ -2071,13 +2071,13 @@ tSCC zIo_Quotes_UseSelect0[] =
"define[ \t]+[A-Z0-9_]+[ \t]+[A-Z0-9_]+IO[A-Z]*[ \t]*\\( *[^,']";
#define IO_QUOTES_USE_TEST_CT 1
-tTestDesc aIo_Quotes_UseTests[] = {
+static tTestDesc aIo_Quotes_UseTests[] = {
{ TT_EGREP, zIo_Quotes_UseSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Io_Quotes_Use
*/
-const char* apzIo_Quotes_UsePatch[] = {
+static const char* apzIo_Quotes_UsePatch[] = {
"char_macro_use",
"IO",
(char*)NULL };
@@ -2107,13 +2107,13 @@ tSCC zHpux_MaxintSelect0[] =
"^#[ \t]*define[ \t]*MAXINT[ \t]";
#define HPUX_MAXINT_TEST_CT 1
-tTestDesc aHpux_MaxintTests[] = {
+static tTestDesc aHpux_MaxintTests[] = {
{ TT_EGREP, zHpux_MaxintSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Hpux_Maxint
*/
-const char* apzHpux_MaxintPatch[] = {
+static const char* apzHpux_MaxintPatch[] = {
"format",
"#ifndef MAXINT\n\
%0\n\
@@ -2146,13 +2146,13 @@ tSCC zHpux_SystimeSelect0[] =
"^extern struct sigevent;";
#define HPUX_SYSTIME_TEST_CT 1
-tTestDesc aHpux_SystimeTests[] = {
+static tTestDesc aHpux_SystimeTests[] = {
{ TT_EGREP, zHpux_SystimeSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Hpux_Systime
*/
-const char* apzHpux_SystimePatch[] = {
+static const char* apzHpux_SystimePatch[] = {
"format",
"struct sigevent;",
(char*)NULL };
@@ -2182,13 +2182,13 @@ tSCC zIp_Missing_SemiSelect0[] =
"}$";
#define IP_MISSING_SEMI_TEST_CT 1
-tTestDesc aIp_Missing_SemiTests[] = {
+static tTestDesc aIp_Missing_SemiTests[] = {
{ TT_EGREP, zIp_Missing_SemiSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Ip_Missing_Semi
*/
-const char* apzIp_Missing_SemiPatch[] = { "sed",
+static const char* apzIp_Missing_SemiPatch[] = { "sed",
"-e", "/^struct/,/^};/s/}$/};/",
(char*)NULL };
@@ -2217,13 +2217,13 @@ tSCC zIrix_Asm_ApostropheSelect0[] =
"^[ \t]*#.*[Ww]e're";
#define IRIX_ASM_APOSTROPHE_TEST_CT 1
-tTestDesc aIrix_Asm_ApostropheTests[] = {
+static tTestDesc aIrix_Asm_ApostropheTests[] = {
{ TT_EGREP, zIrix_Asm_ApostropheSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Irix_Asm_Apostrophe
*/
-const char* apzIrix_Asm_ApostrophePatch[] = {
+static const char* apzIrix_Asm_ApostrophePatch[] = {
"format",
"%1 are",
"^([ \t]*#.*[Ww]e)'re",
@@ -2254,13 +2254,13 @@ tSCC zIsc_FmodSelect0[] =
"fmod\\(double\\)";
#define ISC_FMOD_TEST_CT 1
-tTestDesc aIsc_FmodTests[] = {
+static tTestDesc aIsc_FmodTests[] = {
{ TT_EGREP, zIsc_FmodSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Isc_Fmod
*/
-const char* apzIsc_FmodPatch[] = {
+static const char* apzIsc_FmodPatch[] = {
"format",
"fmod(double, double)",
(char*)NULL };
@@ -2290,13 +2290,13 @@ tSCC zKandr_ConcatSelect0[] =
"/\\*\\*/";
#define KANDR_CONCAT_TEST_CT 1
-tTestDesc aKandr_ConcatTests[] = {
+static tTestDesc aKandr_ConcatTests[] = {
{ TT_EGREP, zKandr_ConcatSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Kandr_Concat
*/
-const char* apzKandr_ConcatPatch[] = {
+static const char* apzKandr_ConcatPatch[] = {
"format",
"##",
(char*)NULL };
@@ -2332,14 +2332,14 @@ tSCC zLibc1_Ifdefd_MemxBypass0[] =
"__cplusplus";
#define LIBC1_IFDEFD_MEMX_TEST_CT 2
-tTestDesc aLibc1_Ifdefd_MemxTests[] = {
+static tTestDesc aLibc1_Ifdefd_MemxTests[] = {
{ TT_NEGREP, zLibc1_Ifdefd_MemxBypass0, (regex_t*)NULL },
{ TT_EGREP, zLibc1_Ifdefd_MemxSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Libc1_Ifdefd_Memx
*/
-const char* apzLibc1_Ifdefd_MemxPatch[] = {
+static const char* apzLibc1_Ifdefd_MemxPatch[] = {
"format",
"%1",
"/\\* `mem...' is a built-in function for gcc 2\\.x\\. \\*/\n\
@@ -2375,13 +2375,13 @@ tSCC zLimits_IfndefsBypass0[] =
"ifndef[ \t]+FLT_MIN";
#define LIMITS_IFNDEFS_TEST_CT 1
-tTestDesc aLimits_IfndefsTests[] = {
+static tTestDesc aLimits_IfndefsTests[] = {
{ TT_NEGREP, zLimits_IfndefsBypass0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Limits_Ifndefs
*/
-const char* apzLimits_IfndefsPatch[] = {
+static const char* apzLimits_IfndefsPatch[] = {
"format",
"#ifndef %1\n\
%0\n\
@@ -2414,13 +2414,13 @@ tSCC zLynx_Void_IntSelect0[] =
"#[ \t]*define[ \t]+void[ \t]+int[ \t]*";
#define LYNX_VOID_INT_TEST_CT 1
-tTestDesc aLynx_Void_IntTests[] = {
+static tTestDesc aLynx_Void_IntTests[] = {
{ TT_EGREP, zLynx_Void_IntSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Lynx_Void_Int
*/
-const char* apzLynx_Void_IntPatch[] = {
+static const char* apzLynx_Void_IntPatch[] = {
"format",
"",
(char*)NULL };
@@ -2450,13 +2450,13 @@ tSCC zLynxos_Fcntl_ProtoSelect0[] =
"fcntl[ \t]*\\(int, int, int\\)";
#define LYNXOS_FCNTL_PROTO_TEST_CT 1
-tTestDesc aLynxos_Fcntl_ProtoTests[] = {
+static tTestDesc aLynxos_Fcntl_ProtoTests[] = {
{ TT_EGREP, zLynxos_Fcntl_ProtoSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Lynxos_Fcntl_Proto
*/
-const char* apzLynxos_Fcntl_ProtoPatch[] = {
+static const char* apzLynxos_Fcntl_ProtoPatch[] = {
"format",
"%1...)",
"(fcntl[ \t]*\\(int, int, )int\\)",
@@ -2489,13 +2489,13 @@ tSCC zM88k_Bad_Hypot_OptSelect0[] =
"^extern double hypot\\(\\);\n";
#define M88K_BAD_HYPOT_OPT_TEST_CT 1
-tTestDesc aM88k_Bad_Hypot_OptTests[] = {
+static tTestDesc aM88k_Bad_Hypot_OptTests[] = {
{ TT_EGREP, zM88k_Bad_Hypot_OptSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for M88k_Bad_Hypot_Opt
*/
-const char* apzM88k_Bad_Hypot_OptPatch[] = {
+static const char* apzM88k_Bad_Hypot_OptPatch[] = {
"format",
"%0/* Workaround a stupid Motorola optimization if one\n\
of x or y is 0.0 and the other is negative! */\n\
@@ -2538,13 +2538,13 @@ tSCC zM88k_Bad_S_IfSelect0[] =
"#define[ \t]+S_IS[A-Z]+\\(m\\)[ \t]+\\(m[ \t]*&";
#define M88K_BAD_S_IF_TEST_CT 1
-tTestDesc aM88k_Bad_S_IfTests[] = {
+static tTestDesc aM88k_Bad_S_IfTests[] = {
{ TT_EGREP, zM88k_Bad_S_IfSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for M88k_Bad_S_If
*/
-const char* apzM88k_Bad_S_IfPatch[] = {
+static const char* apzM88k_Bad_S_IfPatch[] = {
"format",
"#define %1(m) (((m) & S_IFMT) == %2)",
"#define[ \t]+(S_IS[A-Z]+)\\(m\\)[ \t]+\\(m[ \t]*&[ \t]*(S_IF[A-Z][A-Z][A-Z]+|0[0-9]+)[ \t]*\\)",
@@ -2577,13 +2577,13 @@ tSCC zM88k_Multi_InclBypass0[] =
"#ifndef";
#define M88K_MULTI_INCL_TEST_CT 1
-tTestDesc aM88k_Multi_InclTests[] = {
+static tTestDesc aM88k_Multi_InclTests[] = {
{ TT_NEGREP, zM88k_Multi_InclBypass0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for M88k_Multi_Incl
*/
-const char* apzM88k_Multi_InclPatch[] = {
+static const char* apzM88k_Multi_InclPatch[] = {
"wrap",
(char*)NULL };
@@ -2618,14 +2618,14 @@ tSCC zMachine_Ansi_H_Va_ListBypass0[] =
"__builtin_va_list";
#define MACHINE_ANSI_H_VA_LIST_TEST_CT 2
-tTestDesc aMachine_Ansi_H_Va_ListTests[] = {
+static tTestDesc aMachine_Ansi_H_Va_ListTests[] = {
{ TT_NEGREP, zMachine_Ansi_H_Va_ListBypass0, (regex_t*)NULL },
{ TT_EGREP, zMachine_Ansi_H_Va_ListSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Machine_Ansi_H_Va_List
*/
-const char* apzMachine_Ansi_H_Va_ListPatch[] = {
+static const char* apzMachine_Ansi_H_Va_ListPatch[] = {
"format",
"%1__builtin_va_list",
"(define[ \t]+_BSD_VA_LIST_[ \t]+).*",
@@ -2654,13 +2654,13 @@ tSCC zMachine_NameName[] =
tSCC zMachine_NameFTst0[] = "machine_name";
#define MACHINE_NAME_TEST_CT 1
-tTestDesc aMachine_NameTests[] = {
+static tTestDesc aMachine_NameTests[] = {
{ TT_FUNCTION, zMachine_NameFTst0, 0 /* unused */ }, };
/*
* Fix Command Arguments for Machine_Name
*/
-const char* apzMachine_NamePatch[] = {
+static const char* apzMachine_NamePatch[] = {
"machine_name",
(char*)NULL };
@@ -2695,14 +2695,14 @@ tSCC zMath_ExceptionBypass0[] =
"We have a problem when using C\\+\\+";
#define MATH_EXCEPTION_TEST_CT 2
-tTestDesc aMath_ExceptionTests[] = {
+static tTestDesc aMath_ExceptionTests[] = {
{ TT_NEGREP, zMath_ExceptionBypass0, (regex_t*)NULL },
{ TT_EGREP, zMath_ExceptionSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Math_Exception
*/
-const char* apzMath_ExceptionPatch[] = {
+static const char* apzMath_ExceptionPatch[] = {
"wrap",
"#ifdef __cplusplus\n\
#define exception __math_exception\n\
@@ -2743,14 +2743,14 @@ tSCC zMath_Huge_Val_From_Dbl_MaxBypass0[] =
"define[ \t]+DBL_MAX";
#define MATH_HUGE_VAL_FROM_DBL_MAX_TEST_CT 2
-tTestDesc aMath_Huge_Val_From_Dbl_MaxTests[] = {
+static tTestDesc aMath_Huge_Val_From_Dbl_MaxTests[] = {
{ TT_NEGREP, zMath_Huge_Val_From_Dbl_MaxBypass0, (regex_t*)NULL },
{ TT_EGREP, zMath_Huge_Val_From_Dbl_MaxSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Math_Huge_Val_From_Dbl_Max
*/
-const char* apzMath_Huge_Val_From_Dbl_MaxPatch[] = { "sh", "-c",
+static const char* apzMath_Huge_Val_From_Dbl_MaxPatch[] = { "sh", "-c",
"\tdbl_max_def=`egrep 'define[ \t]+DBL_MAX[ \t]+.*' float.h | sed 's/.*DBL_MAX[ \t]*//' 2>/dev/null`\n\
\n\
\tif ( test -n \"${dbl_max_def}\" ) > /dev/null 2>&1\n\
@@ -2784,13 +2784,13 @@ tSCC zMath_Huge_Val_IfndefSelect0[] =
"define[ \t]+HUGE_VAL";
#define MATH_HUGE_VAL_IFNDEF_TEST_CT 1
-tTestDesc aMath_Huge_Val_IfndefTests[] = {
+static tTestDesc aMath_Huge_Val_IfndefTests[] = {
{ TT_EGREP, zMath_Huge_Val_IfndefSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Math_Huge_Val_Ifndef
*/
-const char* apzMath_Huge_Val_IfndefPatch[] = {
+static const char* apzMath_Huge_Val_IfndefPatch[] = {
"format",
"#ifndef HUGE_VAL\n\
%0\n\
@@ -2825,13 +2825,13 @@ tSCC zNested_MotorolaSelect0[] =
"max # bytes atomic in write|error value returned by Math lib";
#define NESTED_MOTOROLA_TEST_CT 1
-tTestDesc aNested_MotorolaTests[] = {
+static tTestDesc aNested_MotorolaTests[] = {
{ TT_EGREP, zNested_MotorolaSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Nested_Motorola
*/
-const char* apzNested_MotorolaPatch[] = { "sed",
+static const char* apzNested_MotorolaPatch[] = { "sed",
"-e", "s@^\\(#undef[ \t][ \t]*PIPE_BUF[ \t]*/\\* max # bytes atomic in write to a\\)$@\\1 */@",
"-e", "s@\\(/\\*#define\tHUGE_VAL\t3.[0-9e+]* \\)\\(/\\*error value returned by Math lib\\*/\\)$@\\1*/ \\2@",
(char*)NULL };
@@ -2861,13 +2861,13 @@ tSCC zNested_Sys_LimitsSelect0[] =
"CHILD_MAX";
#define NESTED_SYS_LIMITS_TEST_CT 1
-tTestDesc aNested_Sys_LimitsTests[] = {
+static tTestDesc aNested_Sys_LimitsTests[] = {
{ TT_EGREP, zNested_Sys_LimitsSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Nested_Sys_Limits
*/
-const char* apzNested_Sys_LimitsPatch[] = { "sed",
+static const char* apzNested_Sys_LimitsPatch[] = { "sed",
"-e", "/CHILD_MAX/s,/\\* Max, Max,",
"-e", "/OPEN_MAX/s,/\\* Max, Max,",
(char*)NULL };
@@ -2897,13 +2897,13 @@ tSCC zNested_Auth_DesSelect0[] =
"(/\\*.*rpc/auth_des\\.h>.*)/\\*";
#define NESTED_AUTH_DES_TEST_CT 1
-tTestDesc aNested_Auth_DesTests[] = {
+static tTestDesc aNested_Auth_DesTests[] = {
{ TT_EGREP, zNested_Auth_DesSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Nested_Auth_Des
*/
-const char* apzNested_Auth_DesPatch[] = {
+static const char* apzNested_Auth_DesPatch[] = {
"format",
"%1*/ /*",
(char*)NULL };
@@ -2933,13 +2933,13 @@ tSCC zNews_Os_RecursionSelect0[] =
"[ \t]*#include <stdlib\\.h>.*";
#define NEWS_OS_RECURSION_TEST_CT 1
-tTestDesc aNews_Os_RecursionTests[] = {
+static tTestDesc aNews_Os_RecursionTests[] = {
{ TT_EGREP, zNews_Os_RecursionSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for News_Os_Recursion
*/
-const char* apzNews_Os_RecursionPatch[] = {
+static const char* apzNews_Os_RecursionPatch[] = {
"format",
"#ifdef BOGUS_RECURSION\n\
%0\n\
@@ -2971,13 +2971,13 @@ tSCC zNext_Math_PrefixSelect0[] =
"^extern[ \t]+double[ \t]+__const__[ \t]";
#define NEXT_MATH_PREFIX_TEST_CT 1
-tTestDesc aNext_Math_PrefixTests[] = {
+static tTestDesc aNext_Math_PrefixTests[] = {
{ TT_EGREP, zNext_Math_PrefixSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Next_Math_Prefix
*/
-const char* apzNext_Math_PrefixPatch[] = {
+static const char* apzNext_Math_PrefixPatch[] = {
"format",
"extern double %1(",
"^extern[ \t]+double[ \t]+__const__[ \t]+([a-z]+)\\(",
@@ -3008,13 +3008,13 @@ tSCC zNext_TemplateSelect0[] =
"[ \t]template\\)";
#define NEXT_TEMPLATE_TEST_CT 1
-tTestDesc aNext_TemplateTests[] = {
+static tTestDesc aNext_TemplateTests[] = {
{ TT_EGREP, zNext_TemplateSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Next_Template
*/
-const char* apzNext_TemplatePatch[] = {
+static const char* apzNext_TemplatePatch[] = {
"format",
"(%1)",
"\\(([^)]*)[ \t]template\\)",
@@ -3045,13 +3045,13 @@ tSCC zNext_VolitileSelect0[] =
"^extern[ \t]+volatile[ \t]+void[ \t]";
#define NEXT_VOLITILE_TEST_CT 1
-tTestDesc aNext_VolitileTests[] = {
+static tTestDesc aNext_VolitileTests[] = {
{ TT_EGREP, zNext_VolitileSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Next_Volitile
*/
-const char* apzNext_VolitilePatch[] = {
+static const char* apzNext_VolitilePatch[] = {
"format",
"extern void %1(",
"^extern[ \t]+volatile[ \t]+void[ \t]+(exit|abort)\\(",
@@ -3082,13 +3082,13 @@ tSCC zNext_Wait_UnionSelect0[] =
"wait\\(union wait";
#define NEXT_WAIT_UNION_TEST_CT 1
-tTestDesc aNext_Wait_UnionTests[] = {
+static tTestDesc aNext_Wait_UnionTests[] = {
{ TT_EGREP, zNext_Wait_UnionSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Next_Wait_Union
*/
-const char* apzNext_Wait_UnionPatch[] = {
+static const char* apzNext_Wait_UnionPatch[] = {
"format",
"wait(void",
(char*)NULL };
@@ -3118,13 +3118,13 @@ tSCC zNodeent_SyntaxSelect0[] =
"char[ \t]*\\*na_addr[ \t]*$";
#define NODEENT_SYNTAX_TEST_CT 1
-tTestDesc aNodeent_SyntaxTests[] = {
+static tTestDesc aNodeent_SyntaxTests[] = {
{ TT_EGREP, zNodeent_SyntaxSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Nodeent_Syntax
*/
-const char* apzNodeent_SyntaxPatch[] = {
+static const char* apzNodeent_SyntaxPatch[] = {
"format",
"%0;",
(char*)NULL };
@@ -3160,7 +3160,7 @@ tSCC zOsf_Namespace_ATest3[] =
" -z \"`grep __regex_t regex.h`\"";
#define OSF_NAMESPACE_A_TEST_CT 4
-tTestDesc aOsf_Namespace_ATests[] = {
+static tTestDesc aOsf_Namespace_ATests[] = {
{ TT_TEST, zOsf_Namespace_ATest0, 0 /* unused */ },
{ TT_TEST, zOsf_Namespace_ATest1, 0 /* unused */ },
{ TT_TEST, zOsf_Namespace_ATest2, 0 /* unused */ },
@@ -3169,7 +3169,7 @@ tTestDesc aOsf_Namespace_ATests[] = {
/*
* Fix Command Arguments for Osf_Namespace_A
*/
-const char* apzOsf_Namespace_APatch[] = {
+static const char* apzOsf_Namespace_APatch[] = {
"format",
"__%0",
"reg(ex|off|match)_t",
@@ -3212,7 +3212,7 @@ tSCC zOsf_Namespace_CTest3[] =
" -z \"`grep __regex_t regex.h`\"";
#define OSF_NAMESPACE_C_TEST_CT 5
-tTestDesc aOsf_Namespace_CTests[] = {
+static tTestDesc aOsf_Namespace_CTests[] = {
{ TT_TEST, zOsf_Namespace_CTest0, 0 /* unused */ },
{ TT_TEST, zOsf_Namespace_CTest1, 0 /* unused */ },
{ TT_TEST, zOsf_Namespace_CTest2, 0 /* unused */ },
@@ -3222,7 +3222,7 @@ tTestDesc aOsf_Namespace_CTests[] = {
/*
* Fix Command Arguments for Osf_Namespace_C
*/
-const char* apzOsf_Namespace_CPatch[] = {
+static const char* apzOsf_Namespace_CPatch[] = {
"format",
"%0\n\
typedef __regex_t\tregex_t;\n\
@@ -3255,13 +3255,13 @@ tSCC zPthread_Page_SizeSelect0[] =
"^int __page_size";
#define PTHREAD_PAGE_SIZE_TEST_CT 1
-tTestDesc aPthread_Page_SizeTests[] = {
+static tTestDesc aPthread_Page_SizeTests[] = {
{ TT_EGREP, zPthread_Page_SizeSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Pthread_Page_Size
*/
-const char* apzPthread_Page_SizePatch[] = {
+static const char* apzPthread_Page_SizePatch[] = {
"format",
"extern %0",
(char*)NULL };
@@ -3291,13 +3291,13 @@ tSCC zRead_Ret_TypeSelect0[] =
"extern int\t.*, fread\\(\\), fwrite\\(\\)";
#define READ_RET_TYPE_TEST_CT 1
-tTestDesc aRead_Ret_TypeTests[] = {
+static tTestDesc aRead_Ret_TypeTests[] = {
{ TT_EGREP, zRead_Ret_TypeSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Read_Ret_Type
*/
-const char* apzRead_Ret_TypePatch[] = {
+static const char* apzRead_Ret_TypePatch[] = {
"format",
"extern unsigned int fread(), fwrite();\n\
%1%2",
@@ -3329,13 +3329,13 @@ tSCC zRs6000_DoubleSelect0[] =
"[^a-zA-Z_]class\\(";
#define RS6000_DOUBLE_TEST_CT 1
-tTestDesc aRs6000_DoubleTests[] = {
+static tTestDesc aRs6000_DoubleTests[] = {
{ TT_EGREP, zRs6000_DoubleSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Rs6000_Double
*/
-const char* apzRs6000_DoublePatch[] = {
+static const char* apzRs6000_DoublePatch[] = {
"format",
"#ifndef __cplusplus\n\
%0\n\
@@ -3368,13 +3368,13 @@ tSCC zRs6000_FchmodSelect0[] =
"fchmod\\(char \\*";
#define RS6000_FCHMOD_TEST_CT 1
-tTestDesc aRs6000_FchmodTests[] = {
+static tTestDesc aRs6000_FchmodTests[] = {
{ TT_EGREP, zRs6000_FchmodSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Rs6000_Fchmod
*/
-const char* apzRs6000_FchmodPatch[] = {
+static const char* apzRs6000_FchmodPatch[] = {
"format",
"fchmod(int",
(char*)NULL };
@@ -3404,13 +3404,13 @@ tSCC zRs6000_ParamSelect0[] =
"rename\\(const char \\*old, const char \\*new\\)";
#define RS6000_PARAM_TEST_CT 1
-tTestDesc aRs6000_ParamTests[] = {
+static tTestDesc aRs6000_ParamTests[] = {
{ TT_EGREP, zRs6000_ParamSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Rs6000_Param
*/
-const char* apzRs6000_ParamPatch[] = {
+static const char* apzRs6000_ParamPatch[] = {
"format",
"rename(const char *_old, const char *_new)",
(char*)NULL };
@@ -3442,13 +3442,13 @@ tSCC zSco_Static_FuncSelect0[] =
"^static int";
#define SCO_STATIC_FUNC_TEST_CT 1
-tTestDesc aSco_Static_FuncTests[] = {
+static tTestDesc aSco_Static_FuncTests[] = {
{ TT_EGREP, zSco_Static_FuncSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Sco_Static_Func
*/
-const char* apzSco_Static_FuncPatch[] = { "sed",
+static const char* apzSco_Static_FuncPatch[] = { "sed",
"-e", "/^static int/i\\\n\
#if __cplusplus\\\n\
extern \"C\" {\\\n\
@@ -3485,13 +3485,13 @@ tSCC zSco_Strict_AnsiSelect0[] =
"^[ \t]*#[ \t]*if.*!__STDC__";
#define SCO_STRICT_ANSI_TEST_CT 1
-tTestDesc aSco_Strict_AnsiTests[] = {
+static tTestDesc aSco_Strict_AnsiTests[] = {
{ TT_EGREP, zSco_Strict_AnsiSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Sco_Strict_Ansi
*/
-const char* apzSco_Strict_AnsiPatch[] = {
+static const char* apzSco_Strict_AnsiPatch[] = {
"format",
"%1defined(__STRICT_ANSI__)%2",
"^([ \t]*#[ \t]*if[ \t].*!)__STDC__(.*)",
@@ -3524,13 +3524,13 @@ tSCC zSco_UtimeSelect0[] =
"\\(const char \\*, struct utimbuf \\*\\);";
#define SCO_UTIME_TEST_CT 1
-tTestDesc aSco_UtimeTests[] = {
+static tTestDesc aSco_UtimeTests[] = {
{ TT_EGREP, zSco_UtimeSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Sco_Utime
*/
-const char* apzSco_UtimePatch[] = {
+static const char* apzSco_UtimePatch[] = {
"format",
"(const char *, const struct utimbuf *);",
(char*)NULL };
@@ -3560,13 +3560,13 @@ tSCC zStatsswtchSelect0[] =
"boottime$";
#define STATSSWTCH_TEST_CT 1
-tTestDesc aStatsswtchTests[] = {
+static tTestDesc aStatsswtchTests[] = {
{ TT_EGREP, zStatsswtchSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Statsswtch
*/
-const char* apzStatsswtchPatch[] = {
+static const char* apzStatsswtchPatch[] = {
"format",
"boottime;",
(char*)NULL };
@@ -3596,13 +3596,13 @@ tSCC zStdio_Stdarg_HBypass0[] =
"include.*(stdarg.h|machine/ansi.h)";
#define STDIO_STDARG_H_TEST_CT 1
-tTestDesc aStdio_Stdarg_HTests[] = {
+static tTestDesc aStdio_Stdarg_HTests[] = {
{ TT_NEGREP, zStdio_Stdarg_HBypass0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Stdio_Stdarg_H
*/
-const char* apzStdio_Stdarg_HPatch[] = {
+static const char* apzStdio_Stdarg_HPatch[] = {
"wrap",
"#define __need___va_list\n\
#include <stdarg.h>\n",
@@ -3633,13 +3633,13 @@ tSCC zStdio_Va_ListBypass0[] =
"__gnuc_va_list|_BSD_VA_LIST_";
#define STDIO_VA_LIST_TEST_CT 1
-tTestDesc aStdio_Va_ListTests[] = {
+static tTestDesc aStdio_Va_ListTests[] = {
{ TT_NEGREP, zStdio_Va_ListBypass0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Stdio_Va_List
*/
-const char* apzStdio_Va_ListPatch[] = { "sed",
+static const char* apzStdio_Va_ListPatch[] = { "sed",
"-e", "s@ va_list @ __gnuc_va_list @\n\
s@ va_list)@ __gnuc_va_list)@\n\
s@ _VA_LIST_));@ __gnuc_va_list));@\n\
@@ -3678,13 +3678,13 @@ tSCC zStruct_FileSelect0[] =
"^.*xdrstdio_create.*struct __file_s";
#define STRUCT_FILE_TEST_CT 1
-tTestDesc aStruct_FileTests[] = {
+static tTestDesc aStruct_FileTests[] = {
{ TT_EGREP, zStruct_FileSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Struct_File
*/
-const char* apzStruct_FilePatch[] = {
+static const char* apzStruct_FilePatch[] = {
"format",
"struct __file_s;\n\
%0",
@@ -3721,14 +3721,14 @@ tSCC zStruct_SockaddrBypass0[] =
"<sys/socket.h>";
#define STRUCT_SOCKADDR_TEST_CT 2
-tTestDesc aStruct_SockaddrTests[] = {
+static tTestDesc aStruct_SockaddrTests[] = {
{ TT_NEGREP, zStruct_SockaddrBypass0, (regex_t*)NULL },
{ TT_EGREP, zStruct_SockaddrSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Struct_Sockaddr
*/
-const char* apzStruct_SockaddrPatch[] = {
+static const char* apzStruct_SockaddrPatch[] = {
"format",
"struct sockaddr;\n\
%0",
@@ -3759,13 +3759,13 @@ tSCC zSun_Auth_ProtoSelect0[] =
"\\(\\*[a-z][a-z_]*\\)\\(\\)";
#define SUN_AUTH_PROTO_TEST_CT 1
-tTestDesc aSun_Auth_ProtoTests[] = {
+static tTestDesc aSun_Auth_ProtoTests[] = {
{ TT_EGREP, zSun_Auth_ProtoSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Sun_Auth_Proto
*/
-const char* apzSun_Auth_ProtoPatch[] = {
+static const char* apzSun_Auth_ProtoPatch[] = {
"format",
"#ifdef __cplusplus\n\
%1(...);%2\n\
@@ -3800,13 +3800,13 @@ tSCC zSun_Bogus_IfdefSelect0[] =
"#ifdef(.*\\|\\|.*)";
#define SUN_BOGUS_IFDEF_TEST_CT 1
-tTestDesc aSun_Bogus_IfdefTests[] = {
+static tTestDesc aSun_Bogus_IfdefTests[] = {
{ TT_EGREP, zSun_Bogus_IfdefSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Sun_Bogus_Ifdef
*/
-const char* apzSun_Bogus_IfdefPatch[] = {
+static const char* apzSun_Bogus_IfdefPatch[] = {
"format",
"#if%1",
(char*)NULL };
@@ -3836,13 +3836,13 @@ tSCC zSun_CatmacroSelect0[] =
"^#define[ \t]+CAT\\(a,b\\).*";
#define SUN_CATMACRO_TEST_CT 1
-tTestDesc aSun_CatmacroTests[] = {
+static tTestDesc aSun_CatmacroTests[] = {
{ TT_EGREP, zSun_CatmacroSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Sun_Catmacro
*/
-const char* apzSun_CatmacroPatch[] = {
+static const char* apzSun_CatmacroPatch[] = {
"format",
"#ifdef __STDC__\n\
# define CAT(a,b) a##b\n\
@@ -3874,7 +3874,7 @@ tSCC zSun_MallocList[] =
/*
* Fix Command Arguments for Sun_Malloc
*/
-const char* apzSun_MallocPatch[] = { "sed",
+static const char* apzSun_MallocPatch[] = { "sed",
"-e", "s/typedef[ \t]char \\*\tmalloc_t/typedef void \\*\tmalloc_t/g",
"-e", "s/int[ \t][ \t]*free/void\tfree/g",
"-e", "s/char\\([ \t]*\\*[ \t]*malloc\\)/void\\1/g",
@@ -3907,13 +3907,13 @@ tSCC zSun_Rusers_SemiSelect0[] =
"_cnt$";
#define SUN_RUSERS_SEMI_TEST_CT 1
-tTestDesc aSun_Rusers_SemiTests[] = {
+static tTestDesc aSun_Rusers_SemiTests[] = {
{ TT_EGREP, zSun_Rusers_SemiSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Sun_Rusers_Semi
*/
-const char* apzSun_Rusers_SemiPatch[] = { "sed",
+static const char* apzSun_Rusers_SemiPatch[] = { "sed",
"-e", "/^struct/,/^};/s/_cnt$/_cnt;/",
(char*)NULL };
@@ -3942,13 +3942,13 @@ tSCC zSun_SignalSelect0[] =
"^void\t\\(\\*signal\\(\\)\\)\\(\\);.*";
#define SUN_SIGNAL_TEST_CT 1
-tTestDesc aSun_SignalTests[] = {
+static tTestDesc aSun_SignalTests[] = {
{ TT_EGREP, zSun_SignalSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Sun_Signal
*/
-const char* apzSun_SignalPatch[] = {
+static const char* apzSun_SignalPatch[] = {
"format",
"#ifdef __cplusplus\n\
void\t(*signal(...))(...);\n\
@@ -3988,14 +3988,14 @@ tSCC zSunos_Matherr_DeclBypass0[] =
"matherr.*struct exception";
#define SUNOS_MATHERR_DECL_TEST_CT 2
-tTestDesc aSunos_Matherr_DeclTests[] = {
+static tTestDesc aSunos_Matherr_DeclTests[] = {
{ TT_NEGREP, zSunos_Matherr_DeclBypass0, (regex_t*)NULL },
{ TT_EGREP, zSunos_Matherr_DeclSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Sunos_Matherr_Decl
*/
-const char* apzSunos_Matherr_DeclPatch[] = {
+static const char* apzSunos_Matherr_DeclPatch[] = {
"wrap",
"struct exception;\n",
(char*)NULL };
@@ -4025,13 +4025,13 @@ tSCC zSunos_StrlenSelect0[] =
"int[ \t]*strlen\\(\\);(.*)";
#define SUNOS_STRLEN_TEST_CT 1
-tTestDesc aSunos_StrlenTests[] = {
+static tTestDesc aSunos_StrlenTests[] = {
{ TT_EGREP, zSunos_StrlenSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Sunos_Strlen
*/
-const char* apzSunos_StrlenPatch[] = {
+static const char* apzSunos_StrlenPatch[] = {
"format",
"__SIZE_TYPE__ strlen();%1",
(char*)NULL };
@@ -4061,13 +4061,13 @@ tSCC zSvr4__PSelect0[] =
"^#define[ \t]+__P.*";
#define SVR4__P_TEST_CT 1
-tTestDesc aSvr4__PTests[] = {
+static tTestDesc aSvr4__PTests[] = {
{ TT_EGREP, zSvr4__PSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Svr4__P
*/
-const char* apzSvr4__PPatch[] = {
+static const char* apzSvr4__PPatch[] = {
"format",
"#ifndef __P\n\
%0\n\
@@ -4099,13 +4099,13 @@ tSCC zSvr4_GetcwdSelect0[] =
"getcwd\\(char \\*, int\\)";
#define SVR4_GETCWD_TEST_CT 1
-tTestDesc aSvr4_GetcwdTests[] = {
+static tTestDesc aSvr4_GetcwdTests[] = {
{ TT_EGREP, zSvr4_GetcwdSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Svr4_Getcwd
*/
-const char* apzSvr4_GetcwdPatch[] = {
+static const char* apzSvr4_GetcwdPatch[] = {
"format",
"getcwd(char *, size_t)",
(char*)NULL };
@@ -4135,13 +4135,13 @@ tSCC zSvr4_ProfilSelect0[] =
"profil\\(unsigned short \\*, unsigned int, unsigned int, unsigned int\\)";
#define SVR4_PROFIL_TEST_CT 1
-tTestDesc aSvr4_ProfilTests[] = {
+static tTestDesc aSvr4_ProfilTests[] = {
{ TT_EGREP, zSvr4_ProfilSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Svr4_Profil
*/
-const char* apzSvr4_ProfilPatch[] = {
+static const char* apzSvr4_ProfilPatch[] = {
"format",
"profil(unsigned short *, size_t, int, unsigned int)",
(char*)NULL };
@@ -4177,14 +4177,14 @@ tSCC zGnu_TypesBypass0[] =
"_GCC_(PTRDIFF|SIZE|WCHAR)_T";
#define GNU_TYPES_TEST_CT 2
-tTestDesc aGnu_TypesTests[] = {
+static tTestDesc aGnu_TypesTests[] = {
{ TT_NEGREP, zGnu_TypesBypass0, (regex_t*)NULL },
{ TT_EGREP, zGnu_TypesSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Gnu_Types
*/
-const char* apzGnu_TypesPatch[] = {
+static const char* apzGnu_TypesPatch[] = {
"gnu_type",
(char*)NULL };
@@ -4211,7 +4211,7 @@ tSCC zSysv68_StringList[] =
/*
* Fix Command Arguments for Sysv68_String
*/
-const char* apzSysv68_StringPatch[] = { "sed",
+static const char* apzSysv68_StringPatch[] = { "sed",
"-e", "s/extern[ \t]*int[ \t]*strlen();/extern unsigned int strlen();/",
"-e", "s/extern[ \t]*int[ \t]*ffs[ \t]*(long);/extern int ffs(int);/",
"-e", "s/strdup(char \\*s1);/strdup(const char *s1);/",
@@ -4250,13 +4250,13 @@ tSCC zSysz_Stdlib_For_SunSelect0[] =
"char[ \t]*\\*[ \t]*(calloc|malloc|realloc|bsearch)[ \t]*\\(";
#define SYSZ_STDLIB_FOR_SUN_TEST_CT 1
-tTestDesc aSysz_Stdlib_For_SunTests[] = {
+static tTestDesc aSysz_Stdlib_For_SunTests[] = {
{ TT_EGREP, zSysz_Stdlib_For_SunSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Sysz_Stdlib_For_Sun
*/
-const char* apzSysz_Stdlib_For_SunPatch[] = {
+static const char* apzSysz_Stdlib_For_SunPatch[] = {
"format",
"void *\t%1(",
(char*)NULL };
@@ -4286,13 +4286,13 @@ tSCC zTinfo_CplusplusSelect0[] =
"[ \t]_cplusplus";
#define TINFO_CPLUSPLUS_TEST_CT 1
-tTestDesc aTinfo_CplusplusTests[] = {
+static tTestDesc aTinfo_CplusplusTests[] = {
{ TT_EGREP, zTinfo_CplusplusSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Tinfo_Cplusplus
*/
-const char* apzTinfo_CplusplusPatch[] = {
+static const char* apzTinfo_CplusplusPatch[] = {
"format",
" __cplusplus",
(char*)NULL };
@@ -4322,13 +4322,13 @@ tSCC zUltrix_Atof_ParamSelect0[] =
"atof\\([ \t]*char";
#define ULTRIX_ATOF_PARAM_TEST_CT 1
-tTestDesc aUltrix_Atof_ParamTests[] = {
+static tTestDesc aUltrix_Atof_ParamTests[] = {
{ TT_EGREP, zUltrix_Atof_ParamSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Ultrix_Atof_Param
*/
-const char* apzUltrix_Atof_ParamPatch[] = {
+static const char* apzUltrix_Atof_ParamPatch[] = {
"format",
"atof(const char",
(char*)NULL };
@@ -4358,13 +4358,13 @@ tSCC zUltrix_ConstSelect0[] =
"perror\\( char \\*";
#define ULTRIX_CONST_TEST_CT 1
-tTestDesc aUltrix_ConstTests[] = {
+static tTestDesc aUltrix_ConstTests[] = {
{ TT_EGREP, zUltrix_ConstSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Ultrix_Const
*/
-const char* apzUltrix_ConstPatch[] = {
+static const char* apzUltrix_ConstPatch[] = {
"format",
"%1 const %3 *__",
"([ \t*](perror|fputs|fwrite|scanf|fscanf)\\(.*)[ \t]+(char|void) \\*__",
@@ -4395,13 +4395,13 @@ tSCC zUltrix_Const2Select0[] =
"\\*fopen\\( char \\*";
#define ULTRIX_CONST2_TEST_CT 1
-tTestDesc aUltrix_Const2Tests[] = {
+static tTestDesc aUltrix_Const2Tests[] = {
{ TT_EGREP, zUltrix_Const2Select0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Ultrix_Const2
*/
-const char* apzUltrix_Const2Patch[] = {
+static const char* apzUltrix_Const2Patch[] = {
"format",
"%1( const char *%3, const char *",
"([ \t*](fopen|sscanf|popen|tempnam))\\([ \t]*char[ \t]*\\*([^,]*),[ \t]*char[ \t]*\\*[ \t]*",
@@ -4432,13 +4432,13 @@ tSCC zUltrix_Fix_FixprotoSelect0[] =
"ULTRIX";
#define ULTRIX_FIX_FIXPROTO_TEST_CT 1
-tTestDesc aUltrix_Fix_FixprotoTests[] = {
+static tTestDesc aUltrix_Fix_FixprotoTests[] = {
{ TT_EGREP, zUltrix_Fix_FixprotoSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Ultrix_Fix_Fixproto
*/
-const char* apzUltrix_Fix_FixprotoPatch[] = {
+static const char* apzUltrix_Fix_FixprotoPatch[] = {
"format",
"struct utsname;\n\
%0",
@@ -4470,13 +4470,13 @@ tSCC zUltrix_IfdefSelect0[] =
"^#ifdef KERNEL[ \t]+&&";
#define ULTRIX_IFDEF_TEST_CT 1
-tTestDesc aUltrix_IfdefTests[] = {
+static tTestDesc aUltrix_IfdefTests[] = {
{ TT_EGREP, zUltrix_IfdefSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Ultrix_Ifdef
*/
-const char* apzUltrix_IfdefPatch[] = {
+static const char* apzUltrix_IfdefPatch[] = {
"format",
"#if defined(KERNEL) &&",
(char*)NULL };
@@ -4506,13 +4506,13 @@ tSCC zUltrix_Math_IfdefSelect0[] =
"^(#if.*)\\|\\|[ \t]+CC\\$[a-z]+";
#define ULTRIX_MATH_IFDEF_TEST_CT 1
-tTestDesc aUltrix_Math_IfdefTests[] = {
+static tTestDesc aUltrix_Math_IfdefTests[] = {
{ TT_EGREP, zUltrix_Math_IfdefSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Ultrix_Math_Ifdef
*/
-const char* apzUltrix_Math_IfdefPatch[] = {
+static const char* apzUltrix_Math_IfdefPatch[] = {
"format",
"%1",
(char*)NULL };
@@ -4542,13 +4542,13 @@ tSCC zUltrix_Nested_IoctlSelect0[] =
"^/\\* #define SIOCSCREEN";
#define ULTRIX_NESTED_IOCTL_TEST_CT 1
-tTestDesc aUltrix_Nested_IoctlTests[] = {
+static tTestDesc aUltrix_Nested_IoctlTests[] = {
{ TT_EGREP, zUltrix_Nested_IoctlSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Ultrix_Nested_Ioctl
*/
-const char* apzUltrix_Nested_IoctlPatch[] = { "sed",
+static const char* apzUltrix_Nested_IoctlPatch[] = { "sed",
"-e", "/^\\/\\* #define SIOCSCREEN/s@/\\* screend@*//* screend@",
(char*)NULL };
@@ -4577,13 +4577,13 @@ tSCC zUltrix_Nested_SvcSelect0[] =
"^ \\*[ \t]*int protocol; */\\*";
#define ULTRIX_NESTED_SVC_TEST_CT 1
-tTestDesc aUltrix_Nested_SvcTests[] = {
+static tTestDesc aUltrix_Nested_SvcTests[] = {
{ TT_EGREP, zUltrix_Nested_SvcSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Ultrix_Nested_Svc
*/
-const char* apzUltrix_Nested_SvcPatch[] = { "sed",
+static const char* apzUltrix_Nested_SvcPatch[] = { "sed",
"-e", "s@^\\( \\*\tint protocol; \\)/\\*@\\1*/ /*@",
(char*)NULL };
@@ -4612,13 +4612,13 @@ tSCC zUltrix_StatSelect0[] =
"@\\(#\\)stat\\.h.*6\\.1.*\\(ULTRIX\\)";
#define ULTRIX_STAT_TEST_CT 1
-tTestDesc aUltrix_StatTests[] = {
+static tTestDesc aUltrix_StatTests[] = {
{ TT_EGREP, zUltrix_StatSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Ultrix_Stat
*/
-const char* apzUltrix_StatPatch[] = { "sed",
+static const char* apzUltrix_StatPatch[] = { "sed",
"-e", "/^#define[ \t]S_IFPORT[ \t]*S_IFIFO$/a\\\n\
\\\n\
/* macro to test for symbolic link */\\\n\
@@ -4653,13 +4653,13 @@ tSCC zUltrix_StaticSelect0[] =
"#include \"r[34]_cpu";
#define ULTRIX_STATIC_TEST_CT 1
-tTestDesc aUltrix_StaticTests[] = {
+static tTestDesc aUltrix_StaticTests[] = {
{ TT_EGREP, zUltrix_StaticSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Ultrix_Static
*/
-const char* apzUltrix_StaticPatch[] = { "sed",
+static const char* apzUltrix_StaticPatch[] = { "sed",
"-e", "s/^static struct tlb_pid_state/struct tlb_pid_state/",
"-e", "s/^#include \"r3_cpu\\.h\"$/#include <machine\\/r3_cpu\\.h>/",
"-e", "s/^#include \"r4_cpu\\.h\"$/#include <machine\\/r4_cpu\\.h>/",
@@ -4690,13 +4690,13 @@ tSCC zUltrix_StringsSelect0[] =
"@\\(#\\)strings\\.h.*6\\.1.*\\(ULTRIX\\)";
#define ULTRIX_STRINGS_TEST_CT 1
-tTestDesc aUltrix_StringsTests[] = {
+static tTestDesc aUltrix_StringsTests[] = {
{ TT_EGREP, zUltrix_StringsSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Ultrix_Strings
*/
-const char* apzUltrix_StringsPatch[] = {
+static const char* apzUltrix_StringsPatch[] = {
"wrap",
(char*)NULL };
@@ -4730,14 +4730,14 @@ tSCC zUndefine_NullBypass0[] =
"#[ \t]*(ifn|un)def[ \t]+NULL($|[ \t\r])";
#define UNDEFINE_NULL_TEST_CT 2
-tTestDesc aUndefine_NullTests[] = {
+static tTestDesc aUndefine_NullTests[] = {
{ TT_NEGREP, zUndefine_NullBypass0, (regex_t*)NULL },
{ TT_EGREP, zUndefine_NullSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Undefine_Null
*/
-const char* apzUndefine_NullPatch[] = {
+static const char* apzUndefine_NullPatch[] = {
"format",
"#ifndef NULL%2\n\
#define NULL%1%2\n\
@@ -4784,14 +4784,14 @@ tSCC zUw7_Byteorder_FixTest0[] =
"-f $DESTDIR/sys/byteorder.h";
#define UW7_BYTEORDER_FIX_TEST_CT 2
-tTestDesc aUw7_Byteorder_FixTests[] = {
+static tTestDesc aUw7_Byteorder_FixTests[] = {
{ TT_TEST, zUw7_Byteorder_FixTest0, 0 /* unused */ },
{ TT_EGREP, zUw7_Byteorder_FixSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Uw7_Byteorder_Fix
*/
-const char* apzUw7_Byteorder_FixPatch[] = {
+static const char* apzUw7_Byteorder_FixPatch[] = {
"format",
"",
"^extern.*(htons|ntohs).*\\(in_port_t\\).*\n",
@@ -4822,13 +4822,13 @@ tSCC zVa_I960_MacroSelect0[] =
"__(vsiz|vali|vpad|alignof__)";
#define VA_I960_MACRO_TEST_CT 1
-tTestDesc aVa_I960_MacroTests[] = {
+static tTestDesc aVa_I960_MacroTests[] = {
{ TT_EGREP, zVa_I960_MacroSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Va_I960_Macro
*/
-const char* apzVa_I960_MacroPatch[] = {
+static const char* apzVa_I960_MacroPatch[] = {
"format",
"__vx%1",
(char*)NULL };
@@ -4858,13 +4858,13 @@ tSCC zVoid_NullSelect0[] =
"^#[ \t]*define[ \t]+NULL[ \t]+\\(\\(void[ \t]*\\*\\)0\\)";
#define VOID_NULL_TEST_CT 1
-tTestDesc aVoid_NullTests[] = {
+static tTestDesc aVoid_NullTests[] = {
{ TT_EGREP, zVoid_NullSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Void_Null
*/
-const char* apzVoid_NullPatch[] = {
+static const char* apzVoid_NullPatch[] = {
"format",
"#define NULL 0",
(char*)NULL };
@@ -4894,13 +4894,13 @@ tSCC zVxworks_Gcc_ProblemSelect0[] =
"__GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__";
#define VXWORKS_GCC_PROBLEM_TEST_CT 1
-tTestDesc aVxworks_Gcc_ProblemTests[] = {
+static tTestDesc aVxworks_Gcc_ProblemTests[] = {
{ TT_EGREP, zVxworks_Gcc_ProblemSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Vxworks_Gcc_Problem
*/
-const char* apzVxworks_Gcc_ProblemPatch[] = { "sed",
+static const char* apzVxworks_Gcc_ProblemPatch[] = { "sed",
"-e", "s/#ifdef __GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__/#if 1/",
"-e", "/[ \t]size_t/i\\\n\
#ifndef _GCC_SIZE_T\\\n\
@@ -4944,13 +4944,13 @@ tSCC zVxworks_Needs_VxtypesSelect0[] =
"uint_t([ \t]+_clocks_per_sec)";
#define VXWORKS_NEEDS_VXTYPES_TEST_CT 1
-tTestDesc aVxworks_Needs_VxtypesTests[] = {
+static tTestDesc aVxworks_Needs_VxtypesTests[] = {
{ TT_EGREP, zVxworks_Needs_VxtypesSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Vxworks_Needs_Vxtypes
*/
-const char* apzVxworks_Needs_VxtypesPatch[] = {
+static const char* apzVxworks_Needs_VxtypesPatch[] = {
"format",
"unsigned int%1",
(char*)NULL };
@@ -4990,7 +4990,7 @@ tSCC zVxworks_Needs_VxworksTest2[] =
" -n \"`egrep ULONG $file`\"";
#define VXWORKS_NEEDS_VXWORKS_TEST_CT 4
-tTestDesc aVxworks_Needs_VxworksTests[] = {
+static tTestDesc aVxworks_Needs_VxworksTests[] = {
{ TT_TEST, zVxworks_Needs_VxworksTest0, 0 /* unused */ },
{ TT_TEST, zVxworks_Needs_VxworksTest1, 0 /* unused */ },
{ TT_TEST, zVxworks_Needs_VxworksTest2, 0 /* unused */ },
@@ -4999,7 +4999,7 @@ tTestDesc aVxworks_Needs_VxworksTests[] = {
/*
* Fix Command Arguments for Vxworks_Needs_Vxworks
*/
-const char* apzVxworks_Needs_VxworksPatch[] = { "sed",
+static const char* apzVxworks_Needs_VxworksPatch[] = { "sed",
"-e", "/#[ \t]define[ \t][ \t]*__INCstath/a\\\n\
#include <types/vxTypesOld.h>\n",
(char*)NULL };
@@ -5035,14 +5035,14 @@ tSCC zVxworks_TimeTest0[] =
" -r vxWorks.h";
#define VXWORKS_TIME_TEST_CT 2
-tTestDesc aVxworks_TimeTests[] = {
+static tTestDesc aVxworks_TimeTests[] = {
{ TT_TEST, zVxworks_TimeTest0, 0 /* unused */ },
{ TT_EGREP, zVxworks_TimeSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Vxworks_Time
*/
-const char* apzVxworks_TimePatch[] = {
+static const char* apzVxworks_TimePatch[] = {
"format",
"#ifndef __gcc_VOIDFUNCPTR_defined\n\
#ifdef __cplusplus\n\
@@ -5086,14 +5086,14 @@ tSCC zX11_ClassBypass0[] =
"__cplusplus";
#define X11_CLASS_TEST_CT 2
-tTestDesc aX11_ClassTests[] = {
+static tTestDesc aX11_ClassTests[] = {
{ TT_NEGREP, zX11_ClassBypass0, (regex_t*)NULL },
{ TT_EGREP, zX11_ClassSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for X11_Class
*/
-const char* apzX11_ClassPatch[] = {
+static const char* apzX11_ClassPatch[] = {
"format",
"#ifdef __cplusplus\n\
%1c_class;%2\n\
@@ -5133,14 +5133,14 @@ tSCC zX11_Class_UsageBypass0[] =
"__cplusplus";
#define X11_CLASS_USAGE_TEST_CT 2
-tTestDesc aX11_Class_UsageTests[] = {
+static tTestDesc aX11_Class_UsageTests[] = {
{ TT_NEGREP, zX11_Class_UsageBypass0, (regex_t*)NULL },
{ TT_EGREP, zX11_Class_UsageSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for X11_Class_Usage
*/
-const char* apzX11_Class_UsagePatch[] = {
+static const char* apzX11_Class_UsagePatch[] = {
"format",
" c_class)",
(char*)NULL };
@@ -5170,13 +5170,13 @@ tSCC zX11_NewBypass0[] =
"__cplusplus";
#define X11_NEW_TEST_CT 1
-tTestDesc aX11_NewTests[] = {
+static tTestDesc aX11_NewTests[] = {
{ TT_NEGREP, zX11_NewBypass0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for X11_New
*/
-const char* apzX11_NewPatch[] = { "sed",
+static const char* apzX11_NewPatch[] = { "sed",
"-e", "/Widget\told, new;/i\\\n\
#ifdef __cplusplus\\\n\
\tWidget\told, c_new;\\\n\
@@ -5211,13 +5211,13 @@ tSCC zX11_SprintfSelect0[] =
"^extern char \\*\tsprintf\\(\\);$";
#define X11_SPRINTF_TEST_CT 1
-tTestDesc aX11_SprintfTests[] = {
+static tTestDesc aX11_SprintfTests[] = {
{ TT_EGREP, zX11_SprintfSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for X11_Sprintf
*/
-const char* apzX11_SprintfPatch[] = {
+static const char* apzX11_SprintfPatch[] = {
"format",
"#ifndef __STDC__\n\
%0\n\
diff --git a/gcc/fixinc/fixlib.h b/gcc/fixinc/fixlib.h
index 47229717c1f..11d8fb5c705 100644
--- a/gcc/fixinc/fixlib.h
+++ b/gcc/fixinc/fixlib.h
@@ -79,6 +79,7 @@ typedef int t_success;
#define NULLPROCESS ((pid_t)0)
#define EXIT_PANIC 99
+#endif /* NOPROCESS */
#ifndef HAVE_T_BOOL_ENUM
#define HAVE_T_BOOL_ENUM
@@ -93,9 +94,6 @@ typedef int apply_fix_p_t; /* Apply Fix Predicate Type */
#define APPLY_FIX 0
#define SKIP_FIX 1
-#define _P_(p) ()
-#endif
-
#define ENV_TABLE \
_ENV_( pz_machine, BOOL_TRUE, "TARGET_MACHINE", \
"output from config.guess" ) \
@@ -194,25 +192,31 @@ extern int gnu_type_map_ct;
/*
* Exported procedures
*/
-char * load_file_data _P_(( FILE* fp ));
+char * load_file_data PARAMS(( FILE* fp ));
+
#ifdef IS_CXX_HEADER_NEEDED
-t_bool is_cxx_header _P_(( tCC* filename, tCC* filetext ));
+t_bool is_cxx_header PARAMS(( tCC* filename, tCC* filetext ));
#endif /* IS_CXX_HEADER_NEEDED */
+
#ifdef SKIP_QUOTE_NEEDED
-tCC* skip_quote _P_(( char q, char* text ));
+tCC* skip_quote PARAMS(( char q, char* text ));
#endif
-void compile_re _P_(( tCC* pat, regex_t* re, int match,
- tCC *e1, tCC *e2 ));
-void apply_fix _P_(( tFixDesc* p_fixd, tCC* filname ));
-apply_fix_p_t run_test _P_((tCC* t_name, tCC* f_name, tCC* text ));
+void compile_re PARAMS(( tCC* pat, regex_t* re, int match,
+ tCC *e1, tCC *e2 ));
+
+void apply_fix PARAMS(( tFixDesc* p_fixd, tCC* filname ));
+apply_fix_p_t
+ run_test PARAMS(( tCC* t_name, tCC* f_name, tCC* text ));
#ifdef __MSDOS__
-char* make_raw_shell_str _P_(( char* pz_d, tCC* pz_s, size_t smax ));
+char* make_raw_shell_str
+ PARAMS(( char* pz_d, tCC* pz_s, size_t smax ));
#endif
#ifdef MN_NAME_PAT
-void mn_get_regexps _P_(( regex_t** label_re, regex_t** name_re,
- tCC *who ));
+void mn_get_regexps
+ PARAMS(( regex_t** label_re, regex_t** name_re,
+ tCC *who ));
#endif
#endif /* FIXINCLUDES_FIXLIB_H */
diff --git a/gcc/fixinc/fixtests.c b/gcc/fixinc/fixtests.c
index 3b0c79833df..7a057f65ee6 100644
--- a/gcc/fixinc/fixtests.c
+++ b/gcc/fixinc/fixtests.c
@@ -47,18 +47,20 @@ Boston, MA 02111-1307, USA. */
#include "fixlib.h"
+typedef apply_fix_p_t t_test_proc PARAMS(( tCC* file, tCC* text ));
+
typedef struct {
- tCC* test_name;
- apply_fix_p_t (*test_proc)();
+ tCC* test_name;
+ t_test_proc* test_proc;
} test_entry_t;
#define FIX_TEST_TABLE \
_FT_( "machine_name", machine_name_test )
-
-#define TEST_FOR_FIX_PROC_HEAD( test ) \
-static apply_fix_p_t test ( fname, text ) \
- tCC* fname; \
+#define TEST_FOR_FIX_PROC_HEAD( test ) \
+t_test_proc test; /* avoid warning */ \
+static apply_fix_p_t test ( fname, text ) \
+ tCC* fname; \
tCC* text;
diff --git a/gcc/fixinc/server.h b/gcc/fixinc/server.h
index 12ae5afb576..2f016f45e9c 100644
--- a/gcc/fixinc/server.h
+++ b/gcc/fixinc/server.h
@@ -77,6 +77,7 @@ typedef char *t_pchar;
#define NULLPROCESS ((pid_t)0)
#define EXIT_PANIC 99
+#endif /* NOPROCESS */
#ifndef HAVE_T_BOOL_ENUM
#define HAVE_T_BOOL_ENUM
@@ -86,14 +87,10 @@ typedef enum
} t_bool;
#endif
-#define _P_(p) ()
-#endif
-
-char *run_shell _P_ (( const char *pzCmd));
-pid_t proc2_fopen _P_ (( t_pf_pair * p_pair, t_pchar * pp_args));
-pid_t proc2_open _P_ (( t_fd_pair * p_pair, t_pchar * pp_args));
-int chain_open _P_ (( int in_fd,
- t_pchar * pp_args,
- pid_t * p_child));
-void close_server _P_ (( void ));
+char *run_shell PARAMS (( const char *pzCmd));
+pid_t proc2_fopen PARAMS (( t_pf_pair * p_pair, t_pchar * pp_args));
+pid_t proc2_open PARAMS (( t_fd_pair * p_pair, t_pchar * pp_args));
+int chain_open PARAMS (( int in_fd, t_pchar * pp_args,
+ pid_t * p_child));
+void close_server PARAMS (( void ));
#endif /* FIXINC_SERVER_H */
diff --git a/gcc/flags.h b/gcc/flags.h
index dcafa184223..3814168a02f 100644
--- a/gcc/flags.h
+++ b/gcc/flags.h
@@ -474,6 +474,8 @@ extern int flag_verbose_asm;
extern int flag_debug_asm;
+extern int flag_dump_rtl_in_asm;
+
/* -fgnu-linker specifies use of the GNU linker for initializations.
-fno-gnu-linker says that collect will be used. */
extern int flag_gnu_linker;
diff --git a/gcc/flow.c b/gcc/flow.c
index ca6cac2a0d5..900e0284991 100644
--- a/gcc/flow.c
+++ b/gcc/flow.c
@@ -432,7 +432,9 @@ static basic_block flow_dfs_compute_reverse_execute
PARAMS ((depth_first_search_ds));
static void flow_dfs_compute_reverse_finish
PARAMS ((depth_first_search_ds));
-static basic_block flow_loop_pre_header_find PARAMS ((basic_block, const sbitmap *));
+static void flow_loop_pre_header_scan PARAMS ((struct loop *));
+static basic_block flow_loop_pre_header_find PARAMS ((basic_block,
+ const sbitmap *));
static void flow_loop_tree_node_add PARAMS ((struct loop *, struct loop *));
static void flow_loops_tree_build PARAMS ((struct loops *));
static int flow_loop_level_compute PARAMS ((struct loop *, int));
@@ -1420,6 +1422,99 @@ mark_critical_edges ()
}
}
+/* Split a block BB after insn INSN creating a new fallthru edge.
+ Return the new edge. Note that to keep other parts of the compiler happy,
+ this function renumbers all the basic blocks so that the new
+ one has a number one greater than the block split. */
+
+edge
+split_block (bb, insn)
+ basic_block bb;
+ rtx insn;
+{
+ basic_block new_bb;
+ edge new_edge;
+ edge e;
+ rtx bb_note;
+ int i, j;
+
+ /* There is no point splitting the block after its end. */
+ if (bb->end == insn)
+ return 0;
+
+ /* Create the new structures. */
+ new_bb = (basic_block) obstack_alloc (function_obstack, sizeof (*new_bb));
+ new_edge = (edge) xcalloc (1, sizeof (*new_edge));
+ n_edges++;
+
+ memset (new_bb, 0, sizeof (*new_bb));
+
+ new_bb->head = NEXT_INSN (insn);
+ new_bb->end = bb->end;
+ bb->end = insn;
+
+ new_bb->succ = bb->succ;
+ bb->succ = new_edge;
+ new_bb->pred = new_edge;
+ new_bb->count = bb->count;
+ new_bb->loop_depth = bb->loop_depth;
+
+ new_edge->src = bb;
+ new_edge->dest = new_bb;
+ new_edge->flags = EDGE_FALLTHRU;
+ new_edge->probability = REG_BR_PROB_BASE;
+ new_edge->count = bb->count;
+
+ /* Redirect the src of the successor edges of bb to point to new_bb. */
+ for (e = new_bb->succ; e; e = e->succ_next)
+ e->src = new_bb;
+
+ /* Place the new block just after the block being split. */
+ VARRAY_GROW (basic_block_info, ++n_basic_blocks);
+
+ /* Some parts of the compiler expect blocks to be number in
+ sequential order so insert the new block immediately after the
+ block being split.. */
+ j = bb->index;
+ for (i = n_basic_blocks - 1; i > j + 1; --i)
+ {
+ basic_block tmp = BASIC_BLOCK (i - 1);
+ BASIC_BLOCK (i) = tmp;
+ tmp->index = i;
+ }
+
+ BASIC_BLOCK (i) = new_bb;
+ new_bb->index = i;
+
+ /* Create the basic block note. */
+ bb_note = emit_note_before (NOTE_INSN_BASIC_BLOCK,
+ new_bb->head);
+ NOTE_BASIC_BLOCK (bb_note) = new_bb;
+ new_bb->head = bb_note;
+
+ update_bb_for_insn (new_bb);
+
+ if (bb->global_live_at_start)
+ {
+ new_bb->global_live_at_start = OBSTACK_ALLOC_REG_SET (function_obstack);
+ new_bb->global_live_at_end = OBSTACK_ALLOC_REG_SET (function_obstack);
+ COPY_REG_SET (new_bb->global_live_at_end, bb->global_live_at_end);
+
+ /* We now have to calculate which registers are live at the end
+ of the split basic block and at the start of the new basic
+ block. Start with those registers that are known to be live
+ at the end of the original basic block and get
+ propagate_block to determine which registers are live. */
+ COPY_REG_SET (new_bb->global_live_at_start, bb->global_live_at_end);
+ propagate_block (new_bb, new_bb->global_live_at_start, NULL, 0);
+ COPY_REG_SET (bb->global_live_at_end,
+ new_bb->global_live_at_start);
+ }
+
+ return new_edge;
+}
+
+
/* Split a (typically critical) edge. Return the new block.
Abort on abnormal edges.
@@ -5604,6 +5699,7 @@ try_pre_increment_1 (pbi, insn)
int regno = REGNO (SET_DEST (x));
rtx y = pbi->reg_next_use[regno];
if (y != 0
+ && SET_DEST (x) != stack_pointer_rtx
&& BLOCK_NUM (y) == BLOCK_NUM (insn)
/* Don't do this if the reg dies, or gets set in y; a standard addressing
mode would be better. */
@@ -6425,6 +6521,28 @@ count_or_remove_death_notes (blocks, kill)
return count;
}
+
+/* Update insns block within BB. */
+
+void
+update_bb_for_insn (bb)
+ basic_block bb;
+{
+ rtx insn;
+
+ if (! basic_block_for_insn)
+ return;
+
+ for (insn = bb->head; ; insn = NEXT_INSN (insn))
+ {
+ set_block_for_insn (insn, bb);
+
+ if (insn == bb->end)
+ break;
+ }
+}
+
+
/* Record INSN's block as BB. */
void
@@ -7256,13 +7374,20 @@ flow_loop_dump (loop, file, loop_dump_aux, verbose)
loop->depth, loop->level,
(long) (loop->outer ? loop->outer->num : -1));
- flow_edge_list_print (";; entry edges", loop->entry_edges,
+ if (loop->pre_header_root)
+ fprintf (file, ";; pre-header root %d\n",
+ loop->pre_header_root->index);
+ if (loop->pre_header_trace)
+ flow_nodes_print (";; pre-header trace", loop->pre_header_trace,
+ file);
+ flow_edge_list_print (";; entry edges", loop->entry_edges,
loop->num_entries, file);
fprintf (file, ";; %d", loop->num_nodes);
flow_nodes_print (" nodes", loop->nodes, file);
- flow_edge_list_print (";; exit edges", loop->exit_edges,
+ flow_edge_list_print (";; exit edges", loop->exit_edges,
loop->num_exits, file);
-
+ if (loop->exits_doms)
+ flow_nodes_print (";; exit doms", loop->exits_doms, file);
if (loop_dump_aux)
loop_dump_aux (loop, file, verbose);
}
@@ -7345,12 +7470,16 @@ flow_loops_free (loops)
{
struct loop *loop = &loops->array[i];
+ if (loop->pre_header_trace)
+ sbitmap_free (loop->pre_header_trace);
if (loop->nodes)
sbitmap_free (loop->nodes);
if (loop->entry_edges)
free (loop->entry_edges);
if (loop->exit_edges)
free (loop->exit_edges);
+ if (loop->exits_doms)
+ sbitmap_free (loop->exits_doms);
}
free (loops->array);
loops->array = NULL;
@@ -7360,7 +7489,8 @@ flow_loops_free (loops)
if (loops->cfg.dfs_order)
free (loops->cfg.dfs_order);
- sbitmap_free (loops->shared_headers);
+ if (loops->shared_headers)
+ sbitmap_free (loops->shared_headers);
}
}
@@ -7721,6 +7851,36 @@ flow_dfs_compute_reverse_finish (data)
return;
}
+
+/* Find the root node of the loop pre-header extended basic block and
+ the blocks along the trace from the root node to the loop header. */
+
+static void
+flow_loop_pre_header_scan (loop)
+ struct loop *loop;
+{
+ basic_block ebb;
+
+ if (loop->num_entries != 1)
+ return;
+
+ /* Find pre_header root note and trace from root node to pre_header. */
+ loop->pre_header_trace = sbitmap_alloc (n_basic_blocks);
+ sbitmap_zero (loop->pre_header_trace);
+
+ ebb = loop->entry_edges[0]->src;
+ SET_BIT (loop->pre_header_trace, ebb->index);
+ while (ebb->pred->src != ENTRY_BLOCK_PTR
+ && ! ebb->pred->pred_next)
+ {
+ ebb = ebb->pred->src;
+ SET_BIT (loop->pre_header_trace, ebb->index);
+ }
+
+ loop->pre_header_root = ebb;
+}
+
+
/* Return the block for the pre-header of the loop with header
HEADER where DOM specifies the dominator information. Return NULL if
there is no pre-header. */
@@ -7869,13 +8029,16 @@ flow_loops_level_compute (loops)
return levels;
}
+
/* Find all the natural loops in the function and save in LOOPS structure
and recalculate loop_depth information in basic block structures.
+ FLAGS controls which loop information is collected.
Return the number of natural loops found. */
int
-flow_loops_find (loops)
+flow_loops_find (loops, flags)
struct loops *loops;
+ int flags;
{
int i;
int b;
@@ -7886,32 +8049,38 @@ flow_loops_find (loops)
int *dfs_order;
int *rc_order;
- loops->num = 0;
- loops->array = NULL;
- loops->tree = NULL;
- dfs_order = NULL;
- rc_order = NULL;
+ /* This function cannot be repeatedly called with different
+ flags to build up the loop information. The loop tree
+ must always be built if this function is called. */
+ if (! (flags & LOOP_TREE))
+ abort ();
+
+ memset (loops, 0, sizeof (*loops));
/* Taking care of this degenerate case makes the rest of
this code simpler. */
if (n_basic_blocks == 0)
return 0;
+ dfs_order = NULL;
+ rc_order = NULL;
+
/* Compute the dominators. */
dom = sbitmap_vector_alloc (n_basic_blocks, n_basic_blocks);
compute_flow_dominators (dom, NULL);
/* Count the number of loop edges (back edges). This should be the
- same as the number of natural loops. Also clear the loop_depth
- and as we work from inner->outer in a loop nest we call
- find_loop_nodes_find which will increment loop_depth for nodes
- within the current loop, which happens to enclose inner loops. */
+ same as the number of natural loops. */
num_loops = 0;
for (b = 0; b < n_basic_blocks; b++)
{
- BASIC_BLOCK (b)->loop_depth = 0;
- for (e = BASIC_BLOCK (b)->pred; e; e = e->pred_next)
+ basic_block header;
+
+ header = BASIC_BLOCK (b);
+ header->loop_depth = 0;
+
+ for (e = header->pred; e; e = e->pred_next)
{
basic_block latch = e->src;
@@ -7921,6 +8090,9 @@ flow_loops_find (loops)
loop. It also has single back edge to the header
from a latch node. Note that multiple natural loops
may share the same header. */
+ if (b != header->index)
+ abort ();
+
if (latch != ENTRY_BLOCK_PTR && TEST_BIT (dom[latch->index], b))
num_loops++;
}
@@ -7951,8 +8123,8 @@ flow_loops_find (loops)
{
basic_block header;
- /* Search the nodes of the CFG in DFS order that we can find
- outer loops first. */
+ /* Search the nodes of the CFG in reverse completion order
+ so that we can find outer loops first. */
header = BASIC_BLOCK (rc_order[b]);
/* Look for all the possible latch blocks for this header. */
@@ -7977,46 +8149,75 @@ flow_loops_find (loops)
loop->latch = latch;
loop->num = num_loops;
- /* Keep track of blocks that are loop headers so
- that we can tell which loops should be merged. */
- if (TEST_BIT (headers, header->index))
- SET_BIT (loops->shared_headers, header->index);
- SET_BIT (headers, header->index);
-
- /* Find nodes contained within the loop. */
- loop->nodes = sbitmap_alloc (n_basic_blocks);
- loop->num_nodes
- = flow_loop_nodes_find (header, latch, loop->nodes);
-
- /* Compute first and last blocks within the loop.
- These are often the same as the loop header and
- loop latch respectively, but this is not always
- the case. */
- loop->first
- = BASIC_BLOCK (sbitmap_first_set_bit (loop->nodes));
- loop->last
- = BASIC_BLOCK (sbitmap_last_set_bit (loop->nodes));
-
- /* Find edges which enter the loop header.
- Note that the entry edges should only
- enter the header of a natural loop. */
- loop->num_entries
- = flow_loop_entry_edges_find (loop->header, loop->nodes,
- &loop->entry_edges);
-
- /* Find edges which exit the loop. */
- loop->num_exits
- = flow_loop_exit_edges_find (loop->nodes,
- &loop->exit_edges);
-
- /* Look to see if the loop has a pre-header node. */
- loop->pre_header = flow_loop_pre_header_find (header, dom);
-
num_loops++;
}
}
}
+ for (i = 0; i < num_loops; i++)
+ {
+ struct loop *loop = &loops->array[i];
+ int j;
+
+ /* Keep track of blocks that are loop headers so
+ that we can tell which loops should be merged. */
+ if (TEST_BIT (headers, loop->header->index))
+ SET_BIT (loops->shared_headers, loop->header->index);
+ SET_BIT (headers, loop->header->index);
+
+ /* Find nodes contained within the loop. */
+ loop->nodes = sbitmap_alloc (n_basic_blocks);
+ loop->num_nodes
+ = flow_loop_nodes_find (loop->header, loop->latch, loop->nodes);
+
+ /* Compute first and last blocks within the loop.
+ These are often the same as the loop header and
+ loop latch respectively, but this is not always
+ the case. */
+ loop->first
+ = BASIC_BLOCK (sbitmap_first_set_bit (loop->nodes));
+ loop->last
+ = BASIC_BLOCK (sbitmap_last_set_bit (loop->nodes));
+
+ if (flags & LOOP_EDGES)
+ {
+ /* Find edges which enter the loop header.
+ Note that the entry edges should only
+ enter the header of a natural loop. */
+ loop->num_entries
+ = flow_loop_entry_edges_find (loop->header,
+ loop->nodes,
+ &loop->entry_edges);
+
+ /* Find edges which exit the loop. */
+ loop->num_exits
+ = flow_loop_exit_edges_find (loop->nodes,
+ &loop->exit_edges);
+
+ /* Determine which loop nodes dominate all the exits
+ of the loop. */
+ loop->exits_doms = sbitmap_alloc (n_basic_blocks);
+ sbitmap_copy (loop->exits_doms, loop->nodes);
+ for (j = 0; j < loop->num_exits; j++)
+ sbitmap_a_and_b (loop->exits_doms, loop->exits_doms,
+ dom[loop->exit_edges[j]->src->index]);
+
+ /* The header of a natural loop must dominate
+ all exits. */
+ if (! TEST_BIT (loop->exits_doms, loop->header->index))
+ abort ();
+ }
+
+ if (flags & LOOP_PRE_HEADER)
+ {
+ /* Look to see if the loop has a pre-header node. */
+ loop->pre_header
+ = flow_loop_pre_header_find (loop->header, dom);
+
+ flow_loop_pre_header_scan (loop);
+ }
+ }
+
/* Natural loops with shared headers may either be disjoint or
nested. Disjoint loops with shared headers cannot be inner
loops and should be merged. For now just mark loops that share
@@ -8045,6 +8246,23 @@ flow_loops_find (loops)
return num_loops;
}
+
+/* Update the information regarding the loops in the CFG
+ specified by LOOPS. */
+int
+flow_loops_update (loops, flags)
+ struct loops *loops;
+ int flags;
+{
+ /* One day we may want to update the current loop data. For now
+ throw away the old stuff and rebuild what we need. */
+ if (loops->array)
+ flow_loops_free (loops);
+
+ return flow_loops_find (loops, flags);
+}
+
+
/* Return non-zero if edge E enters header of LOOP from outside of LOOP. */
int
diff --git a/gcc/gcc.1 b/gcc/gcc.1
index 23553ee4975..13a53c756f6 100644
--- a/gcc/gcc.1
+++ b/gcc/gcc.1
@@ -20,7 +20,7 @@
.if n .sp
.if t .sp 0.4
..
-.Id $Id: gcc.1,v 1.13.6.1 2000/04/22 03:51:24 gkm Exp $
+.Id $Id: gcc.1,v 1.13.6.2 2000/05/22 17:14:02 gkm Exp $
.TH GCC 1 "\*(Dt" "GNU Tools" "GNU Tools"
.SH NAME
gcc, g++ \- GNU project C and C++ Compiler (gcc-2.96)
@@ -330,6 +330,14 @@ in the following sections.
\-mshort
\-msoft\-float
.Sp
+.I M68hc1x\ Options
+.br
+\-m68hc11
+\-m68hc12
+\-mshort
+\-msoft\-reg\-count \fInum\fP
+\-mauto-incdec
+.Sp
.I VAX Options
.br
\-mg
@@ -2303,6 +2311,12 @@ standard error.
Annotate the assembler output with a comment indicating which
pattern and alternative was used.
.TP
+.B \-dP
+Dump the RTL in the assembler output as a comment before each instruction.
+Also turns on
+.B \-dp
+annotation.
+.TP
.B \-fpretend\-float
When running a cross-compiler, pretend that the target machine uses the
same floating point format as the host machine. This causes incorrect
@@ -2877,6 +2891,35 @@ processors, but not by the 68000.
.PP
These `\|\c
.B \-m\c
+\&\|' options are defined for the Motorola 68HC11 and 68HC12:
+.TP
+.B \-m68hc11
+Generate output for a 68HC11. This is the default when the compiler
+is configured for a 68HC11-based target.
+.TP
+.B \-m68hc12
+Generate output for a 68HC12. This is the default when the compiler
+is configured for a 68HC12-based target.
+.TP
+.B \-mshort
+Consider type \c
+.B int\c
+\& to be 16 bits wide, like \c
+.B short int\c
+\&.
+.TP
+.B \-msoft-reg-count=\fInum\fP
+Specify the number of pseudo-soft registers which are used for the
+code generation. The maximum number is 32. Using more pseudo-soft
+register may or may not result in better code depending on the program.
+The default is 4 for 68HC11 and 2 for 68HC12.
+.TP
+.B \-mauto-incdec
+Enable the use of 68HC12 pre and post auto-increment and auto-decrement
+addressing modes.
+.PP
+These `\|\c
+.B \-m\c
\&\|' options are defined for the Vax:
.TP
.B \-munix
diff --git a/gcc/gcc.c b/gcc/gcc.c
index 6c314fd84f4..87337215131 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -243,7 +243,6 @@ static void add_assembler_option PARAMS ((const char *, int));
static void add_linker_option PARAMS ((const char *, int));
static void process_command PARAMS ((int, const char *const *));
static int execute PARAMS ((void));
-static void unused_prefix_warnings PARAMS ((struct path_prefix *));
static void clear_args PARAMS ((void));
static void fatal_error PARAMS ((int));
static void set_input PARAMS ((const char *));
@@ -2390,32 +2389,6 @@ add_prefix (pprefix, prefix, component, priority, require_machine_suffix, warn)
pl->next = (*prev);
(*prev) = pl;
}
-
-/* Print warnings for any prefixes in the list PPREFIX that were not used. */
-
-static void
-unused_prefix_warnings (pprefix)
- struct path_prefix *pprefix;
-{
- struct prefix_list *pl = pprefix->plist;
-
- while (pl)
- {
- if (pl->used_flag_ptr != 0 && !*pl->used_flag_ptr)
- {
- if (pl->require_machine_suffix && machine_suffix)
- error ("file path prefix `%s%s' never used", pl->prefix,
- machine_suffix);
- else
- error ("file path prefix `%s' never used", pl->prefix);
-
- /* Prevent duplicate warnings. */
- *pl->used_flag_ptr = 1;
- }
-
- pl = pl->next;
- }
-}
/* Execute the command specified by the arguments on the current line of spec.
When using pipes, this includes several piped-together commands
@@ -5555,10 +5528,6 @@ main (argc, argv)
linker_was_run = (tmp != execution_count);
}
- /* Warn if a -B option was specified but the prefix was never used. */
- unused_prefix_warnings (&exec_prefixes);
- unused_prefix_warnings (&startfile_prefixes);
-
/* If options said don't run linker,
complain about input files to be given to the linker. */
diff --git a/gcc/genattrtab.c b/gcc/genattrtab.c
index a6a9a9010ea..46b9bdda67b 100644
--- a/gcc/genattrtab.c
+++ b/gcc/genattrtab.c
@@ -37,7 +37,7 @@ Boston, MA 02111-1307, USA. */
`constrain_operands' is called. If either of these cases of a reference to
an operand is found, `extract_insn' is called.
- The special attribute `length' is also recognized. For this operand,
+ The special attribute `length' is also recognized. For this operand,
expressions involving the address of an operand or the current insn,
(address (pc)), are valid. In this case, an initial pass is made to
set all lengths that do not depend on address. Those that do are set to
@@ -52,7 +52,7 @@ Boston, MA 02111-1307, USA. */
parameters as it does not depend on any particular insn. Constant
attributes are typically used to specify which variety of processor is
used.
-
+
Internal attributes are defined to handle DEFINE_DELAY and
DEFINE_FUNCTION_UNIT. Special routines are output for these cases.
@@ -95,7 +95,6 @@ Boston, MA 02111-1307, USA. */
`volatil' (MEM_VOLATILE_P): During simplify_by_exploding the value of an
EQ_ATTR rtx is true if !volatil and false if volatil. */
-
#include "hconfig.h"
#include "system.h"
#include "rtl.h"
@@ -255,7 +254,7 @@ static struct function_unit *units;
computed and becomes the corresponding value. To do this, we must be
able to enumerate all values for each attribute used in the expression
(currently, we give up if we find a numeric attribute).
-
+
If the set of EQ_ATTR tests used in an expression tests the value of N
different attributes, the list of all possible combinations can be made
by walking the N-dimensional attribute space defined by those
@@ -283,7 +282,7 @@ static struct function_unit *units;
Once the dimensions are created, the algorithm enumerates all possible
values and computes the current value of the given expression. */
-struct dimension
+struct dimension
{
struct attr_desc *attr; /* Attribute for this dimension. */
rtx values; /* List of attribute values used. */
@@ -347,7 +346,7 @@ int optimize = 0;
#define SIMPLIFY_TEST_EXP(EXP,INSN_CODE,INSN_INDEX) \
(RTX_UNCHANGING_P (EXP) || MEM_IN_STRUCT_P (EXP) ? (EXP) \
: simplify_test_exp (EXP, INSN_CODE, INSN_INDEX))
-
+
/* Simplify (eq_attr ("alternative") ...)
when we are working with a particular alternative. */
#define SIMPLIFY_ALTERNATIVE(EXP) \
@@ -463,7 +462,6 @@ static int attr_equal_p PARAMS ((rtx, rtx));
static rtx attr_copy_rtx PARAMS ((rtx));
#define oballoc(size) obstack_alloc (hash_obstack, size)
-
/* Hash table for sharing RTL and strings. */
@@ -540,7 +538,6 @@ attr_hash_add_string (hashcode, str)
rtx attr_rtx (code, [element1, ..., elementn]) */
-/*VARARGS1*/
static rtx
attr_rtx VPARAMS ((enum rtx_code code, ...))
{
@@ -689,7 +686,7 @@ attr_rtx VPARAMS ((enum rtx_code code, ...))
{
nohash:
rt_val = rtx_alloc (code); /* Allocate the storage space. */
-
+
fmt = GET_RTX_FORMAT (code); /* Find the right format... */
for (i = 0; i < GET_RTX_LENGTH (code); i++)
{
@@ -720,7 +717,7 @@ attr_rtx VPARAMS ((enum rtx_code code, ...))
break;
default:
- abort();
+ abort ();
}
}
va_end (p);
@@ -743,7 +740,6 @@ attr_rtx VPARAMS ((enum rtx_code code, ...))
rtx attr_printf (len, format, [arg1, ..., argn]) */
-/*VARARGS2*/
static char *
attr_printf VPARAMS ((register int len, const char *fmt, ...))
{
@@ -798,9 +794,9 @@ attr_string (str, len)
register char *new_str;
/* Compute the hash code. */
- hashcode = (len + 1) * 613 + (unsigned)str[0];
+ hashcode = (len + 1) * 613 + (unsigned) str[0];
for (i = 1; i <= len; i += 2)
- hashcode = ((hashcode * 613) + (unsigned)str[i]);
+ hashcode = ((hashcode * 613) + (unsigned) str[i]);
if (hashcode < 0)
hashcode = -hashcode;
@@ -872,7 +868,7 @@ attr_copy_rtx (orig)
copy->volatil = orig->volatil;
copy->unchanging = orig->unchanging;
copy->integrated = orig->integrated;
-
+
format_ptr = GET_RTX_FORMAT (GET_CODE (copy));
for (i = 0; i < GET_RTX_LENGTH (GET_CODE (copy)); i++)
@@ -978,7 +974,7 @@ check_attr_test (exp, is_const, lineno)
/* It shouldn't be possible to simplify the value given to a
constant attribute, so don't expand this until it's time to
- write the test expression. */
+ write the test expression. */
if (attr->is_const)
RTX_UNCHANGING_P (exp) = 1;
@@ -986,8 +982,8 @@ check_attr_test (exp, is_const, lineno)
{
for (p = XSTR (exp, 1); *p; p++)
if (*p < '0' || *p > '9')
- fatal ("Attribute `%s' takes only numeric values",
- XSTR (exp, 0));
+ fatal ("Attribute `%s' takes only numeric values",
+ XSTR (exp, 0));
}
else
{
@@ -1044,7 +1040,7 @@ check_attr_test (exp, is_const, lineno)
/* These cases can't be simplified. */
RTX_UNCHANGING_P (exp) = 1;
break;
-
+
case LE: case LT: case GT: case GE:
case LEU: case LTU: case GTU: case GEU:
case NE: case EQ:
@@ -1104,8 +1100,8 @@ check_attr_value (exp, attr)
if (INTVAL (exp) < 0 && ! attr->negative_ok)
{
message_with_line (attr->lineno,
- "negative numeric value specified for attribute %s",
- attr->name);
+ "negative numeric value specified for attribute %s",
+ attr->name);
have_error = 1;
break;
}
@@ -1162,8 +1158,8 @@ check_attr_value (exp, attr)
if (attr && !attr->is_numeric)
{
message_with_line (attr->lineno,
- "invalid operation `%s' for non-numeric attribute value",
- GET_RTX_NAME (GET_CODE (exp)));
+ "invalid operation `%s' for non-numeric attribute value",
+ GET_RTX_NAME (GET_CODE (exp)));
have_error = 1;
break;
}
@@ -1217,7 +1213,7 @@ check_attr_value (exp, attr)
XSTR (exp, 0), attr->name);
have_error = 1;
}
- else if (attr
+ else if (attr
&& (attr->is_numeric != attr2->is_numeric
|| (! attr->negative_ok && attr2->negative_ok)))
{
@@ -1261,7 +1257,7 @@ convert_set_attr_alternative (exp, id)
if (XVECLEN (exp, 1) != num_alt)
{
message_with_line (id->lineno,
- "bad number of entries in SET_ATTR_ALTERNATIVE");
+ "bad number of entries in SET_ATTR_ALTERNATIVE");
have_error = 1;
return NULL_RTX;
}
@@ -1422,7 +1418,7 @@ convert_const_symbol_ref (exp, attr)
value = attr_rtx (SYMBOL_REF, string);
RTX_UNCHANGING_P (value) = 1;
-
+
XVECEXP (condexp, 0, 2 * i) = attr_rtx (EQ, exp, value);
XVECEXP (condexp, 0, 2 * i + 1) = av->value;
@@ -1471,7 +1467,7 @@ make_canonical (attr, exp)
#if 0
/* ??? Why do we do this? With attribute values { A B C D E }, this
tends to generate (!(x==A) && !(x==B) && !(x==C) && !(x==D)) rather
- than (x==E). */
+ than (x==E). */
exp = convert_const_symbol_ref (exp, attr);
RTX_UNCHANGING_P (exp) = 1;
exp = check_attr_value (exp, attr);
@@ -1636,44 +1632,46 @@ expand_delays ()
/* For each delay possibility and delay slot, compute an eligibility
attribute for non-annulled insns and for each type of annulled (annul
if true and annul if false). */
- for (delay = delays; delay; delay = delay->next)
- {
- for (i = 0; i < XVECLEN (delay->def, 1); i += 3)
- {
- condexp = XVECEXP (delay->def, 1, i);
- if (condexp == 0) condexp = false_rtx;
- newexp = attr_rtx (IF_THEN_ELSE, condexp,
- make_numeric_value (1), make_numeric_value (0));
-
- p = attr_printf (sizeof ("*delay__") + MAX_DIGITS*2, "*delay_%d_%d",
- delay->num, i / 3);
- make_internal_attr (p, newexp, 1);
-
- if (have_annul_true)
- {
- condexp = XVECEXP (delay->def, 1, i + 1);
- if (condexp == 0) condexp = false_rtx;
- newexp = attr_rtx (IF_THEN_ELSE, condexp,
- make_numeric_value (1),
- make_numeric_value (0));
- p = attr_printf (sizeof ("*annul_true__") + MAX_DIGITS*2,
- "*annul_true_%d_%d", delay->num, i / 3);
- make_internal_attr (p, newexp, 1);
- }
-
- if (have_annul_false)
- {
- condexp = XVECEXP (delay->def, 1, i + 2);
- if (condexp == 0) condexp = false_rtx;
- newexp = attr_rtx (IF_THEN_ELSE, condexp,
- make_numeric_value (1),
- make_numeric_value (0));
- p = attr_printf (sizeof ("*annul_false__") + MAX_DIGITS*2,
- "*annul_false_%d_%d", delay->num, i / 3);
- make_internal_attr (p, newexp, 1);
- }
- }
- }
+ for (delay = delays; delay; delay = delay->next)
+ {
+ for (i = 0; i < XVECLEN (delay->def, 1); i += 3)
+ {
+ condexp = XVECEXP (delay->def, 1, i);
+ if (condexp == 0)
+ condexp = false_rtx;
+ newexp = attr_rtx (IF_THEN_ELSE, condexp,
+ make_numeric_value (1), make_numeric_value (0));
+
+ p = attr_printf (sizeof ("*delay__") + MAX_DIGITS * 2,
+ "*delay_%d_%d",
+ delay->num, i / 3);
+ make_internal_attr (p, newexp, 1);
+
+ if (have_annul_true)
+ {
+ condexp = XVECEXP (delay->def, 1, i + 1);
+ if (condexp == 0) condexp = false_rtx;
+ newexp = attr_rtx (IF_THEN_ELSE, condexp,
+ make_numeric_value (1),
+ make_numeric_value (0));
+ p = attr_printf (sizeof ("*annul_true__") + MAX_DIGITS * 2,
+ "*annul_true_%d_%d", delay->num, i / 3);
+ make_internal_attr (p, newexp, 1);
+ }
+
+ if (have_annul_false)
+ {
+ condexp = XVECEXP (delay->def, 1, i + 2);
+ if (condexp == 0) condexp = false_rtx;
+ newexp = attr_rtx (IF_THEN_ELSE, condexp,
+ make_numeric_value (1),
+ make_numeric_value (0));
+ p = attr_printf (sizeof ("*annul_false__") + MAX_DIGITS * 2,
+ "*annul_false_%d_%d", delay->num, i / 3);
+ make_internal_attr (p, newexp, 1);
+ }
+ }
+ }
}
/* This function is given a left and right side expression and an operator.
@@ -1779,7 +1777,7 @@ operate_exp (op, left, right)
XVECEXP (newexp, 0, i + 1)
= operate_exp (op, left, XVECEXP (right, 0, i + 1));
if (! rtx_equal_p (XVECEXP (newexp, 0, i + 1),
- defval))
+ defval))
allsame = 0;
}
@@ -1838,7 +1836,7 @@ operate_exp (op, left, right)
XVECEXP (newexp, 0, i + 1)
= operate_exp (op, XVECEXP (left, 0, i + 1), right);
if (! rtx_equal_p (XVECEXP (newexp, 0, i + 1),
- defval))
+ defval))
allsame = 0;
}
@@ -1969,21 +1967,21 @@ expand_units ()
{
/* Merge each function unit into the unit mask attributes. */
for (unit = units; unit; unit = unit->next)
- {
- XEXP (newexp, 0) = unit->condexp;
- XEXP (newexp, 1) = make_numeric_value (1 << unit->num);
- unitsmask = operate_exp (OR_OP, unitsmask, newexp);
- }
+ {
+ XEXP (newexp, 0) = unit->condexp;
+ XEXP (newexp, 1) = make_numeric_value (1 << unit->num);
+ unitsmask = operate_exp (OR_OP, unitsmask, newexp);
+ }
}
else
{
/* Merge each function unit into the unit mask attributes. */
for (unit = units; unit; unit = unit->next)
- {
- XEXP (newexp, 0) = unit->condexp;
- XEXP (newexp, 1) = make_numeric_value (1 << unit->num);
- unitsmask = operate_exp (ORX_OP, unitsmask, attr_copy_rtx (newexp));
- }
+ {
+ XEXP (newexp, 0) = unit->condexp;
+ XEXP (newexp, 1) = make_numeric_value (1 << unit->num);
+ unitsmask = operate_exp (ORX_OP, unitsmask, attr_copy_rtx (newexp));
+ }
}
/* Simplify the unit mask expression, encode it, and make an attribute
@@ -2048,11 +2046,11 @@ expand_units ()
/* Sort the array of ops into increasing ready cost order. */
for (i = 0; i < num; i++)
for (j = num - 1; j > i; j--)
- if (op_array[j-1]->ready < op_array[j]->ready)
+ if (op_array[j - 1]->ready < op_array[j]->ready)
{
op = op_array[j];
- op_array[j] = op_array[j-1];
- op_array[j-1] = op;
+ op_array[j] = op_array[j - 1];
+ op_array[j - 1] = op;
}
/* Determine how many distinct non-default ready cost values there
@@ -2075,7 +2073,9 @@ expand_units ()
XVEC (readycost, 0) = rtvec_alloc (nvalues * 2);
XEXP (readycost, 1) = make_numeric_value (1);
- nvalues = 0; orexp = false_rtx; value = op_array[0]->ready;
+ nvalues = 0;
+ orexp = false_rtx;
+ value = op_array[0]->ready;
for (i = 0; i < num; i++)
{
op = op_array[i];
@@ -2190,7 +2190,7 @@ expand_units ()
|| atoi (XSTR (newexp, 0)) != 1);
/* If the all values of BLOCKAGE (E,C) have the same value,
- neither blockage function is written. */
+ neither blockage function is written. */
unit->needs_range_function
= (unit->needs_blockage_function
|| GET_CODE (max_blockage) != CONST_STRING);
@@ -2268,8 +2268,8 @@ simplify_knowing (exp, known_true)
if (! unknown)
{
exp = attr_rtx (IF_THEN_ELSE, known_true, exp,
- make_numeric_value (max));
- exp = simplify_by_exploding (exp);
+ make_numeric_value (max));
+ exp = simplify_by_exploding (exp);
}
}
return exp;
@@ -2296,7 +2296,8 @@ encode_units_mask (x)
case CONST_STRING:
i = atoi (XSTR (x, 0));
if (i < 0)
- abort (); /* The sign bit encodes a one's compliment mask. */
+ /* The sign bit encodes a one's compliment mask. */
+ abort ();
else if (i != 0 && i == (i & -i))
/* Only one bit is set, so yield that unit number. */
for (j = 0; (i >>= 1) != 0; j++)
@@ -2315,7 +2316,7 @@ encode_units_mask (x)
case CC0:
case EQ_ATTR:
return x;
-
+
default:
break;
}
@@ -2368,7 +2369,7 @@ fill_attr (attr)
value = NULL;
if (XVEC (id->def, id->vec_idx))
for (i = 0; i < XVECLEN (id->def, id->vec_idx); i++)
- if (! strcmp (XSTR (XEXP (XVECEXP (id->def, id->vec_idx, i), 0), 0),
+ if (! strcmp (XSTR (XEXP (XVECEXP (id->def, id->vec_idx, i), 0), 0),
attr->name))
value = XEXP (XVECEXP (id->def, id->vec_idx, i), 1);
@@ -2566,7 +2567,7 @@ write_length_unit_log ()
{
length_or = ~length_or;
for (length_unit_log = 0; length_or & 1; length_or >>= 1)
- length_unit_log++;
+ length_unit_log++;
}
printf ("int length_unit_log = %u;\n", length_unit_log);
}
@@ -2865,7 +2866,7 @@ make_alternative_compare (mask)
of "attr" for this insn code. From that value, we can compute a test
showing when the EQ_ATTR will be true. This routine performs that
computation. If a test condition involves an address, we leave the EQ_ATTR
- intact because addresses are only valid for the `length' attribute.
+ intact because addresses are only valid for the `length' attribute.
EXP is the EQ_ATTR expression and VALUE is the value of that attribute
for the insn corresponding to INSN_CODE and INSN_INDEX. */
@@ -2893,19 +2894,19 @@ evaluate_eq_attr (exp, value, insn_code, insn_index)
char *p, *string;
if (GET_CODE (exp) != EQ_ATTR)
- abort();
+ abort ();
string = (char *) alloca (2 + strlen (XSTR (exp, 0))
+ strlen (XSTR (exp, 1)));
strcpy (string, XSTR (exp, 0));
strcat (string, "_");
strcat (string, XSTR (exp, 1));
- for (p = string; *p ; p++)
+ for (p = string; *p; p++)
*p = TOUPPER (*p);
-
+
newexp = attr_rtx (EQ, value,
attr_rtx (SYMBOL_REF,
- attr_string(string, strlen(string))));
+ attr_string (string, strlen (string))));
}
else if (GET_CODE (value) == COND)
{
@@ -2914,7 +2915,7 @@ evaluate_eq_attr (exp, value, insn_code, insn_index)
FALSE will be returned.
Each case is the AND of the NOT's of the previous conditions with the
- current condition; in the default case the current condition is TRUE.
+ current condition; in the default case the current condition is TRUE.
For each possible COND value, call ourselves recursively.
@@ -2983,7 +2984,7 @@ evaluate_eq_attr (exp, value, insn_code, insn_index)
can be replaced with TRUE or FALSE, respectively.
Note that (eq_attr "att" "v1") and (eq_attr "att" "v2") cannot both
- be true and hence are complementary.
+ be true and hence are complementary.
There is one special case: If we see
(and (not (eq_attr "att" "v1"))
@@ -3005,7 +3006,7 @@ simplify_and_tree (exp, pterm, insn_code, insn_index)
if (GET_CODE (exp) == AND)
{
- left = simplify_and_tree (XEXP (exp, 0), pterm, insn_code, insn_index);
+ left = simplify_and_tree (XEXP (exp, 0), pterm, insn_code, insn_index);
right = simplify_and_tree (XEXP (exp, 1), pterm, insn_code, insn_index);
if (left != XEXP (exp, 0) || right != XEXP (exp, 1))
{
@@ -3020,7 +3021,7 @@ simplify_and_tree (exp, pterm, insn_code, insn_index)
/* For the IOR case, we do the same as above, except that we can
only eliminate `term' if both sides of the IOR would do so. */
temp = *pterm;
- left = simplify_and_tree (XEXP (exp, 0), &temp, insn_code, insn_index);
+ left = simplify_and_tree (XEXP (exp, 0), &temp, insn_code, insn_index);
left_eliminates_term = (temp == true_rtx);
temp = *pterm;
@@ -3124,7 +3125,7 @@ simplify_or_tree (exp, pterm, insn_code, insn_index)
if (GET_CODE (exp) == IOR)
{
- left = simplify_or_tree (XEXP (exp, 0), pterm, insn_code, insn_index);
+ left = simplify_or_tree (XEXP (exp, 0), pterm, insn_code, insn_index);
right = simplify_or_tree (XEXP (exp, 1), pterm, insn_code, insn_index);
if (left != XEXP (exp, 0) || right != XEXP (exp, 1))
{
@@ -3139,7 +3140,7 @@ simplify_or_tree (exp, pterm, insn_code, insn_index)
/* For the AND case, we do the same as above, except that we can
only eliminate `term' if both sides of the AND would do so. */
temp = *pterm;
- left = simplify_or_tree (XEXP (exp, 0), &temp, insn_code, insn_index);
+ left = simplify_or_tree (XEXP (exp, 0), &temp, insn_code, insn_index);
left_eliminates_term = (temp == false_rtx);
temp = *pterm;
@@ -3183,7 +3184,7 @@ simplify_or_tree (exp, pterm, insn_code, insn_index)
code based on the values of other attributes being tested. This can
eliminate nested get_attr_... calls.
- Note that if an endless recursion is specified in the patterns, the
+ Note that if an endless recursion is specified in the patterns, the
optimization will loop. However, it will do so in precisely the cases where
an infinite recursion loop could occur during compilation. It's better that
it occurs here! */
@@ -3353,7 +3354,7 @@ simplify_test_exp (exp, insn_code, insn_index)
*/
else if (GET_CODE (left) == AND && GET_CODE (right) == AND
- && attr_equal_p (XEXP (left, 0), XEXP (right, 0)))
+ && attr_equal_p (XEXP (left, 0), XEXP (right, 0)))
{
newexp = attr_rtx (IOR, XEXP (left, 1), XEXP (right, 1));
@@ -3367,12 +3368,12 @@ simplify_test_exp (exp, insn_code, insn_index)
in this tree. Optimize if so. */
else if (insn_code >= 0
- && (GET_CODE (left) == IOR
- || (GET_CODE (left) == EQ_ATTR
- && XSTR (left, 0) == alternative_name)
- || GET_CODE (right) == IOR
- || (GET_CODE (right) == EQ_ATTR
- && XSTR (right, 0) == alternative_name)))
+ && (GET_CODE (left) == IOR
+ || (GET_CODE (left) == EQ_ATTR
+ && XSTR (left, 0) == alternative_name)
+ || GET_CODE (right) == IOR
+ || (GET_CODE (right) == EQ_ATTR
+ && XSTR (right, 0) == alternative_name)))
{
i = compute_alternative_mask (exp, IOR);
if (i & ~insn_alternatives[insn_code])
@@ -3458,7 +3459,7 @@ simplify_test_exp (exp, insn_code, insn_index)
if (current_alternative_string && XSTR (exp, 0) == alternative_name)
return (XSTR (exp, 1) == current_alternative_string
? true_rtx : false_rtx);
-
+
/* Look at the value for this insn code in the specified attribute.
We normally can replace this comparison with the condition that
would give this insn the values being tested for. */
@@ -3469,7 +3470,7 @@ simplify_test_exp (exp, insn_code, insn_index)
if (ie->insn_code == insn_code)
return evaluate_eq_attr (exp, av->value, insn_code, insn_index);
break;
-
+
default:
break;
}
@@ -3497,10 +3498,13 @@ optimize_attrs ()
rtx newexp;
int something_changed = 1;
int i;
- struct attr_value_list { struct attr_value *av;
- struct insn_ent *ie;
- struct attr_desc * attr;
- struct attr_value_list *next; };
+ struct attr_value_list
+ {
+ struct attr_value *av;
+ struct insn_ent *ie;
+ struct attr_desc *attr;
+ struct attr_value_list *next;
+ };
struct attr_value_list **insn_code_values;
struct attr_value_list *ivbuf;
struct attr_value_list *iv;
@@ -3609,7 +3613,6 @@ simplify_by_alternatives (exp, insn_code, insn_index)
rtx newexp = rtx_alloc (COND);
rtx ultimate;
-
XVEC (newexp, 0) = rtvec_alloc (len * 2);
/* It will not matter what value we use as the default value
@@ -3706,8 +3709,8 @@ simplify_by_exploding (exp)
{
struct dimension tmp;
tmp = space[j];
- space[j] = space[j-1];
- space[j-1] = tmp;
+ space[j] = space[j - 1];
+ space[j - 1] = tmp;
}
/* Establish the initial current value. */
@@ -3875,7 +3878,8 @@ add_values_to_cover (dim)
if (nalt < dim->num_values)
abort ();
else if (nalt == dim->num_values)
- ; /* Ok. */
+ /* OK. */
+ ;
else if (nalt * 2 < dim->num_values * 3)
{
/* Most all the values of the attribute are used, so add all the unused
@@ -4104,7 +4108,7 @@ clear_struct_flag (x)
case EQ_ATTR:
case ATTR_FLAG:
return;
-
+
default:
break;
}
@@ -4159,7 +4163,7 @@ count_sub_rtxs (x, max)
case EQ_ATTR:
case ATTR_FLAG:
return 1;
-
+
default:
break;
}
@@ -4248,7 +4252,8 @@ gen_attr (exp, lineno)
if (! strcmp (attr->name, "length") && ! attr->is_numeric)
{
- message_with_line (lineno, "`length' attribute must take numeric values");
+ message_with_line (lineno,
+ "`length' attribute must take numeric values");
have_error = 1;
}
@@ -4267,7 +4272,7 @@ count_alternatives (exp)
{
int i, j, n;
const char *fmt;
-
+
if (GET_CODE (exp) == MATCH_OPERAND)
return n_comma_elts (XSTR (exp, 2));
@@ -4361,7 +4366,7 @@ contained_in_p (inner, exp)
return 0;
}
-
+
/* Process DEFINE_PEEPHOLE, DEFINE_INSN, and DEFINE_ASM_ATTRIBUTES. */
static void
@@ -4404,7 +4409,7 @@ gen_insn (exp, lineno)
id->vec_idx = 0;
got_define_asm_attributes = 1;
break;
-
+
default:
abort ();
}
@@ -4424,7 +4429,7 @@ gen_delay (def, lineno)
if (XVECLEN (def, 1) % 3 != 0)
{
message_with_line (lineno,
- "number of elements in DEFINE_DELAY must be multiple of three");
+ "number of elements in DEFINE_DELAY must be multiple of three");
have_error = 1;
return;
}
@@ -4436,7 +4441,7 @@ gen_delay (def, lineno)
if (XVECEXP (def, 1, i + 2))
have_annul_false = 1;
}
-
+
delay = (struct delay_desc *) oballoc (sizeof (struct delay_desc));
delay->def = def;
delay->num = ++num_delays;
@@ -4445,7 +4450,7 @@ gen_delay (def, lineno)
delays = delay;
}
-/* Process a DEFINE_FUNCTION_UNIT.
+/* Process a DEFINE_FUNCTION_UNIT.
This gives information about a function unit contained in the CPU.
We fill in a `struct function_unit_op' and a `struct function_unit'
@@ -4475,8 +4480,8 @@ gen_unit (def, lineno)
|| unit->simultaneity != simultaneity)
{
message_with_line (lineno,
- "differing specifications given for function unit %s",
- unit->name);
+ "differing specifications given for function unit %s",
+ unit->name);
message_with_line (unit->first_lineno, "previous definition");
have_error = 1;
return;
@@ -4537,7 +4542,7 @@ gen_unit (def, lineno)
}
/* Given a piece of RTX, print a C expression to test its truth value.
- We use AND and IOR both for logical and bit-wise operations, so
+ We use AND and IOR both for logical and bit-wise operations, so
interpret them as logical unless they are inside a comparison expression.
The first bit of FLAGS will be non-zero in that case.
@@ -4571,7 +4576,7 @@ write_test_expr (exp, flags)
case ASHIFT: case LSHIFTRT: case ASHIFTRT:
write_test_expr (XEXP (exp, 0), flags | comparison_operator);
switch (code)
- {
+ {
case EQ:
printf (" == ");
break;
@@ -4641,7 +4646,7 @@ write_test_expr (exp, flags)
break;
default:
abort ();
- }
+ }
write_test_expr (XEXP (exp, 1), flags | comparison_operator);
break;
@@ -4657,7 +4662,7 @@ write_test_expr (exp, flags)
/* Otherwise, fall through to normal unary operator. */
- /* Unary operators. */
+ /* Unary operators. */
case ABS: case NEG:
switch (code)
{
@@ -4694,7 +4699,8 @@ write_test_expr (exp, flags)
}
attr = find_attr (XSTR (exp, 0), 0);
- if (! attr) abort ();
+ if (! attr)
+ abort ();
/* Now is the time to expand the value of a constant attribute. */
if (attr->is_const)
@@ -4725,7 +4731,7 @@ write_test_expr (exp, flags)
case MATCH_OPERAND:
/* If only a mode is given, just ensure the mode matches the operand.
If neither a mode nor predicate is given, error. */
- if (XSTR (exp, 1) == NULL || *XSTR (exp, 1) == '\0')
+ if (XSTR (exp, 1) == NULL || *XSTR (exp, 1) == '\0')
{
if (GET_MODE (exp) == VOIDmode)
fatal ("Null MATCH_OPERAND specified as test");
@@ -4764,7 +4770,7 @@ write_test_expr (exp, flags)
address of the next insn for forward branches, and both with
adjustments that account for the worst-case possible stretching of
intervening alignments between this insn and its destination. */
- printf("insn_current_reference_address (insn)");
+ printf ("insn_current_reference_address (insn)");
break;
case CONST_STRING:
@@ -4955,7 +4961,7 @@ write_attr_get (attr)
switch we will generate. */
common_av = find_most_used (attr);
- /* Write out prototype of function. */
+ /* Write out prototype of function. */
if (!attr->is_numeric)
printf ("extern enum attr_%s ", attr->name);
else if (attr->unsigned_p)
@@ -5007,7 +5013,7 @@ write_attr_get (attr)
{
rtx p = XEXP (common_av->value, 0);
- /* No need to emit code to abort if the insn is unrecognized; the
+ /* No need to emit code to abort if the insn is unrecognized; the
other get_attr_foo functions will do that when we call them. */
write_toplevel_expr (p);
@@ -5101,8 +5107,8 @@ write_attr_set (attr, indent, value, prefix, suffix, known_true,
XVECEXP (value, 0, i),
insn_code, insn_index);
newexp = attr_rtx (NOT, testexp);
- newexp = insert_right_side (AND, our_known_true, newexp,
- insn_code, insn_index);
+ newexp = insert_right_side (AND, our_known_true, newexp,
+ insn_code, insn_index);
/* If the test expression is always true or if the next `known_true'
expression is always false, this is the last case, so break
@@ -5130,7 +5136,7 @@ write_attr_set (attr, indent, value, prefix, suffix, known_true,
write_indent (indent + 2);
printf ("{\n");
- write_attr_set (attr, indent + 4,
+ write_attr_set (attr, indent + 4,
XVECEXP (value, 0, i + 1), prefix, suffix,
inner_true, insn_code, insn_index);
write_indent (indent + 2);
@@ -5212,18 +5218,15 @@ write_attr_case (attr, av, write_case_lines, prefix, suffix, indent,
must_extract = must_constrain = address_used = 0;
walk_attr_value (av->value);
- if (must_extract)
+ if (must_constrain)
{
write_indent (indent + 2);
- printf ("extract_insn (insn);\n");
+ printf ("extract_constrain_insn_cached (insn);\n");
}
-
- if (must_constrain)
+ else if (must_extract)
{
write_indent (indent + 2);
- printf ("if (! constrain_operands (reload_completed))\n");
- write_indent (indent + 2);
- printf (" fatal_insn_not_found (insn);\n");
+ printf ("extract_insn_cached (insn);\n");
}
write_attr_set (attr, indent + 2, av->value, prefix, suffix,
@@ -5299,11 +5302,11 @@ write_toplevel_expr (p)
int i;
for (i = 0; i < MAX_ATTRS_INDEX; ++i)
- for (attr = attrs[i]; attr ; attr = attr->next)
+ for (attr = attrs[i]; attr; attr = attr->next)
if (!attr->is_const)
write_expr_attr_cache (p, attr);
- printf(" register unsigned long accum = 0;\n\n");
+ printf (" register unsigned long accum = 0;\n\n");
while (GET_CODE (p) == IOR)
{
@@ -5413,7 +5416,7 @@ write_attr_value (attr, value)
case ATTR:
{
struct attr_desc *attr2 = find_attr (XSTR (value, 0), 0);
- printf ("get_attr_%s (%s)", attr2->name,
+ printf ("get_attr_%s (%s)", attr2->name,
(attr2->is_const ? "" : "insn"));
}
break;
@@ -5452,11 +5455,11 @@ write_upcase (str)
const char *str;
{
while (*str)
- {
- /* The argument of TOUPPER should not have side effects. */
- putchar (TOUPPER(*str));
- str++;
- }
+ {
+ /* The argument of TOUPPER should not have side effects. */
+ putchar (TOUPPER(*str));
+ str++;
+ }
}
static void
@@ -5484,7 +5487,7 @@ write_indent (indent)
static void
write_eligible_delay (kind)
- const char *kind;
+ const char *kind;
{
struct delay_desc *delay;
int max_slots;
@@ -5504,8 +5507,8 @@ write_eligible_delay (kind)
/* Write function prelude. */
printf ("int\n");
- printf ("eligible_for_%s (delay_insn, slot, candidate_insn, flags)\n",
- kind);
+ printf ("eligible_for_%s (delay_insn, slot, candidate_insn, flags)\n",
+ kind);
printf (" rtx delay_insn;\n");
printf (" int slot;\n");
printf (" rtx candidate_insn;\n");
@@ -5522,7 +5525,8 @@ write_eligible_delay (kind)
if (num_delays > 1)
{
attr = find_attr ("*delay_type", 0);
- if (! attr) abort ();
+ if (! attr)
+ abort ();
common_av = find_most_used (attr);
printf (" insn = delay_insn;\n");
@@ -5550,7 +5554,8 @@ write_eligible_delay (kind)
printf (" {\n");
attr = find_attr ("*delay_1_0", 0);
- if (! attr) abort ();
+ if (! attr)
+ abort ();
common_av = find_most_used (attr);
for (av = attr->first_value; av; av = av->next)
@@ -5579,7 +5584,8 @@ write_eligible_delay (kind)
sprintf (str, "*%s_%d_%d", kind, delay->num, i / 3);
attr = find_attr (str, 0);
- if (! attr) abort ();
+ if (! attr)
+ abort ();
common_av = find_most_used (attr);
for (av = attr->first_value; av; av = av->next)
@@ -5591,7 +5597,7 @@ write_eligible_delay (kind)
}
printf (" default:\n");
- printf (" abort ();\n");
+ printf (" abort ();\n");
printf (" }\n");
}
@@ -5684,8 +5690,7 @@ write_complex_function (unit, name, connection)
printf ("static int %s_unit_%s PARAMS ((rtx, rtx));\n", unit->name, name);
printf ("static int\n");
- printf ("%s_unit_%s (executing_insn, candidate_insn)\n",
- unit->name, name);
+ printf ("%s_unit_%s (executing_insn, candidate_insn)\n", unit->name, name);
printf (" rtx executing_insn;\n");
printf (" rtx candidate_insn;\n");
printf ("{\n");
@@ -5699,7 +5704,8 @@ write_complex_function (unit, name, connection)
str = (char *) alloca (strlen (unit->name) + strlen (name) + strlen (connection) + 10);
sprintf (str, "*%s_cases", unit->name);
case_attr = find_attr (str, 0);
- if (! case_attr) abort ();
+ if (! case_attr)
+ abort ();
common_av = find_most_used (case_attr);
for (av = case_attr->first_value; av; av = av->next)
@@ -5732,7 +5738,8 @@ write_complex_function (unit, name, connection)
printf (" case %d:\n", i);
sprintf (str, "*%s_%s_%d", unit->name, connection, i);
attr = find_attr (str, 0);
- if (! attr) abort ();
+ if (! attr)
+ abort ();
/* If single value, just write it. */
value = find_single_value (attr);
@@ -5948,8 +5955,10 @@ extend_range (range, min, max)
int min;
int max;
{
- if (range->min > min) range->min = min;
- if (range->max < max) range->max = max;
+ if (range->min > min)
+ range->min = min;
+ if (range->max < max)
+ range->max = max;
}
static rtx
@@ -5976,7 +5985,7 @@ copy_rtx_unchanging (orig)
case SYMBOL_REF:
case CODE_LABEL:
return orig;
-
+
default:
break;
}
@@ -5984,7 +5993,7 @@ copy_rtx_unchanging (orig)
copy = rtx_alloc (code);
PUT_MODE (copy, GET_MODE (orig));
RTX_UNCHANGING_P (copy) = 1;
-
+
bcopy ((char *) &XEXP (orig, 0), (char *) &XEXP (copy, 0),
GET_RTX_LENGTH (GET_CODE (copy)) * sizeof (rtx));
return copy;
@@ -6016,8 +6025,8 @@ write_const_num_delay_slots ()
if (length_used)
{
for (ie = av->first_insn; ie; ie = ie->next)
- if (ie->insn_code != -1)
- printf (" case %d:\n", ie->insn_code);
+ if (ie->insn_code != -1)
+ printf (" case %d:\n", ie->insn_code);
printf (" return 0;\n");
}
}
@@ -6027,7 +6036,6 @@ write_const_num_delay_slots ()
printf (" }\n}\n\n");
}
}
-
extern int main PARAMS ((int, char **));
@@ -6090,29 +6098,29 @@ from the machine description file `md'. */\n\n");
switch (GET_CODE (desc))
{
- case DEFINE_INSN:
- case DEFINE_PEEPHOLE:
- case DEFINE_ASM_ATTRIBUTES:
- gen_insn(desc, lineno);
- break;
-
- case DEFINE_ATTR:
- gen_attr (desc, lineno);
- break;
+ case DEFINE_INSN:
+ case DEFINE_PEEPHOLE:
+ case DEFINE_ASM_ATTRIBUTES:
+ gen_insn (desc, lineno);
+ break;
- case DEFINE_DELAY:
- gen_delay (desc, lineno);
- break;
+ case DEFINE_ATTR:
+ gen_attr (desc, lineno);
+ break;
- case DEFINE_FUNCTION_UNIT:
- gen_unit (desc, lineno);
- break;
-
- default:
- break;
+ case DEFINE_DELAY:
+ gen_delay (desc, lineno);
+ break;
+
+ case DEFINE_FUNCTION_UNIT:
+ gen_unit (desc, lineno);
+ break;
+
+ default:
+ break;
}
if (GET_CODE (desc) != DEFINE_ASM_ATTRIBUTES)
- insn_index_number++;
+ insn_index_number++;
}
if (have_error)
@@ -6147,7 +6155,7 @@ from the machine description file `md'. */\n\n");
printf ("#include \"output.h\"\n");
printf ("#include \"insn-attr.h\"\n");
printf ("#include \"toplev.h\"\n");
- printf ("\n");
+ printf ("\n");
printf ("#define operands recog_data.operand\n\n");
/* Make `insn_alternatives'. */
diff --git a/gcc/genoutput.c b/gcc/genoutput.c
index 797f3d20835..57a9028aee8 100644
--- a/gcc/genoutput.c
+++ b/gcc/genoutput.c
@@ -352,7 +352,22 @@ output_insn_data ()
printf (" 0,\n");
break;
case INSN_OUTPUT_FORMAT_SINGLE:
- printf (" \"%s\",\n", d->template);
+ {
+ const char *p = d->template;
+ char prev = 0;
+
+ printf (" \"");
+ while (*p)
+ {
+ if (*p == '\n' && prev != '\\')
+ printf ("\\n\\\n");
+ else
+ putchar (*p);
+ prev = *p;
+ ++p;
+ }
+ printf ("\",\n");
+ }
break;
case INSN_OUTPUT_FORMAT_MULTI:
case INSN_OUTPUT_FORMAT_FUNCTION:
diff --git a/gcc/genrecog.c b/gcc/genrecog.c
index e506f8d85b6..b512181e10d 100644
--- a/gcc/genrecog.c
+++ b/gcc/genrecog.c
@@ -2189,6 +2189,9 @@ peephole2%s (x0, insn, _pmatch_len)\n\
printf (" %s tem ATTRIBUTE_UNUSED;\n", IS_SPLIT (type) ? "rtx" : "int");
+ if (!subfunction)
+ printf (" recog_data.insn = NULL_RTX;\n");
+
if (head->first)
write_tree (head, "", type, 1);
else
diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c
index 6371b454f30..248f1d8da2b 100644
--- a/gcc/haifa-sched.c
+++ b/gcc/haifa-sched.c
@@ -21,7 +21,6 @@ along with GNU CC; see the file COPYING. If not, write to the Free
the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
-
/* Instruction scheduling pass.
This pass implements list scheduling within basic blocks. It is
@@ -214,7 +213,6 @@ static int sched_verbose = 0;
/* nr_inter/spec counts interblock/speculative motion for the function. */
static int nr_inter, nr_spec;
-
/* Debugging file. All printouts are sent to dump, which is always set,
either to stderr, or to the dump listing file (-dRS). */
static FILE *dump = 0;
@@ -308,7 +306,7 @@ static int reg_pending_sets_all;
branches for typical C code. So we can make a guess that the average
basic block is approximately 5 instructions long; we will choose 100X
the average size as a very large basic block.
-
+
Each insn has an associated bitmap for its dependencies. Each bitmap
has enough entries to represent a dependency on any other insn in the
insn chain. */
@@ -323,7 +321,7 @@ struct haifa_insn_data
it represents forward dependancies. */
rtx depend;
- /* The line number note in effect for each insn. For line number
+ /* The line number note in effect for each insn. For line number
notes, this indicates whether the note may be reused. */
rtx line_note;
@@ -484,7 +482,7 @@ static int insn_cost PARAMS ((rtx, rtx, rtx));
static int priority PARAMS ((rtx));
static void free_pending_lists PARAMS ((void));
static void add_insn_mem_dependence PARAMS ((struct deps *, rtx *, rtx *, rtx,
- rtx));
+ rtx));
static void flush_pending_lists PARAMS ((struct deps *, rtx, int));
static void sched_analyze_1 PARAMS ((struct deps *, rtx, rtx));
static void sched_analyze_2 PARAMS ((struct deps *, rtx, rtx));
@@ -502,12 +500,12 @@ static void adjust_priority PARAMS ((rtx));
/* Control flow graph edges are kept in circular lists. */
typedef struct
- {
- int from_block;
- int to_block;
- int next_in;
- int next_out;
- }
+{
+ int from_block;
+ int to_block;
+ int next_in;
+ int next_out;
+}
haifa_edge;
static haifa_edge *edge_table;
@@ -527,21 +525,18 @@ static int *out_edges;
#define IN_EDGES(block) (in_edges[block])
#define OUT_EDGES(block) (out_edges[block])
-
-
static int is_cfg_nonregular PARAMS ((void));
static int build_control_flow PARAMS ((struct edge_list *));
static void new_edge PARAMS ((int, int));
-
/* A region is the main entity for interblock scheduling: insns
are allowed to move between blocks in the same region, along
control flow graph edges, in the 'up' direction. */
typedef struct
- {
- int rgn_nr_blocks; /* Number of blocks in region. */
- int rgn_blocks; /* cblocks in the region (actually index in rgn_bb_table). */
- }
+{
+ int rgn_nr_blocks; /* Number of blocks in region. */
+ int rgn_blocks; /* cblocks in the region (actually index in rgn_bb_table). */
+}
region;
/* Number of regions in the procedure. */
@@ -581,16 +576,15 @@ static int current_blocks;
/* The mapping from bb to block. */
#define BB_TO_BLOCK(bb) (rgn_bb_table[current_blocks + (bb)])
-
/* Bit vectors and bitset operations are needed for computations on
the control flow graph. */
typedef unsigned HOST_WIDE_INT *bitset;
typedef struct
- {
- int *first_member; /* Pointer to the list start in bitlst_table. */
- int nr_members; /* The number of members of the bit list. */
- }
+{
+ int *first_member; /* Pointer to the list start in bitlst_table. */
+ int nr_members; /* The number of members of the bit list. */
+}
bitlst;
static int bitlst_table_last;
@@ -608,13 +602,13 @@ static void extract_bitlst PARAMS ((bitset, int, int, bitlst *));
about such sources: are they valid? Speculative? Etc. */
typedef bitlst bblst;
typedef struct
- {
- char is_valid;
- char is_speculative;
- int src_prob;
- bblst split_bbs;
- bblst update_bbs;
- }
+{
+ char is_valid;
+ char is_speculative;
+ int src_prob;
+ bblst split_bbs;
+ bblst update_bbs;
+}
candidate;
static candidate *candidate_table;
@@ -644,7 +638,6 @@ static void compute_trg_info PARAMS ((int));
void debug_candidate PARAMS ((int));
void debug_candidates PARAMS ((int));
-
/* Bit-set of bbs, where bit 'i' stands for bb 'i'. */
typedef bitset bbset;
@@ -769,7 +762,7 @@ static rtx reemit_notes PARAMS ((rtx, rtx));
static void get_block_head_tail PARAMS ((int, rtx *, rtx *));
static void get_bb_head_tail PARAMS ((int, rtx *, rtx *));
-static int queue_to_ready PARAMS ((rtx [], int));
+static int queue_to_ready PARAMS ((rtx[], int));
static void debug_ready_list PARAMS ((rtx[], int));
static void init_target_units PARAMS ((void));
@@ -819,7 +812,7 @@ add_dependence (insn, elem, dep_type)
such dependency is useless and can be ignored. */
if (GET_CODE (elem) == NOTE)
return;
-
+
/* If elem is part of a sequence that must be scheduled together, then
make the dependence point to the last insn of the sequence.
When HAVE_cc0, it is possible for NOTEs to exist between users and
@@ -881,7 +874,7 @@ add_dependence (insn, elem, dep_type)
#ifdef INSN_SCHEDULING
/* If we are adding a true dependency to INSN's LOG_LINKs, then
note that in the bitmap cache of true dependency information. */
- if ((int)dep_type == 0 && true_dependency_cache)
+ if ((int) dep_type == 0 && true_dependency_cache)
SET_BIT (true_dependency_cache[INSN_LUID (insn)], INSN_LUID (elem));
#endif
return;
@@ -897,7 +890,7 @@ add_dependence (insn, elem, dep_type)
#ifdef INSN_SCHEDULING
/* If we are adding a true dependency to INSN's LOG_LINKs, then
note that in the bitmap cache of true dependency information. */
- if ((int)dep_type == 0 && true_dependency_cache)
+ if ((int) dep_type == 0 && true_dependency_cache)
SET_BIT (true_dependency_cache[INSN_LUID (insn)], INSN_LUID (elem));
#endif
}
@@ -1134,7 +1127,6 @@ build_control_flow (edge_list)
return unreachable;
}
-
/* Record an edge in the control flow graph from SOURCE to TARGET.
In theory, this is redundant with the s_succs computed above, but
@@ -1194,7 +1186,6 @@ new_edge (source, target)
}
}
-
/* BITSET macros for operations on the control flow graph. */
/* Compute bitwise union of two bitsets. */
@@ -1245,7 +1236,6 @@ do { register bitset tmpset = set; \
~(1 << (index%HOST_BITS_PER_WIDE_INT)); \
}
-
/* Check if the index'th bit in bitset set is on. */
static char
@@ -1259,7 +1249,6 @@ bitset_member (set, index, len)
1 << (index % HOST_BITS_PER_WIDE_INT)) ? 1 : 0;
}
-
/* Translate a bit-set SET to a list BL of the bit-set members. */
static void
@@ -1300,7 +1289,6 @@ extract_bitlst (set, len, bitlen, bl)
}
-
/* Functions for the construction of regions. */
/* Print the regions, for debugging purposes. Callable from debugger. */
@@ -1331,7 +1319,6 @@ debug_regions ()
}
}
-
/* Build a single block region for each basic block in the function.
This allows for using the same code for interblock and basic block
scheduling. */
@@ -1352,7 +1339,6 @@ find_single_block_region ()
nr_regions = n_basic_blocks;
}
-
/* Update number of blocks and the estimate for number of insns
in the region. Return 1 if the region is "too large" for interblock
scheduling (compile time considerations), otherwise return 0. */
@@ -1370,7 +1356,6 @@ too_large (block, num_bbs, num_insns)
return 0;
}
-
/* Update_loop_relations(blk, hdr): Check if the loop headed by max_hdr[blk]
is still an inner loop. Put in max_hdr[blk] the header of the most inner
loop containing blk. */
@@ -1387,7 +1372,6 @@ too_large (block, num_bbs, num_insns)
} \
}
-
/* Find regions for interblock scheduling.
A region for scheduling can be:
@@ -1398,7 +1382,6 @@ too_large (block, num_bbs, num_insns)
* A basic block not contained in any other region.
-
?!? In theory we could build other regions based on extended basic
blocks or reverse extended basic blocks. Is it worth the trouble?
@@ -1413,7 +1396,6 @@ too_large (block, num_bbs, num_insns)
* block_to_bb
* containing region
-
We use dominator relationships to avoid making regions out of non-reducible
loops.
@@ -1441,10 +1423,10 @@ find_rgns (edge_list, dom)
/* Note if a block is an natural inner loop header. */
sbitmap inner;
- /* Note if a block is in the block queue. */
+ /* Note if a block is in the block queue. */
sbitmap in_queue;
- /* Note if a block is in the block queue. */
+ /* Note if a block is in the block queue. */
sbitmap in_stack;
int num_edges = NUM_EDGES (edge_list);
@@ -1556,7 +1538,7 @@ find_rgns (edge_list, dom)
out edge. However, if the node has no out edge then we will
not set dfs_nr for that node. This can confuse the scheduler
into thinking that we have unreachable blocks, which in turn
- disables cross block scheduling.
+ disables cross block scheduling.
So, if we have a node with no out edges, go ahead and mark it
as reachable now. */
@@ -1627,7 +1609,7 @@ find_rgns (edge_list, dom)
If there exists a block that is not dominated by the loop
header, then the block is reachable from outside the loop
and thus the loop is not a natural loop. */
- for (j = 0; j < n_basic_blocks; j++)
+ for (j = 0; j < n_basic_blocks; j++)
{
/* First identify blocks in the loop, except for the loop
entry block. */
@@ -1660,10 +1642,9 @@ find_rgns (edge_list, dom)
/* Estimate # insns, and count # blocks in the region. */
num_bbs = 1;
- num_insns = (INSN_LUID (BLOCK_END (i))
+ num_insns = (INSN_LUID (BLOCK_END (i))
- INSN_LUID (BLOCK_HEAD (i)));
-
/* Find all loop latches (blocks with back edges to the loop
header) or all the leaf blocks in the cfg has no loops.
@@ -1710,7 +1691,6 @@ find_rgns (edge_list, dom)
break;
}
}
-
}
}
@@ -1725,7 +1705,6 @@ find_rgns (edge_list, dom)
c a,d
d b
-
The algorithm in the DFS traversal may not mark B & D as part
of the loop (ie they will not have max_hdr set to A).
@@ -1744,7 +1723,7 @@ find_rgns (edge_list, dom)
We do not do this because I'm not sure that the actual
scheduling code will properly handle this case. ?!? */
-
+
while (head < tail && !too_large_failure)
{
edge e;
@@ -1843,7 +1822,6 @@ find_rgns (edge_list, dom)
free (in_stack);
}
-
/* Functions for regions scheduling information. */
/* Compute dominators, probability, and potential-split-edges of bb.
@@ -1921,8 +1899,9 @@ compute_dom_prob_ps (bb)
BITSET_DIFFER (pot_split[bb], ancestor_edges[bb], edgeset_size);
if (sched_verbose >= 2)
- fprintf (dump, ";; bb_prob(%d, %d) = %3d\n", bb, BB_TO_BLOCK (bb), (int) (100.0 * prob[bb]));
-} /* compute_dom_prob_ps */
+ fprintf (dump, ";; bb_prob(%d, %d) = %3d\n", bb, BB_TO_BLOCK (bb),
+ (int) (100.0 * prob[bb]));
+}
/* Functions for target info. */
@@ -1945,7 +1924,6 @@ split_edges (bb_src, bb_trg, bl)
free (src);
}
-
/* Find the valid candidate-source-blocks for the target block TRG, compute
their probability, and check if they are speculative or not.
For speculative sources, compute their update-blocks and split-blocks. */
@@ -2024,8 +2002,7 @@ compute_trg_info (trg)
sp->src_prob = 0;
}
}
-} /* compute_trg_info */
-
+}
/* Print candidates info, for debugging purposes. Callable from debugger. */
@@ -2065,7 +2042,6 @@ debug_candidate (i)
}
}
-
/* Print candidates info, for debugging purposes. Callable from debugger. */
void
@@ -2080,7 +2056,6 @@ debug_candidates (trg)
debug_candidate (i);
}
-
/* Functions for speculative scheduing. */
/* Return 0 if x is a set of a register alive in the beginning of one
@@ -2161,7 +2136,6 @@ check_live_1 (src, x)
return 1;
}
-
/* If x is a set of a register R, mark that R is alive in the beginning
of every update-block of src. */
@@ -2227,7 +2201,6 @@ update_live_1 (src, x)
}
}
-
/* Return 1 if insn can be speculatively moved from block src to trg,
otherwise return 0. Called before first insertion of insn to
ready-list or before the scheduling. */
@@ -2256,7 +2229,6 @@ check_live (insn, src)
return 1;
}
-
/* Update the live registers info after insn was moved speculatively from
block src to trg. */
@@ -2586,8 +2558,7 @@ may_trap_exp (x, is_store)
}
return insn_class;
}
-} /* may_trap_exp */
-
+}
/* Classifies insn for the purpose of verifying that it can be
moved speculatively, by examining it's patterns, returning:
@@ -2628,7 +2599,7 @@ haifa_classify_insn (insn)
/* Test if it is a load. */
tmp_class =
WORST_CLASS (tmp_class,
- may_trap_exp (SET_SRC (XVECEXP (pat, 0, i)), 0));
+ may_trap_exp (SET_SRC (XVECEXP (pat, 0, i)), 0));
break;
case COND_EXEC:
case TRAP_IF:
@@ -2670,8 +2641,7 @@ haifa_classify_insn (insn)
}
return insn_class;
-
-} /* haifa_classify_insn */
+}
/* Return 1 if load_insn is prisky (i.e. if load_insn is fed by
a load moved speculatively, or if load_insn is protected by
@@ -2693,7 +2663,7 @@ is_prisky (load_insn, bb_src, bb_trg)
return 1;
return 0;
-} /* is_prisky */
+}
/* Insn is a candidate to be moved speculatively from bb_src to bb_trg.
Return 1 if insn is exception-free (and the motion is valid)
@@ -2739,8 +2709,7 @@ is_exception_free (insn, bb_src, bb_trg)
}
return flag_schedule_speculative_load_dangerous;
-} /* is_exception_free */
-
+}
/* Process an insn's memory dependencies. There are four kinds of
dependencies:
@@ -2772,7 +2741,6 @@ find_insn_mem_list (insn, x, list, list1)
return 0;
}
-
/* Compute the function units used by INSN. This caches the value
returned by function_units_used. A function unit is encoded as the
unit number if the value is non-negative and the compliment of a
@@ -3163,7 +3131,6 @@ priority (insn)
return this_priority;
}
-
/* Remove all INSN_LISTs and EXPR_LISTs from the pending lists and add
them to the unused_*_list variables, so that they can be reused. */
@@ -3279,7 +3246,7 @@ sched_analyze_1 (deps, x, insn)
}
while (GET_CODE (dest) == STRICT_LOW_PART || GET_CODE (dest) == SUBREG
- || GET_CODE (dest) == ZERO_EXTRACT || GET_CODE (dest) == SIGN_EXTRACT)
+ || GET_CODE (dest) == ZERO_EXTRACT || GET_CODE (dest) == SIGN_EXTRACT)
{
if (GET_CODE (dest) == ZERO_EXTRACT || GET_CODE (dest) == SIGN_EXTRACT)
{
@@ -3318,9 +3285,9 @@ sched_analyze_1 (deps, x, insn)
if (code == SET)
{
free_INSN_LIST_list (&deps->reg_last_uses[r]);
- for (u = deps->reg_last_clobbers[r]; u; u = XEXP (u, 1))
+ for (u = deps->reg_last_clobbers[r]; u; u = XEXP (u, 1))
add_dependence (insn, XEXP (u, 0), REG_DEP_OUTPUT);
- SET_REGNO_REG_SET (reg_pending_sets, r);
+ SET_REGNO_REG_SET (reg_pending_sets, r);
}
else
SET_REGNO_REG_SET (reg_pending_clobbers, r);
@@ -3539,7 +3506,7 @@ sched_analyze_2 (deps, x, insn)
while (pending)
{
if (true_dependence (XEXP (pending_mem, 0), VOIDmode,
- x, rtx_varies_p))
+ x, rtx_varies_p))
add_dependence (insn, XEXP (pending, 0), 0);
pending = XEXP (pending, 1);
@@ -3791,11 +3758,11 @@ sched_analyze_insn (deps, x, insn, loop_notes)
/* If a post-call group is still open, see if it should remain so.
This insn must be a simple move of a hard reg to a pseudo or
- vice-versa.
+ vice-versa.
We must avoid moving these insns for correctness on
SMALL_REGISTER_CLASS machines, and for special registers like
- PIC_OFFSET_TABLE_REGNUM. For simplicity, extend this to all
+ PIC_OFFSET_TABLE_REGNUM. For simplicity, extend this to all
hard regs for all targets. */
if (deps->in_post_call_group_p)
@@ -3961,13 +3928,13 @@ sched_analyze (deps, head, tail)
free_INSN_LIST_list (&deps->last_function_call);
deps->last_function_call = alloc_INSN_LIST (insn, NULL_RTX);
- /* Before reload, begin a post-call group, so as to keep the
+ /* Before reload, begin a post-call group, so as to keep the
lifetimes of hard registers correct. */
if (! reload_completed)
deps->in_post_call_group_p = 1;
}
- /* See comments on reemit_notes as to why we do this.
+ /* See comments on reemit_notes as to why we do this.
??? Actually, the reemit_notes just say what is done, not why. */
else if (GET_CODE (insn) == NOTE
@@ -4030,13 +3997,12 @@ rank_for_schedule (x, y)
const PTR x;
const PTR y;
{
- rtx tmp = *(const rtx *)y;
- rtx tmp2 = *(const rtx *)x;
+ rtx tmp = *(const rtx *) y;
+ rtx tmp2 = *(const rtx *) x;
rtx link;
int tmp_class, tmp2_class, depend_count1, depend_count2;
int val, priority_val, spec_val, prob_val, weight_val;
-
/* Prefer insn with higher priority. */
priority_val = INSN_PRIORITY (tmp2) - INSN_PRIORITY (tmp);
if (priority_val)
@@ -4094,7 +4060,7 @@ rank_for_schedule (x, y)
return val;
}
- /* Prefer the insn which has more later insns that depend on it.
+ /* Prefer the insn which has more later insns that depend on it.
This gives the scheduler more freedom when scheduling later
instructions at the expense of added register pressure. */
depend_count1 = 0;
@@ -4108,7 +4074,7 @@ rank_for_schedule (x, y)
val = depend_count2 - depend_count1;
if (val)
return val;
-
+
/* If insns are equally good, sort by INSN_LUID (original insn order),
so that we make the sort stable. This minimizes instruction movement,
thus minimizing sched's effect on debugging and cross-jumping. */
@@ -4171,7 +4137,7 @@ adjust_priority (prev)
{
/* ??? There used to be code here to try and estimate how an insn
affected register lifetimes, but it did it by looking at REG_DEAD
- notes, which we removed in schedule_region. Nor did it try to
+ notes, which we removed in schedule_region. Nor did it try to
take into account register pressure or anything useful like that.
Revisit when we have a machine model to work with and not before. */
@@ -4248,7 +4214,7 @@ schedule_insn (insn, ready, n_ready, clock)
if (sched_verbose >= 2)
{
- fprintf (dump, ";;\t\tdependences resolved: insn %d ",
+ fprintf (dump, ";;\t\tdependences resolved: insn %d ",
INSN_UID (next));
if (current_nr_blocks > 1 && INSN_BB (next) != target_bb)
@@ -4270,7 +4236,7 @@ schedule_insn (insn, ready, n_ready, clock)
}
}
- /* Annotate the instruction with issue information -- TImode
+ /* Annotate the instruction with issue information -- TImode
indicates that the instruction is expected not to be able
to issue on the same cycle as the previous insn. A machine
may use this information to decide how the instruction should
@@ -4470,7 +4436,6 @@ save_line_notes (bb)
LINE_NOTE (insn) = line;
}
-
/* After bb was scheduled, insert line notes into the insns list. */
static void
@@ -4629,7 +4594,7 @@ rm_other_notes (head, tail)
static void
find_insn_reg_weight (b)
- int b;
+ int b;
{
rtx insn, next_tail, head, tail;
@@ -4725,7 +4690,8 @@ queue_to_ready (ready, n_ready)
q_size -= 1;
if (sched_verbose >= 2)
- fprintf (dump, ";;\t\tQ-->Ready: insn %d: ", INSN_UID (insn));
+ fprintf (dump, ";;\t\tQ-->Ready: insn %d: ",
+ INSN_UID (insn));
if (sched_verbose >= 2 && INSN_BB (insn) != target_bb)
fprintf (dump, "(b%d) ", BLOCK_NUM (insn));
@@ -4904,14 +4870,14 @@ print_exp (buf, x, verbose)
char tmp[BUF_LEN];
const char *st[4];
char *cur = buf;
- const char *fun = (char *)0;
+ const char *fun = (char *) 0;
const char *sep;
rtx op[4];
int i;
for (i = 0; i < 4; i++)
{
- st[i] = (char *)0;
+ st[i] = (char *) 0;
op[i] = NULL_RTX;
}
@@ -5259,7 +5225,7 @@ print_value (buf, x, verbose)
cur = safe_concat (buf, cur, t);
break;
case CONST_DOUBLE:
- sprintf (t, "<0x%lx,0x%lx>", (long)XWINT (x, 2), (long)XWINT (x, 3));
+ sprintf (t, "<0x%lx,0x%lx>", (long) XWINT (x, 2), (long) XWINT (x, 3));
cur = safe_concat (buf, cur, t);
break;
case CONST_STRING:
@@ -5291,11 +5257,11 @@ print_value (buf, x, verbose)
case REG:
if (REGNO (x) < FIRST_PSEUDO_REGISTER)
{
- int c = reg_names[ REGNO (x) ][0];
+ int c = reg_names[REGNO (x)][0];
if (c >= '0' && c <= '9')
cur = safe_concat (buf, cur, "%");
- cur = safe_concat (buf, cur, reg_names[ REGNO (x) ]);
+ cur = safe_concat (buf, cur, reg_names[REGNO (x)]);
}
else
{
@@ -5861,7 +5827,7 @@ schedule_block (bb, rgn_n_insns)
/* Prepare current target block info. */
if (current_nr_blocks > 1)
{
- candidate_table = (candidate *) xmalloc (current_nr_blocks
+ candidate_table = (candidate *) xmalloc (current_nr_blocks
* sizeof (candidate));
bblst_last = 0;
@@ -5889,7 +5855,6 @@ schedule_block (bb, rgn_n_insns)
if (sched_verbose >= 5)
debug_dependencies ();
-
/* Initialize ready list with all 'ready' insns in target block.
Count number of insns in the target block being scheduled. */
n_ready = 0;
@@ -5938,7 +5903,7 @@ schedule_block (bb, rgn_n_insns)
{
rtx next;
- /* Note that we havn't squirrled away the notes for
+ /* Note that we havn't squirrled away the notes for
blocks other than the current. So if this is a
speculative insn, NEXT might otherwise be a note. */
next = next_nonnote_insn (insn);
@@ -5999,7 +5964,7 @@ schedule_block (bb, rgn_n_insns)
/* Sort the ready list based on priority. */
SCHED_SORT (ready, n_ready);
- /* Allow the target to reorder the list, typically for
+ /* Allow the target to reorder the list, typically for
better instruction bundling. */
#ifdef MD_SCHED_REORDER
MD_SCHED_REORDER (dump, sched_verbose, ready, n_ready, clock_var,
@@ -6048,8 +6013,8 @@ schedule_block (bb, rgn_n_insns)
nr_inter++;
/* Find the beginning of the scheduling group. */
- /* ??? Ought to update basic block here, but later bits of
- schedule_block assumes the original insn block is
+ /* ??? Ought to update basic block here, but later bits of
+ schedule_block assumes the original insn block is
still intact. */
temp = insn;
@@ -6174,9 +6139,8 @@ schedule_block (bb, rgn_n_insns)
free (ready);
return (sched_n_insns);
-} /* schedule_block () */
+}
-
/* Print the bit-set of registers, S, callable from debugger. */
extern void
@@ -6483,7 +6447,7 @@ propagate_deps (bb, tmp_deps, max_reg)
/* last_pending_memory_flush is inherited by bb_succ. */
for (u = tmp_deps->last_pending_memory_flush; u; u = XEXP (u, 1))
{
- if (find_insn_list (XEXP (u, 0),
+ if (find_insn_list (XEXP (u, 0),
succ_deps->last_pending_memory_flush))
continue;
@@ -6541,9 +6505,9 @@ compute_block_backward_dependences (bb)
/* Free up the INSN_LISTs.
- Note this loop is executed max_reg * nr_regions times. It's first
+ Note this loop is executed max_reg * nr_regions times. It's first
implementation accounted for over 90% of the calls to free_INSN_LIST_list.
- The list was empty for the vast majority of those calls. On the PA, not
+ The list was empty for the vast majority of those calls. On the PA, not
calling free_INSN_LIST_list in those cases improves -O2 compile times by
3-5% on average. */
for (i = 0; i < max_reg; ++i)
@@ -6749,7 +6713,7 @@ schedule_region (rgn)
edgeset_size = rgn_nr_edges / HOST_BITS_PER_WIDE_INT + 1;
edgeset_bitsize = rgn_nr_edges;
pot_split = (edgeset *) xmalloc (current_nr_blocks * sizeof (edgeset));
- ancestor_edges
+ ancestor_edges
= (edgeset *) xmalloc (current_nr_blocks * sizeof (edgeset));
for (i = 0; i < current_nr_blocks; i++)
{
@@ -6872,7 +6836,7 @@ schedule_insns (dump_file)
if (insn == BLOCK_END (b))
break;
}
-
+
/* ?!? We could save some memory by computing a per-region luid mapping
which could reduce both the number of vectors in the cache and the size
of each vector. Instead we just avoid the cache entirely unless the
@@ -7007,7 +6971,7 @@ schedule_insns (dump_file)
{
sbitmap_zero (blocks);
for (b = RGN_NR_BLOCKS (rgn) - 1; b >= 0; --b)
- SET_BIT (blocks, rgn_bb_table [RGN_BLOCKS (rgn) + b]);
+ SET_BIT (blocks, rgn_bb_table[RGN_BLOCKS (rgn) + b]);
deaths_in_region[rgn] = count_or_remove_death_notes (blocks, 1);
}
@@ -7027,7 +6991,7 @@ schedule_insns (dump_file)
I'm fairly certain that this _shouldn't_ happen, since I don't think
that live_at_start should change at region heads. Not sure what the
- best way to test for this kind of thing... */
+ best way to test for this kind of thing... */
allocate_reg_life_data ();
compute_bb_for_insn (max_uid);
@@ -7057,14 +7021,14 @@ schedule_insns (dump_file)
/* In the single block case, the count of registers that died should
not have changed during the schedule. */
if (count_or_remove_death_notes (blocks, 0) != deaths_in_region[rgn])
- abort ();
+ abort ();
#endif
}
if (any_large_regions)
{
update_life_info (large_region_blocks, UPDATE_LIFE_GLOBAL,
- PROP_DEATH_NOTES | PROP_REG_INFO);
+ PROP_DEATH_NOTES | PROP_REG_INFO);
}
/* Reposition the prologue and epilogue notes in case we moved the
@@ -7080,7 +7044,8 @@ schedule_insns (dump_file)
{
if (reload_completed == 0 && flag_schedule_interblock)
{
- fprintf (dump, "\n;; Procedure interblock/speculative motions == %d/%d \n",
+ fprintf (dump,
+ "\n;; Procedure interblock/speculative motions == %d/%d \n",
nr_inter, nr_spec);
}
else
diff --git a/gcc/ifcvt.c b/gcc/ifcvt.c
index 901bd42b483..3ca0e6ccc65 100644
--- a/gcc/ifcvt.c
+++ b/gcc/ifcvt.c
@@ -1247,6 +1247,11 @@ noce_process_if_block (test_bb, then_bb, else_bb, join_bb)
reorder_insns (insn_b, insn_b, PREV_INSN (if_info.cond_earliest));
insn_b = NULL_RTX;
}
+ /* If we have "x = b; if (...) x = a;", and x has side-effects, then
+ x must be executed twice. */
+ else if (insn_b && side_effects_p (orig_x))
+ return FALSE;
+
x = orig_x;
goto success;
}
diff --git a/gcc/install.texi b/gcc/install.texi
index f74a906fdcb..10b6e94d77a 100644
--- a/gcc/install.texi
+++ b/gcc/install.texi
@@ -384,16 +384,17 @@ directory.
@samp{LANGUAGES=c} specifies that only the C compiler should be
compiled. The makefile normally builds compilers for all the supported
-languages; currently, C, C++ and Objective C. However, C is the only
-language that is sure to work when you build with other non-GNU C
-compilers. In addition, building anything but C at this stage is a
-waste of time.
+languages; currently, C, C++, Objective C, Java, FORTRAN, and CHILL.
+However, C is the only language that is sure to work when you build with
+other non-GNU C compilers. In addition, building anything but C at this
+stage is a waste of time.
In general, you can specify the languages to build by typing the
argument @samp{LANGUAGES="@var{list}"}, where @var{list} is one or more
-words from the list @samp{c}, @samp{c++}, and @samp{objective-c}. If
-you have any additional GNU compilers as subdirectories of the GNU CC
-source directory, you may also specify their names in this list.
+words from the list @samp{c}, @samp{c++}, @samp{objective-c},
+@samp{java}, @samp{f77}, and @samp{CHILL}. If you have any additional
+GNU compilers as subdirectories of the GNU CC source directory, you may
+also specify their names in this list.
Ignore any warnings you may see about ``statement not reached'' in
@file{insn-emit.c}; they are normal. Also, warnings about ``unknown
@@ -750,9 +751,9 @@ Here are the possible CPU types:
@c gmicro, fx80, spur and tahoe omitted since they don't work.
1750a, a29k, alpha, arm, avr, c@var{n}, clipper, dsp16xx, elxsi, fr30, h8300,
hppa1.0, hppa1.1, i370, i386, i486, i586, i686, i786, i860, i960, m32r,
-m68000, m68k, m88k, mcore, mips, mipsel, mips64, mips64el, mn10200, mn10300,
-ns32k, pdp11, powerpc, powerpcle, romp, rs6000, sh, sparc, sparclite,
-sparc64, v850, vax, we32k.
+m68000, m68k, m6811, m6812, m88k, mcore, mips, mipsel, mips64, mips64el,
+mn10200, mn10300, ns32k, pdp11, powerpc, powerpcle, romp, rs6000, sh, sparc,
+sparclite, sparc64, v850, vax, we32k.
@end quotation
Here are the recognized company names. As you can see, customary
@@ -1342,6 +1343,14 @@ point traps inherently cannot work with the FPA.
See @ref{Sun Install}, for information on installing GNU CC on Sun
systems.
+@item m6811-elf
+Motorola 68HC11 family micro controllers. These are used in embedded
+applications. There are no standard Unix configurations.
+
+@item m6812-elf
+Motorola 68HC12 family micro controllers. These are used in embedded
+applications. There are no standard Unix configurations.
+
@item m88k-*-svr3
Motorola m88k running the AT&T/Unisoft/Motorola V.3 reference port.
These systems tend to use the Green Hills C, revision 1.8.5, as the
diff --git a/gcc/integrate.c b/gcc/integrate.c
index 5a7fe637247..a98da1d3133 100644
--- a/gcc/integrate.c
+++ b/gcc/integrate.c
@@ -20,7 +20,6 @@ along with GNU CC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
-
#include "config.h"
#include "system.h"
@@ -63,7 +62,7 @@ extern struct obstack *function_maybepermanent_obstack;
: (8 * (8 + list_length (DECL_ARGUMENTS (DECL)))))
#endif
-/* Decide whether a function with a target specific attribute
+/* Decide whether a function with a target specific attribute
attached can be inlined. By default we disallow this. */
#ifndef FUNCTION_ATTRIBUTE_INLINABLE_P
#define FUNCTION_ATTRIBUTE_INLINABLE_P(FNDECL) 0
@@ -118,7 +117,7 @@ get_label_from_map (map, i)
rtx x = map->label_map[i];
if (x == NULL_RTX)
- x = map->label_map[i] = gen_label_rtx();
+ x = map->label_map[i] = gen_label_rtx ();
return x;
}
@@ -316,7 +315,7 @@ initialize_for_inline (fndecl)
}
/* Copy NODE (which must be a DECL, but not a PARM_DECL). The DECL
- originally was in the FROM_FN, but now it will be in the
+ originally was in the FROM_FN, but now it will be in the
TO_FN. */
tree
@@ -363,7 +362,7 @@ copy_decl_for_inlining (decl, from_fn, to_fn)
/* Set the context for the new declaration. */
if (!DECL_CONTEXT (decl))
/* Globals stay global. */
- ;
+ ;
else if (DECL_CONTEXT (decl) != from_fn)
/* Things that weren't in the scope of the function we're inlining
from aren't in the scope we're inlining too, either. */
@@ -469,8 +468,8 @@ save_for_inline_nocopy (fndecl)
static void
save_parm_insns (insn, first_nonparm_insn)
- rtx insn;
- rtx first_nonparm_insn;
+ rtx insn;
+ rtx first_nonparm_insn;
{
if (insn == NULL_RTX)
return;
@@ -487,7 +486,7 @@ save_parm_insns (insn, first_nonparm_insn)
/* If this is a CALL_PLACEHOLDER insn then we need to look into the
three attached sequences: normal call, sibling call and tail
- recursion. */
+ recursion. */
if (GET_CODE (insn) == CALL_INSN
&& GET_CODE (PATTERN (insn)) == CALL_PLACEHOLDER)
{
@@ -560,9 +559,9 @@ process_reg_param (map, loc, copy)
/* Used by duplicate_eh_handlers to map labels for the exception table */
static struct inline_remap *eif_eh_map;
-static rtx
+static rtx
expand_inline_function_eh_labelmap (label)
- rtx label;
+ rtx label;
{
int index = CODE_LABEL_NUMBER (label);
return get_label_from_map (eif_eh_map, index);
@@ -579,7 +578,7 @@ compare_blocks (v1, v2)
tree b1 = *((const tree *) v1);
tree b2 = *((const tree *) v2);
- return ((char *) BLOCK_ABSTRACT_ORIGIN (b1)
+ return ((char *) BLOCK_ABSTRACT_ORIGIN (b1)
- (char *) BLOCK_ABSTRACT_ORIGIN (b2));
}
@@ -782,7 +781,7 @@ expand_inline_function (fndecl, parms, target, ignore, type,
mark_reg_pointer (arg_vals[i],
TYPE_ALIGN (TREE_TYPE (TREE_TYPE (formal))));
}
-
+
/* Allocate the structures we use to remap things. */
map = (struct inline_remap *) xmalloc (sizeof (struct inline_remap));
@@ -990,7 +989,7 @@ expand_inline_function (fndecl, parms, target, ignore, type,
if (! structure_value_addr
|| ! aggregate_value_p (DECL_RESULT (fndecl)))
abort ();
-
+
/* Pass the function the address in which to return a structure
value. Note that a constructor can cause someone to call us
with STRUCTURE_VALUE_ADDR, but the initialization takes place
@@ -1056,7 +1055,7 @@ expand_inline_function (fndecl, parms, target, ignore, type,
{
/* Don't make BLKmode registers. If this looks like
a BLKmode object being returned in a register, get
- the mode from that, otherwise abort. */
+ the mode from that, otherwise abort. */
if (departing_mode == BLKmode)
{
if (REG == GET_CODE (DECL_RTL (DECL_RESULT (fndecl))))
@@ -1065,10 +1064,10 @@ expand_inline_function (fndecl, parms, target, ignore, type,
arriving_mode = departing_mode;
}
else
- abort();
+ abort ();
}
-
- target = gen_reg_rtx (departing_mode);
+
+ target = gen_reg_rtx (departing_mode);
}
/* If function's value was promoted before return,
@@ -1105,7 +1104,7 @@ expand_inline_function (fndecl, parms, target, ignore, type,
/* Initialize label_map. get_label_from_map will actually make
the labels. */
- bzero ((char *) &map->label_map [min_labelno],
+ bzero ((char *) &map->label_map[min_labelno],
(max_labelno - min_labelno) * sizeof (rtx));
/* Make copies of the decls of the symbols in the inline function, so that
@@ -1124,7 +1123,7 @@ expand_inline_function (fndecl, parms, target, ignore, type,
/* Sort the block-map so that it will be easy to find remapped
blocks later. */
- qsort (&VARRAY_TREE (map->block_map, 0),
+ qsort (&VARRAY_TREE (map->block_map, 0),
map->block_map->elements_used,
sizeof (tree),
compare_blocks);
@@ -1161,7 +1160,7 @@ expand_inline_function (fndecl, parms, target, ignore, type,
insert_block (block);
else
{
- BLOCK_CHAIN (block)
+ BLOCK_CHAIN (block)
= BLOCK_CHAIN (DECL_INITIAL (current_function_decl));
BLOCK_CHAIN (DECL_INITIAL (current_function_decl)) = block;
}
@@ -1185,12 +1184,12 @@ expand_inline_function (fndecl, parms, target, ignore, type,
emit_line_note (input_filename, lineno);
/* If the function returns a BLKmode object in a register, copy it
- out of the temp register into a BLKmode memory object. */
- if (target
+ out of the temp register into a BLKmode memory object. */
+ if (target
&& TYPE_MODE (TREE_TYPE (TREE_TYPE (fndecl))) == BLKmode
&& ! aggregate_value_p (TREE_TYPE (TREE_TYPE (fndecl))))
target = copy_blkmode_from_reg (0, target, TREE_TYPE (TREE_TYPE (fndecl)));
-
+
if (structure_value_addr)
{
target = gen_rtx_MEM (TYPE_MODE (type),
@@ -1218,18 +1217,18 @@ expand_inline_function (fndecl, parms, target, ignore, type,
/* Make copies of each insn in the given list using the mapping
computed in expand_inline_function. This function may call itself for
insns containing sequences.
-
+
Copying is done in two passes, first the insns and then their REG_NOTES,
just like save_for_inline.
If static_chain_value is non-zero, it represents the context-pointer
- register for the function. */
+ register for the function. */
static void
copy_insn_list (insns, map, static_chain_value)
- rtx insns;
- struct inline_remap *map;
- rtx static_chain_value;
+ rtx insns;
+ struct inline_remap *map;
+ rtx static_chain_value;
{
register int i;
rtx insn;
@@ -1265,7 +1264,7 @@ copy_insn_list (insns, map, static_chain_value)
break;
/* If the inline fn needs eh context, make sure that
- the current fn has one. */
+ the current fn has one. */
if (GET_CODE (pattern) == USE
&& find_reg_note (insn, REG_EH_CONTEXT, 0) != 0)
get_eh_context ();
@@ -1435,7 +1434,7 @@ copy_insn_list (insns, map, static_chain_value)
case CALL_INSN:
/* If this is a CALL_PLACEHOLDER insn then we need to copy the
three attached sequences: normal call, sibling call and tail
- recursion. */
+ recursion. */
if (GET_CODE (PATTERN (insn)) == CALL_PLACEHOLDER)
{
rtx sequence[3];
@@ -1444,7 +1443,7 @@ copy_insn_list (insns, map, static_chain_value)
for (i = 0; i < 3; i++)
{
rtx seq;
-
+
sequence[i] = NULL_RTX;
seq = XEXP (PATTERN (insn), i);
if (seq)
@@ -1456,16 +1455,16 @@ copy_insn_list (insns, map, static_chain_value)
}
}
- /* Find the new tail recursion label.
+ /* Find the new tail recursion label.
It will already be substituted into sequence[2]. */
tail_label = copy_rtx_and_substitute (XEXP (PATTERN (insn), 3),
map, 0);
- copy = emit_call_insn (gen_rtx_CALL_PLACEHOLDER (VOIDmode,
- sequence[0],
- sequence[1],
- sequence[2],
- tail_label));
+ copy = emit_call_insn (gen_rtx_CALL_PLACEHOLDER (VOIDmode,
+ sequence[0],
+ sequence[1],
+ sequence[2],
+ tail_label));
break;
}
@@ -1488,7 +1487,7 @@ copy_insn_list (insns, map, static_chain_value)
#endif
try_constants (copy, map);
- /* Be lazy and assume CALL_INSNs clobber all hard registers. */
+ /* Be lazy and assume CALL_INSNs clobber all hard registers. */
for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
VARRAY_CONST_EQUIV (map->const_equiv_varray, i).rtx = 0;
break;
@@ -1505,8 +1504,8 @@ copy_insn_list (insns, map, static_chain_value)
break;
case NOTE:
- /* NOTE_INSN_FUNCTION_END and NOTE_INSN_FUNCTION_BEG are
- discarded because it is important to have only one of
+ /* NOTE_INSN_FUNCTION_END and NOTE_INSN_FUNCTION_BEG are
+ discarded because it is important to have only one of
each in the current function.
NOTE_INSN_DELETED notes aren't useful (save_for_inline
@@ -1532,16 +1531,16 @@ copy_insn_list (insns, map, static_chain_value)
rtx label
= get_label_from_map (map, NOTE_EH_HANDLER (copy));
- /* we have to duplicate the handlers for the original */
- if (NOTE_LINE_NUMBER (copy) == NOTE_INSN_EH_REGION_BEG)
- {
- /* We need to duplicate the handlers for the EH region
- and we need to indicate where the label map is */
- eif_eh_map = map;
- duplicate_eh_handlers (NOTE_EH_HANDLER (copy),
- CODE_LABEL_NUMBER (label),
- expand_inline_function_eh_labelmap);
- }
+ /* We have to duplicate the handlers for the original. */
+ if (NOTE_LINE_NUMBER (copy) == NOTE_INSN_EH_REGION_BEG)
+ {
+ /* We need to duplicate the handlers for the EH region
+ and we need to indicate where the label map is */
+ eif_eh_map = map;
+ duplicate_eh_handlers (NOTE_EH_HANDLER (copy),
+ CODE_LABEL_NUMBER (label),
+ expand_inline_function_eh_labelmap);
+ }
/* We have to forward these both to match the new exception
region. */
@@ -1555,12 +1554,12 @@ copy_insn_list (insns, map, static_chain_value)
tree *mapped_block_p;
mapped_block_p
- = (tree *) bsearch (NOTE_BLOCK (insn),
+ = (tree *) bsearch (NOTE_BLOCK (insn),
&VARRAY_TREE (map->block_map, 0),
map->block_map->elements_used,
sizeof (tree),
find_block);
-
+
if (!mapped_block_p)
abort ();
else
@@ -1598,7 +1597,7 @@ copy_insn_list (insns, map, static_chain_value)
apply_change_group ();
REG_NOTES (map->insn_map[INSN_UID (insn)]) = note;
- /* Finally, delete any REG_LABEL notes from the chain. */
+ /* Finally, delete any REG_LABEL notes from the chain. */
for (; note; note = next)
{
next = XEXP (note, 1);
@@ -1700,7 +1699,7 @@ integrate_decl_tree (let, map)
TREE_USED (new_block) = TREE_USED (let);
BLOCK_ABSTRACT_ORIGIN (new_block) = let;
-
+
return new_block;
}
@@ -1752,7 +1751,15 @@ copy_rtx_and_substitute (orig, map, for_lhs)
{
/* Some hard registers are also mapped,
but others are not translated. */
- if (map->reg_map[regno] != 0)
+ if (map->reg_map[regno] != 0
+ /* We shouldn't usually have reg_map set for return
+ register, but it may happen if we have leaf-register
+ remapping and the return register is used in one of
+ the calling sequences of a call_placeholer. In this
+ case, we'll end up with a reg_map set for this
+ register, but we don't want to use for registers
+ marked as return values. */
+ && ! REG_FUNCTION_VALUE_P (orig))
return map->reg_map[regno];
/* If this is the virtual frame pointer, make space in current
@@ -1763,7 +1770,7 @@ copy_rtx_and_substitute (orig, map, for_lhs)
equivalence for it to be the address. This will substitute the
address into insns where it can be substituted and use the new
pseudo where it can't. */
- if (regno == VIRTUAL_STACK_VARS_REGNUM)
+ else if (regno == VIRTUAL_STACK_VARS_REGNUM)
{
rtx loc, seq;
int size = get_func_frame_size (DECL_SAVED_INSNS (map->fndecl));
@@ -1815,7 +1822,7 @@ copy_rtx_and_substitute (orig, map, for_lhs)
start_sequence ();
loc = assign_stack_temp (BLKmode, size, 1);
loc = XEXP (loc, 0);
- /* When arguments grow downward, the virtual incoming
+ /* When arguments grow downward, the virtual incoming
args pointer points to the top of the argument block,
so the remapped location better do the same. */
#ifdef ARGS_GROW_DOWNWARD
@@ -1850,7 +1857,26 @@ copy_rtx_and_substitute (orig, map, for_lhs)
else
return map->inline_target;
}
- return orig;
+#if defined (LEAF_REGISTERS) && defined (LEAF_REG_REMAP)
+ /* If leaf_renumber_regs_insn() might remap this register to
+ some other number, make sure we don't share it with the
+ inlined function, otherwise delayed optimization of the
+ inlined function may change it in place, breaking our
+ reference to it. We may still shared it within the
+ function, so create an entry for this register in the
+ reg_map. */
+ if (map->integrating && regno < FIRST_PSEUDO_REGISTER
+ && LEAF_REGISTERS[regno] && LEAF_REG_REMAP (regno) != regno)
+ {
+ temp = gen_rtx_REG (mode, regno);
+ map->reg_map[regno] = temp;
+ return temp;
+ }
+#endif
+ else
+ return orig;
+
+ abort ();
}
if (map->reg_map[regno] == NULL)
{
@@ -1892,7 +1918,7 @@ copy_rtx_and_substitute (orig, map, for_lhs)
copy = gen_rtx_ADDRESSOF (mode,
copy_rtx_and_substitute (XEXP (orig, 0),
map, for_lhs),
- 0, ADDRESSOF_DECL(orig));
+ 0, ADDRESSOF_DECL (orig));
regno = ADDRESSOF_REGNO (orig);
if (map->reg_map[regno])
regno = REGNO (map->reg_map[regno]);
@@ -2012,13 +2038,12 @@ copy_rtx_and_substitute (orig, map, for_lhs)
copy_rtx_and_substitute (constant, map, for_lhs)),
0);
}
- else
- if (SYMBOL_REF_NEED_ADJUST (orig))
- {
- eif_eh_map = map;
- return rethrow_symbol_map (orig,
- expand_inline_function_eh_labelmap);
- }
+ else if (SYMBOL_REF_NEED_ADJUST (orig))
+ {
+ eif_eh_map = map;
+ return rethrow_symbol_map (orig,
+ expand_inline_function_eh_labelmap);
+ }
return orig;
@@ -2097,7 +2122,7 @@ copy_rtx_and_substitute (orig, map, for_lhs)
if (SET_DEST (orig) == virtual_stack_vars_rtx
|| SET_DEST (orig) == virtual_incoming_args_rtx)
{
- /* In case a translation hasn't occurred already, make one now. */
+ /* In case a translation hasn't occurred already, make one now. */
rtx equiv_reg;
rtx equiv_loc;
HOST_WIDE_INT loc_offset;
@@ -2108,7 +2133,7 @@ copy_rtx_and_substitute (orig, map, for_lhs)
REGNO (equiv_reg)).rtx;
loc_offset
= GET_CODE (equiv_loc) == REG ? 0 : INTVAL (XEXP (equiv_loc, 1));
-
+
return gen_rtx_SET (VOIDmode, SET_DEST (orig),
force_operand
(plus_constant
@@ -2152,7 +2177,7 @@ copy_rtx_and_substitute (orig, map, for_lhs)
XEXP (copy, 0) = copy_rtx_and_substitute (XEXP (orig, 0), map, 0);
MEM_COPY_ATTRIBUTES (copy, orig);
return copy;
-
+
default:
break;
}
@@ -2293,7 +2318,7 @@ try_constants (insn, map)
into insns; cse will do the latter task better.
This function is also used to adjust address of items previously addressed
- via the virtual stack variable or virtual incoming arguments registers.
+ via the virtual stack variable or virtual incoming arguments registers.
If MEMONLY is nonzero, only make changes inside a MEM. */
@@ -2371,7 +2396,7 @@ subst_constants (loc, insn, map, memonly)
/* We can't call subst_constants on &SUBREG_REG (x) because any
constant or SUBREG wouldn't be valid inside our SUBEG. Instead,
see what is inside, try to form the new SUBREG and see if that is
- valid. We handle two cases: extracting a full word in an
+ valid. We handle two cases: extracting a full word in an
integral mode and extracting the low part. */
subst_constants (&inner, NULL_RTX, map, 0);
@@ -2475,7 +2500,7 @@ subst_constants (loc, insn, map, memonly)
}
format_ptr = GET_RTX_FORMAT (code);
-
+
/* If the first operand is an expression, save its mode for later. */
if (*format_ptr == 'e')
op0_mode = GET_MODE (XEXP (x, 0));
@@ -2496,7 +2521,7 @@ subst_constants (loc, insn, map, memonly)
case 'i':
case 's':
case 'w':
- case 'n':
+ case 'n':
case 't':
break;
@@ -2556,7 +2581,7 @@ subst_constants (loc, insn, map, memonly)
}
#endif
break;
- }
+ }
case '2':
case 'c':
@@ -2606,7 +2631,7 @@ mark_stores (dest, x, data)
{
unsigned int uregno = regno;
unsigned int last_reg = (uregno >= FIRST_PSEUDO_REGISTER ? uregno
- : uregno + HARD_REGNO_NREGS (uregno, mode) - 1);
+ : uregno + HARD_REGNO_NREGS (uregno, mode) - 1);
unsigned int i;
/* Ignore virtual stack var or virtual arg register since those
@@ -2638,21 +2663,21 @@ set_block_origin_self (stmt)
BLOCK_ABSTRACT_ORIGIN (stmt) = stmt;
{
- register tree local_decl;
+ register tree local_decl;
- for (local_decl = BLOCK_VARS (stmt);
+ for (local_decl = BLOCK_VARS (stmt);
local_decl != NULL_TREE;
local_decl = TREE_CHAIN (local_decl))
- set_decl_origin_self (local_decl); /* Potential recursion. */
+ set_decl_origin_self (local_decl); /* Potential recursion. */
}
{
- register tree subblock;
+ register tree subblock;
- for (subblock = BLOCK_SUBBLOCKS (stmt);
+ for (subblock = BLOCK_SUBBLOCKS (stmt);
subblock != NULL_TREE;
subblock = BLOCK_CHAIN (subblock))
- set_block_origin_self (subblock); /* Recurse. */
+ set_block_origin_self (subblock); /* Recurse. */
}
}
}
diff --git a/gcc/invoke.texi b/gcc/invoke.texi
index 885978fa6a0..acd8c53b900 100644
--- a/gcc/invoke.texi
+++ b/gcc/invoke.texi
@@ -233,6 +233,10 @@ in the following sections.
-mfpa -mnobitfield -mrtd -mshort -msoft-float -mpcrel
-malign-int -mstrict-align
+@emph{M68hc1x Options}
+-m6811 -m6812 -m68hc11 -m68hc12
+-mauto-incdec -mshort -msoft-reg-count=@var{count}
+
@emph{VAX Options}
-mg -mgnu -munix
@@ -2360,6 +2364,9 @@ standard error.
Annotate the assembler output with a comment indicating which
pattern and alternative was used. The length of each instruction is
also printed.
+@item P
+Dump the RTL in the assembler output as a comment before each instruction.
+Also turns on @samp{-dp} annotation.
@item v
For each of the other indicated dump files (except for
@file{@var{file}.00.rtl}), dump a representation of the control flow graph
@@ -3889,6 +3896,7 @@ that macro, which enables you to change the defaults.
@menu
* M680x0 Options::
+* M68hc1x Options::
* VAX Options::
* SPARC Options::
* Convex Options::
@@ -4069,6 +4077,41 @@ the system.
@end table
+@node M68hc1x Options
+@subsection M68hc1x Options
+@cindex M68hc1x options
+
+These are the @samp{-m} options defined for the 68hc11 and 68hc12
+microcontrollers. The default values for these options depends on
+which style of microcontroller was selected when the compiler was configured;
+the defaults for the most common choices are given below.
+
+@table @code
+@item -m6811
+@itemx -m68hc11
+Generate output for a 68HC11. This is the default
+when the compiler is configured for 68HC11-based systems.
+
+@item -m6812
+@itemx -m68hc12
+Generate output for a 68HC12. This is the default
+when the compiler is configured for 68HC12-based systems.
+
+@item -mauto-incdec
+Enable the use of 68HC12 pre and post auto-increment and auto-decrement
+addressing modes.
+
+@item -mshort
+Consider type @code{int} to be 16 bits wide, like @code{short int}.
+
+@item -msoft-reg-count=@var{count}
+Specify the number of pseudo-soft registers which are used for the
+code generation. The maximum number is 32. Using more pseudo-soft
+register may or may not result in better code depending on the program.
+The default is 4 for 68HC11 and 2 for 68HC12.
+
+@end table
+
@node VAX Options
@subsection VAX Options
@cindex VAX options
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 425f8011548..40ba522093c 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,7 +1,82 @@
+2000-09-13 Tom Tromey <tromey@cygnus.com>
+
+ * jcf-parse.c: Include <locale.h>.
+ * jv-scan.c: Include <locale.h>.
+
+2000-09-12 Tom Tromey <tromey@cygnus.com>
+
+ * expr.c (pop_type_0): Return `Object' if trying to merge two
+ interface types.
+ * verify.c (merge_types): Don't return `TYPE_UNKNOWN' for
+ interface types; `Object' is always a valid supertype.
+
+2000-09-12 Tom Tromey <tromey@cygnus.com>
+
+ Fix for PR gcj/33:
+ * jv-scan.c (help): Document --encoding.
+ (options): Added `encoding' entry.
+ (OPT_ENCODING): New define.
+ (main): Handle --encoding.
+ Include <langinfo.h> if nl_langinfo exists.
+ * lang-options.h: Document --classpath, --CLASSPATH, --main, and
+ --encoding.
+ * jcf-parse.c Include <langinfo.h> if we have nl_langinfo.
+ (parse_source_file): Correctly call java_init_lex. Added `finput'
+ argument. Use nl_langinfo to determine default encoding.
+ * java-tree.h (current_encoding): Declare.
+ * parse.y (java_parser_context_restore_global): Don't restore
+ `finput'.
+ (java_parser_context_save_global): Don't set `finput' field.
+ (java_pop_parser_context): Don't restore `finput'. Free old lexer
+ if required.
+ * lang.c (current_encoding): New global.
+ (lang_decode_option): Recognize `-fencoding='.
+ (finish_parse): Don't close finput.
+ * parse.h (struct parser_ctxt): Removed `finput' and
+ `unget_utf8_value' fields. Added `lexer' field.
+ (java_init_lex): Fixed declaration.
+ * lex.c (java_new_lexer): New function.
+ (java_destroy_lexer): Likewise.
+ (java_read_char): Added `lex' argument. Handle iconv case.
+ (java_read_unicode): Added `lex' argument. Count backslashes in
+ lexer structure.
+ (java_init_lex): Added `finput' and `encoding' arguments. Set
+ `lexer' field in ctxp.
+ (BAD_UTF8_VALUE): Removed.
+ (java_lex): Handle seeing UEOF in the middle of a string literal.
+ * lex.h: Include <iconv.h> if HAVE_ICONV defined.
+ (java_lexer): New structure.
+ (UNGETC): Removed.
+ (GETC): Removed.
+ (DEFAULT_ENCODING): New define.
+ (java_destroy_lexer): Declare.
+
+2000-09-12 Tom Tromey <tromey@cygnus.com>
+
+ Fix for PR gcj/343:
+ * lex.c (java_init_lex): Initialize java_io_serializable.
+ * parse.y (java_io_serializable): New global.
+ (valid_ref_assignconv_cast_p): An array can be cast to
+ serializable.
+
+2000-09-10 Zack Weinberg <zack@wolery.cumb.org>
+
+ * decl.c, expr.c: Include defaults.h if not already included.
+ Don't define the *_TYPE_SIZE macros.
+
+2000-09-09 Geoffrey Keating <geoffk@cygnus.com>
+
+ * typeck.c (build_java_array_type): Correct first parameter
+ in ADJUST_FIELD_ALIGN invocation.
+
2000-09-06 Tom Tromey <tromey@cygnus.com>
* lang-specs.h: Also recognize `-femit-class-files'.
+2000-09-05 Alexandre Petit-Bianco <apbianco@cygnus.com>
+
+ * verify.c (merge_types): Load the types to merge if necessary.
+
2000-09-02 Anthony Green <green@redhat.com>
* jcf-io.c: Include zlib.h.
diff --git a/gcc/java/decl.c b/gcc/java/decl.c
index 6ae02902081..9a53c6c85c1 100644
--- a/gcc/java/decl.c
+++ b/gcc/java/decl.c
@@ -54,10 +54,6 @@ static tree create_primitive_vtable PARAMS ((const char *));
before static field references. */
extern int always_initialize_class_p;
-#ifndef INT_TYPE_SIZE
-#define INT_TYPE_SIZE BITS_PER_WORD
-#endif
-
/* The DECL_MAP is a mapping from (index, type) to a decl node.
If index < max_locals, it is the index of a local variable.
if index >= max_locals, then index-max_locals is a stack slot.
diff --git a/gcc/java/expr.c b/gcc/java/expr.c
index a9c074f88b0..fbc08c69fa2 100644
--- a/gcc/java/expr.c
+++ b/gcc/java/expr.c
@@ -320,9 +320,8 @@ pop_type_0 (type)
/* This is a kludge, but matches what Sun's verifier does.
It can be tricked, but is safe as long as type errors
(i.e. interface method calls) are caught at run-time. */
- else if (CLASS_INTERFACE (TYPE_NAME (TREE_TYPE (type)))
- && t == object_ptr_type_node)
- return t;
+ /* FIXME: this is worse than a kludge, probably. */
+ return object_ptr_type_node;
}
return NULL_TREE;
}
@@ -984,10 +983,6 @@ expand_java_pushc (ival, type)
push_value (value);
}
-#ifndef INT_TYPE_SIZE
-#define INT_TYPE_SIZE BITS_PER_WORD
-#endif
-
static void
expand_java_return (type)
tree type;
diff --git a/gcc/java/java-tree.h b/gcc/java/java-tree.h
index 7b1129e78a9..5ab0af4ad6b 100644
--- a/gcc/java/java-tree.h
+++ b/gcc/java/java-tree.h
@@ -169,6 +169,9 @@ extern int flag_use_boehm_gc;
object to its synchronization structure. */
extern int flag_hash_synchronization;
+/* Encoding used for source files. */
+extern char *current_encoding;
+
/* The Java .class file that provides main_class; the main input file. */
extern struct JCF *current_jcf;
diff --git a/gcc/java/jcf-parse.c b/gcc/java/jcf-parse.c
index 02becc07483..fd180c7b704 100644
--- a/gcc/java/jcf-parse.c
+++ b/gcc/java/jcf-parse.c
@@ -35,6 +35,14 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */
#include "toplev.h"
#include "parse.h"
+#ifdef HAVE_LOCALE_H
+#include <locale.h>
+#endif
+
+#ifdef HAVE_NL_LANGINFO
+#include <langinfo.h>
+#endif
+
/* A CONSTANT_Utf8 element is converted to an IDENTIFIER_NODE at parse time. */
#define JPOOL_UTF(JCF, INDEX) CPOOL_UTF(&(JCF)->cpool, INDEX)
#define JPOOL_UTF_LENGTH(JCF, INDEX) IDENTIFIER_LENGTH (JPOOL_UTF (JCF, INDEX))
@@ -83,7 +91,7 @@ static struct JCF main_jcf[1];
static tree give_name_to_class PARAMS ((JCF *jcf, int index));
static void parse_zip_file_entries PARAMS ((void));
static void process_zip_dir PARAMS ((void));
-static void parse_source_file PARAMS ((tree));
+static void parse_source_file PARAMS ((tree, FILE *));
static void jcf_parse_source PARAMS ((void));
static int jcf_figure_file_type PARAMS ((JCF *));
static int find_in_current_zip PARAMS ((const char *, struct JCF **));
@@ -564,6 +572,7 @@ static void
jcf_parse_source ()
{
tree file;
+ FILE *finput;
java_parser_context_save_global ();
java_push_parser_context ();
@@ -576,7 +585,7 @@ jcf_parse_source ()
if (!(finput = fopen (input_filename, "r")))
fatal ("input file `%s' just disappeared - jcf_parse_source",
input_filename);
- parse_source_file (file);
+ parse_source_file (file, finput);
if (fclose (finput))
fatal ("can't close input file `%s' stream - jcf_parse_source",
input_filename);
@@ -754,8 +763,9 @@ parse_class_file ()
/* Parse a source file, as pointed by the current value of INPUT_FILENAME. */
static void
-parse_source_file (file)
+parse_source_file (file, finput)
tree file;
+ FILE *finput;
{
int save_error_count = java_error_count;
/* Mark the file as parsed */
@@ -765,7 +775,21 @@ parse_source_file (file)
lang_init_source (1); /* Error msgs have no method prototypes */
- java_init_lex (); /* Initialize the parser */
+ /* There's no point in trying to find the current encoding unless we
+ are going to do something intelligent with it -- hence the test
+ for iconv. */
+#ifdef HAVE_ICONV
+#ifdef HAVE_NL_LANGINFO
+ setlocale (LC_CTYPE, "");
+ if (current_encoding == NULL)
+ current_encoding = nl_langinfo (CODESET);
+#endif /* HAVE_NL_LANGINFO */
+#endif /* HAVE_ICONV */
+ if (current_encoding == NULL || *current_encoding == '\0')
+ current_encoding = DEFAULT_ENCODING;
+
+ /* Initialize the parser */
+ java_init_lex (finput, current_encoding);
java_parse_abort_on_error ();
java_parse (); /* Parse and build partial tree nodes. */
@@ -796,6 +820,7 @@ yyparse ()
int several_files = 0;
char *list = xstrdup (input_filename), *next;
tree node, current_file_list = NULL_TREE;
+ FILE *finput;
do
{
@@ -901,7 +926,7 @@ yyparse ()
case JCF_SOURCE:
java_push_parser_context ();
java_parser_context_save_global ();
- parse_source_file (name);
+ parse_source_file (name, finput);
java_parser_context_restore_global ();
java_pop_parser_context (1);
break;
diff --git a/gcc/java/jv-scan.c b/gcc/java/jv-scan.c
index adb7ba38345..992573e2d0f 100644
--- a/gcc/java/jv-scan.c
+++ b/gcc/java/jv-scan.c
@@ -26,6 +26,14 @@ Boston, MA 02111-1307, USA. */
#include "version.h"
+#ifdef HAVE_LOCALE_H
+#include <locale.h>
+#endif
+
+#ifdef HAVE_NL_LANGINFO
+#include <langinfo.h>
+#endif
+
#include <getopt.h>
void fatal PARAMS ((const char *s, ...)) ATTRIBUTE_PRINTF_1 ATTRIBUTE_NORETURN;
@@ -61,6 +69,7 @@ int flag_list_filename = 0;
#define OPT_HELP LONG_OPT (0)
#define OPT_VERSION LONG_OPT (1)
+#define OPT_ENCODING LONG_OPT (2)
static struct option options[] =
{
@@ -69,6 +78,7 @@ static struct option options[] =
{ "print-main", no_argument, &flag_find_main, 1 },
{ "list-filename", no_argument, &flag_list_filename, 1 },
{ "list-class", no_argument, &flag_dump_class, 1 },
+ { "encoding", required_argument, NULL, OPT_ENCODING },
{ NULL, no_argument, NULL, 0 }
};
@@ -84,6 +94,7 @@ help ()
{
printf ("Usage: jv-scan [OPTION]... FILE...\n\n");
printf ("Print useful information read from Java source files.\n\n");
+ printf (" --encoding NAME Specify encoding of input file\n");
printf (" --print-main Print name of class containing `main'\n");
printf (" --list-class List all classes defined in file\n");
printf (" --list-filename Print input filename when listing class names\n");
@@ -114,6 +125,7 @@ DEFUN (main, (argc, argv),
{
int i = 1;
const char *output_file = NULL;
+ const char *encoding = NULL;
long ft;
int opt;
@@ -144,6 +156,10 @@ DEFUN (main, (argc, argv),
version ();
break;
+ case OPT_ENCODING:
+ encoding = optarg;
+ break;
+
default:
usage ();
break;
@@ -172,7 +188,20 @@ DEFUN (main, (argc, argv),
input_filename = argv [i];
if ( (finput = fopen (argv [i], "r")) )
{
- java_init_lex ();
+ /* There's no point in trying to find the current encoding
+ unless we are going to do something intelligent with it
+ -- hence the test for iconv. */
+#ifdef HAVE_ICONV
+#ifdef HAVE_NL_LANGINFO
+ setlocale (LC_CTYPE, "");
+ if (encoding == NULL)
+ encoding = nl_langinfo (CODESET);
+#endif /* HAVE_NL_LANGINFO */
+#endif /* HAVE_ICONV */
+ if (encoding == NULL || *encoding == '\0')
+ encoding = DEFAULT_ENCODING;
+
+ java_init_lex (finput, encoding);
yyparse ();
if (ftell (out) != ft)
fputc ('\n', out);
diff --git a/gcc/java/lang-options.h b/gcc/java/lang-options.h
index 630e6d8a1bd..2b207dcdeb2 100644
--- a/gcc/java/lang-options.h
+++ b/gcc/java/lang-options.h
@@ -42,8 +42,10 @@ DEFINE_LANG_NAME ("Java")
{ "-M", "Print dependencies to stdout" },
{ "-MM", "Print dependencies to stdout" },
#endif /* ! USE_CPPLIB */
- { "-fclasspath", "Set class path and suppress system path" },
- { "-fCLASSPATH", "Set class path" },
+ { "--classpath", "Set class path and suppress system path" },
+ { "--CLASSPATH", "Set class path" },
+ { "--main", "Choose class whose main method should be used" },
+ { "--encoding", "Choose input encoding (default is UTF-8)" },
{ "-I", "Add directory to class path" },
{ "-foutput-class-dir", "Directory where class files should be written" },
{ "-fuse-divide-subroutine", "" },
diff --git a/gcc/java/lang.c b/gcc/java/lang.c
index 5f95f2d9c57..2dc33f22b09 100644
--- a/gcc/java/lang.c
+++ b/gcc/java/lang.c
@@ -121,6 +121,9 @@ int flag_hash_synchronization;
JNI, not CNI. */
int flag_jni = 0;
+/* The encoding of the source file. */
+char *current_encoding = NULL;
+
/* When non zero, report the now deprecated empty statements. */
int flag_extraneous_semicolon;
@@ -222,6 +225,13 @@ lang_decode_option (argc, argv)
return 1;
}
#undef ARG
+#define ARG "-fencoding="
+ if (strncmp (p, ARG, sizeof (ARG) - 1) == 0)
+ {
+ current_encoding = p + sizeof (ARG) - 1;
+ return 1;
+ }
+#undef ARG
if (p[0] == '-' && p[1] == 'f')
{
@@ -309,7 +319,9 @@ lang_decode_option (argc, argv)
return 0;
}
+/* Global open file. */
FILE *finput;
+
const char *
init_parse (filename)
const char *filename;
@@ -362,6 +374,7 @@ init_parse (filename)
}
}
}
+
init_lex ();
return filename;
@@ -370,7 +383,6 @@ init_parse (filename)
void
finish_parse ()
{
- fclose (finput);
jcf_dependency_write ();
}
diff --git a/gcc/java/lex.c b/gcc/java/lex.c
index 6efb9071780..4179b1dbca5 100644
--- a/gcc/java/lex.c
+++ b/gcc/java/lex.c
@@ -24,15 +24,15 @@ of Sun Microsystems, Inc. in the United States and other countries.
The Free Software Foundation is independent of Sun Microsystems, Inc. */
/* It defines java_lex (yylex) that reads a Java ASCII source file
-possibly containing Unicode escape sequence or utf8 encoded characters
-and returns a token for everything found but comments, white spaces
-and line terminators. When necessary, it also fills the java_lval
-(yylval) union. It's implemented to be called by a re-entrant parser
-generated by Bison.
+ possibly containing Unicode escape sequence or utf8 encoded
+ characters and returns a token for everything found but comments,
+ white spaces and line terminators. When necessary, it also fills
+ the java_lval (yylval) union. It's implemented to be called by a
+ re-entrant parser generated by Bison.
-The lexical analysis conforms to the Java grammar described in "The
-Java(TM) Language Specification. J. Gosling, B. Joy, G. Steele.
-Addison Wesley 1996" (http://java.sun.com/docs/books/jls/html/3.doc.html) */
+ The lexical analysis conforms to the Java grammar described in "The
+ Java(TM) Language Specification. J. Gosling, B. Joy, G. Steele.
+ Addison Wesley 1996" (http://java.sun.com/docs/books/jls/html/3.doc.html) */
#include "keyword.h"
@@ -55,15 +55,18 @@ static int java_letter_or_digit_p PARAMS ((unicode_t));
static int java_parse_doc_section PARAMS ((unicode_t));
static void java_parse_end_comment PARAMS ((unicode_t));
static unicode_t java_get_unicode PARAMS ((void));
-static unicode_t java_read_unicode PARAMS ((int, int *));
+static unicode_t java_read_unicode PARAMS ((java_lexer *, int, int *));
static void java_store_unicode PARAMS ((struct java_line *, unicode_t, int));
-static unicode_t java_read_char PARAMS ((void));
+static unicode_t java_read_char PARAMS ((java_lexer *));
static void java_allocate_new_line PARAMS ((void));
static void java_unget_unicode PARAMS ((void));
static unicode_t java_sneak_unicode PARAMS ((void));
+java_lexer *java_new_lexer PARAMS ((FILE *, const char *));
void
-java_init_lex ()
+java_init_lex (finput, encoding)
+ FILE *finput;
+ const char *encoding;
{
#ifndef JC1_LITE
int java_lang_imported = 0;
@@ -72,6 +75,8 @@ java_init_lex ()
java_lang_id = get_identifier ("java.lang");
if (!java_lang_cloneable)
java_lang_cloneable = get_identifier ("java.lang.Cloneable");
+ if (!java_io_serializable)
+ java_io_serializable = get_identifier ("java.io.Serializable");
if (!inst_id)
inst_id = get_identifier ("inst$");
if (!wpv_id)
@@ -112,9 +117,9 @@ java_init_lex ()
ctxp->lineno = lineno = 0;
ctxp->p_line = NULL;
ctxp->c_line = NULL;
- ctxp->unget_utf8_value = 0;
ctxp->minus_seen = 0;
ctxp->java_error_flag = 0;
+ ctxp->lexer = java_new_lexer (finput, encoding);
}
static char *
@@ -192,59 +197,180 @@ java_allocate_new_line ()
ctxp->c_line->white_space_only = 1;
}
-#define BAD_UTF8_VALUE 0xFFFE
-
-static unicode_t
-java_read_char ()
+/* Create a new lexer object. */
+java_lexer *
+java_new_lexer (finput, encoding)
+ FILE *finput;
+ const char *encoding;
{
- int c;
- int c1, c2;
+ java_lexer *lex = (java_lexer *) xmalloc (sizeof (java_lexer));
+ int enc_error = 0;
+
+ lex->finput = finput;
+ lex->bs_count = 0;
+ lex->unget_value = 0;
- if (ctxp->unget_utf8_value)
+#ifdef HAVE_ICONV
+ lex->handle = iconv_open ("UCS-2", encoding);
+ if (lex->handle == (iconv_t) -1)
{
- int to_return = ctxp->unget_utf8_value;
- ctxp->unget_utf8_value = 0;
- return (to_return);
+ /* FIXME: we should give a nice error based on errno here. */
+ enc_error = 1;
}
+ lex->first = -1;
+ lex->last = -1;
+#else /* HAVE_ICONV */
+ if (strcmp (encoding, DEFAULT_ENCODING))
+ enc_error = 1;
+#endif /* HAVE_ICONV */
- c = GETC ();
+ if (enc_error)
+ fatal ("unknown encoding: `%s'", encoding);
- if (c < 128)
- return (unicode_t)c;
- if (c == EOF)
- return UEOF;
- else
+ return lex;
+}
+
+void
+java_destroy_lexer (lex)
+ java_lexer *lex;
+{
+#ifdef HAVE_ICONV
+ iconv_close (lex->handle);
+#endif
+ free (lex);
+}
+
+static unicode_t
+java_read_char (lex)
+ java_lexer *lex;
+{
+ if (lex->unget_value)
{
- if ((c & 0xe0) == 0xc0)
- {
- c1 = GETC ();
- if ((c1 & 0xc0) == 0x80)
- return (unicode_t)(((c &0x1f) << 6) + (c1 & 0x3f));
- c = c1;
- }
- else if ((c & 0xf0) == 0xe0)
- {
- c1 = GETC ();
- if ((c1 & 0xc0) == 0x80)
- {
- c2 = GETC ();
- if ((c2 & 0xc0) == 0x80)
- return (unicode_t)(((c & 0xf) << 12) +
- (( c1 & 0x3f) << 6) + (c2 & 0x3f));
- else
- c = c2;
- }
- else
- c = c1;
- }
- /* We looked for a UTF8 multi-byte sequence (since we saw an initial
- byte with the high bit set), but found invalid bytes instead.
- If the most recent byte was Ascii (and not EOF), we should
- unget it, in case it was a comment terminator or other delimitor. */
- if ((c & 0x80) == 0)
- UNGETC (c);
- return BAD_UTF8_VALUE;
+ unicode_t r = lex->unget_value;
+ lex->unget_value = 0;
+ return r;
}
+
+#ifdef HAVE_ICONV
+ {
+ char out[2];
+ size_t ir, inbytesleft, in_save, out_count;
+ char *inp, *outp;
+
+ while (1)
+ {
+ /* See if we need to read more data. If FIRST == 0 then the
+ previous conversion attempt ended in the middle of a
+ character at the end of the buffer. Otherwise we only have
+ to read if the buffer is empty. */
+ if (lex->first == 0 || lex->first >= lex->last)
+ {
+ int r;
+
+ if (lex->first >= lex->last)
+ {
+ lex->first = 0;
+ lex->last = 0;
+ }
+ if (feof (lex->finput))
+ return UEOF;
+ r = fread (&lex->buffer[lex->last], 1,
+ sizeof (lex->buffer) - lex->last,
+ lex->finput);
+ lex->last += r;
+ }
+
+ inbytesleft = lex->last - lex->first;
+
+ if (inbytesleft == 0)
+ {
+ /* We've tried to read and there is nothing left. */
+ return UEOF;
+ }
+
+ in_save = inbytesleft;
+ out_count = 2;
+ inp = &lex->buffer[lex->first];
+ outp = out;
+ ir = iconv (lex->handle, (const char **) &inp, &inbytesleft,
+ &outp, &out_count);
+ lex->first += in_save - inbytesleft;
+
+ if (out_count == 0)
+ {
+ /* Success. We assume that UCS-2 is big-endian. This
+ appears to be an ok assumption. */
+ unicode_t result;
+ result = (((unsigned char) out[0]) << 8) | (unsigned char) out[1];
+ return result;
+ }
+
+ if (ir == (size_t) -1)
+ {
+ if (errno == EINVAL)
+ {
+ /* This is ok. This means that the end of our buffer
+ is in the middle of a character sequence. We just
+ move the valid part of the buffer to the beginning
+ to force a read. */
+ /* We use bcopy() because it should work for
+ overlapping strings. Use memmove() instead... */
+ bcopy (&lex->buffer[lex->first], &lex->buffer[0],
+ lex->last - lex->first);
+ lex->last -= lex->first;
+ lex->first = 0;
+ }
+ else
+ {
+ /* A more serious error. */
+ java_lex_error ("unrecognized character in input stream", 0);
+ return UEOF;
+ }
+ }
+ }
+ }
+#else /* HAVE_ICONV */
+ {
+ int c, c1, c2;
+ c = getc (lex->finput);
+
+ if (c < 128)
+ return (unicode_t)c;
+ if (c == EOF)
+ return UEOF;
+ else
+ {
+ if ((c & 0xe0) == 0xc0)
+ {
+ c1 = getc (lex->finput);
+ if ((c1 & 0xc0) == 0x80)
+ return (unicode_t)(((c &0x1f) << 6) + (c1 & 0x3f));
+ c = c1;
+ }
+ else if ((c & 0xf0) == 0xe0)
+ {
+ c1 = getc (lex->finput);
+ if ((c1 & 0xc0) == 0x80)
+ {
+ c2 = getc (lex->finput);
+ if ((c2 & 0xc0) == 0x80)
+ return (unicode_t)(((c & 0xf) << 12) +
+ (( c1 & 0x3f) << 6) + (c2 & 0x3f));
+ else
+ c = c2;
+ }
+ else
+ c = c1;
+ }
+
+ /* We simply don't support invalid characters. */
+ java_lex_error ("malformed UTF-8 character", 0);
+ }
+ }
+#endif /* HAVE_ICONV */
+
+ /* We only get here on error. */
+ return UEOF;
}
static void
@@ -265,56 +391,54 @@ java_store_unicode (l, c, unicode_escape_p)
}
static unicode_t
-java_read_unicode (term_context, unicode_escape_p)
- int term_context;
- int *unicode_escape_p;
+java_read_unicode (lex, term_context, unicode_escape_p)
+ java_lexer *lex;
+ int term_context;
+ int *unicode_escape_p;
{
unicode_t c;
- long i, base;
- c = java_read_char ();
+ c = java_read_char (lex);
*unicode_escape_p = 0;
if (c != '\\')
- return ((term_context ? c :
- java_lineterminator (c) ? '\n' : (unicode_t)c));
-
- /* Count the number of preceeding '\' */
- for (base = ftell (finput), i = base-2; c == '\\';)
- {
- fseek (finput, i--, SEEK_SET);
- c = java_read_char (); /* Will fail if reading utf8 stream. FIXME */
+ {
+ lex->bs_count = 0;
+ return (term_context ? c : (java_lineterminator (c)
+ ? '\n'
+ : (unicode_t) c));
}
- fseek (finput, base, SEEK_SET);
- if ((base-i-3)%2 == 0) /* If odd number of \ seen */
+
+ ++lex->bs_count;
+ if ((lex->bs_count) % 2 == 1)
{
- c = java_read_char ();
+ /* Odd number of \ seen. */
+ c = java_read_char (lex);
if (c == 'u')
{
- unsigned short unicode = 0;
+ unicode_t unicode = 0;
int shift = 12;
/* Next should be 4 hex digits, otherwise it's an error.
The hex value is converted into the unicode, pushed into
the Unicode stream. */
for (shift = 12; shift >= 0; shift -= 4)
{
- if ((c = java_read_char ()) == UEOF)
+ if ((c = java_read_char (lex)) == UEOF)
return UEOF;
if (c >= '0' && c <= '9')
unicode |= (unicode_t)((c-'0') << shift);
else if ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'))
unicode |= (unicode_t)((10+(c | 0x20)-'a') << shift);
else
- java_lex_error
- ("Non hex digit in Unicode escape sequence", 0);
+ java_lex_error ("Non hex digit in Unicode escape sequence", 0);
}
*unicode_escape_p = 1;
- return (term_context ? unicode :
- (java_lineterminator (c) ? '\n' : unicode));
+ return (term_context
+ ? unicode : (java_lineterminator (c) ? '\n' : unicode));
}
- ctxp->unget_utf8_value = c;
+ lex->unget_value = c;
}
- return (unicode_t)'\\';
+ return (unicode_t) '\\';
}
static unicode_t
@@ -329,7 +453,7 @@ java_get_unicode ()
for (;;)
{
int unicode_escape_p;
- c = java_read_unicode (0, &unicode_escape_p);
+ c = java_read_unicode (ctxp->lexer, 0, &unicode_escape_p);
java_store_unicode (ctxp->c_line, c, unicode_escape_p);
if (ctxp->c_line->white_space_only
&& !JAVA_WHITE_SPACE_P (c) && c!='\n')
@@ -352,7 +476,7 @@ java_lineterminator (c)
else if (c == '\r') /* CR */
{
int unicode_escape_p;
- c = java_read_unicode (1, &unicode_escape_p);
+ c = java_read_unicode (ctxp->lexer, 1, &unicode_escape_p);
if (c == '\r')
{
/* In this case we will have another terminator. For some
@@ -361,7 +485,7 @@ java_lineterminator (c)
up in the actual text of the line, causing an error. So
instead we choose a very low-level method. FIXME: this
is incredibly ugly. */
- UNGETC (c);
+ ctxp->lexer->unget_value = c;
}
else if (c != '\n')
{
@@ -937,7 +1061,7 @@ java_lex (java_lval)
char *string;
for (no_error = 1, c = java_get_unicode ();
- c != '"' && c != '\n'; c = java_get_unicode ())
+ c != UEOF && c != '"' && c != '\n'; c = java_get_unicode ())
{
if (c == '\\')
c = java_parse_escape_sequence ();
diff --git a/gcc/java/lex.h b/gcc/java/lex.h
index d4754aba67f..cf29aa16a70 100644
--- a/gcc/java/lex.h
+++ b/gcc/java/lex.h
@@ -35,6 +35,13 @@ extern int lineno;
/* A Unicode character, as read from the input file */
typedef unsigned short unicode_t;
+#ifdef HAVE_ICONV
+#include <iconv.h>
+#endif /* HAVE_ICONV */
+
+/* Default encoding to use if no encoding is specified. */
+#define DEFAULT_ENCODING "UTF-8"
+
/* Debug macro to print-out what we match */
#ifdef JAVA_LEX_DEBUG
#ifdef JAVA_LEX_DEBUG_CHAR
@@ -96,12 +103,38 @@ typedef struct _java_lc {
int col;
} java_lc;
+typedef struct java_lexer
+{
+ /* The file from which we're reading. */
+ FILE *finput;
-#define JAVA_LINE_MAX 80
+ /* Number of consecutive backslashes we've read. */
+ int bs_count;
+
+ /* If nonzero, a value that was pushed back. */
+ unicode_t unget_value;
+
+#ifdef HAVE_ICONV
+ /* The handle for the iconv converter we're using. */
+ iconv_t handle;
-/* Macro to read and unread bytes */
-#define UNGETC(c) ungetc(c, finput)
-#define GETC() getc(finput)
+ /* Bytes we've read from the file but have not sent to iconv. */
+ char buffer[1024];
+
+ /* Index of first valid character in buffer, -1 if no valid
+ characters. */
+ int first;
+
+ /* Index of last valid character in buffer, plus one. -1 if no
+ valid characters in buffer. */
+ int last;
+#endif /* HAVE_ICONV */
+} java_lexer;
+
+/* Destroy a lexer object. */
+extern void java_destroy_lexer PARAMS ((java_lexer *));
+
+#define JAVA_LINE_MAX 80
/* Build a location compound integer */
#define BUILD_LOCATION() ((ctxp->elc.line << 12) | (ctxp->elc.col & 0xfff))
diff --git a/gcc/java/parse.h b/gcc/java/parse.h
index 80712370d8d..b1b0e8e9831 100644
--- a/gcc/java/parse.h
+++ b/gcc/java/parse.h
@@ -728,13 +728,12 @@ typedef struct _jdeplist {
struct parser_ctxt {
const char *filename; /* Current filename */
- FILE *finput; /* Current file input stream */
struct parser_ctxt *next;
+ java_lexer *lexer; /* Current lexer state */
char marker_begining; /* Marker. Should be a sub-struct */
struct java_line *p_line, *c_line; /* Previous and current line */
java_lc elc; /* Error's line column info */
- unicode_t unget_utf8_value; /* An unget utf8 value */
int ccb_indent; /* Keep track of {} indent, lexer */
int first_ccb_indent1; /* First { at ident level 1 */
int last_ccb_indent1; /* Last } at ident level 1 */
@@ -928,7 +927,7 @@ extern void reset_report PARAMS ((void));
/* Always in use, no matter what you compile */
void java_push_parser_context PARAMS ((void));
void java_pop_parser_context PARAMS ((int));
-void java_init_lex PARAMS ((void));
+void java_init_lex PARAMS ((FILE *, const char *));
extern void java_parser_context_save_global PARAMS ((void));
extern void java_parser_context_restore_global PARAMS ((void));
int yyparse PARAMS ((void));
diff --git a/gcc/java/parse.y b/gcc/java/parse.y
index d37a7f1b32b..42f4206948a 100644
--- a/gcc/java/parse.y
+++ b/gcc/java/parse.y
@@ -387,6 +387,9 @@ static tree inst_id = NULL_TREE;
/* The "java.lang.Cloneable" qualified name. */
static tree java_lang_cloneable = NULL_TREE;
+/* The "java.io.Serializable" qualified name. */
+static tree java_io_serializable = NULL_TREE;
+
/* Context and flag for static blocks */
static tree current_static_block = NULL_TREE;
@@ -2615,10 +2618,13 @@ java_pop_parser_context (generate)
next->incomplete_class = ctxp->incomplete_class;
next->gclass_list = ctxp->gclass_list;
lineno = ctxp->lineno;
- finput = ctxp->finput;
current_class = ctxp->current_class;
}
+ /* If the old and new lexers differ, then free the old one. */
+ if (ctxp->lexer && next && ctxp->lexer != next->lexer)
+ java_destroy_lexer (ctxp->lexer);
+
/* Set the single import class file flag to 0 for the current list
of imported things */
for (current = ctxp->import_list; current; current = TREE_CHAIN (current))
@@ -2658,7 +2664,6 @@ java_parser_context_save_global ()
else if (ctxp->saved_data)
create_new_parser_context (1);
- ctxp->finput = finput;
ctxp->lineno = lineno;
ctxp->current_class = current_class;
ctxp->filename = input_filename;
@@ -2672,7 +2677,6 @@ java_parser_context_save_global ()
void
java_parser_context_restore_global ()
{
- finput = ctxp->finput;
lineno = ctxp->lineno;
current_class = ctxp->current_class;
input_filename = ctxp->filename;
@@ -12304,18 +12308,24 @@ valid_ref_assignconv_cast_p (source, dest, cast)
else
return source == dest || interface_of_p (dest, source);
}
- else /* Array */
- return (cast ?
- (DECL_NAME (TYPE_NAME (source)) == java_lang_cloneable) : 0);
+ else
+ {
+ /* Array */
+ return (cast
+ && (DECL_NAME (TYPE_NAME (source)) == java_lang_cloneable
+ || (DECL_NAME (TYPE_NAME (source))
+ == java_io_serializable)));
+ }
}
if (TYPE_ARRAY_P (source))
{
if (TYPE_CLASS_P (dest))
return dest == object_type_node;
/* Can't cast an array to an interface unless the interface is
- java.lang.Cloneable */
+ java.lang.Cloneable or java.io.Serializable. */
if (TYPE_INTERFACE_P (dest))
- return (DECL_NAME (TYPE_NAME (dest)) == java_lang_cloneable ? 1 : 0);
+ return (DECL_NAME (TYPE_NAME (dest)) == java_lang_cloneable
+ || DECL_NAME (TYPE_NAME (dest)) == java_io_serializable);
else /* Arrays */
{
tree source_element_type = TYPE_ARRAY_ELEMENT (source);
diff --git a/gcc/java/typeck.c b/gcc/java/typeck.c
index 990ff066db7..cb0305d1af4 100644
--- a/gcc/java/typeck.c
+++ b/gcc/java/typeck.c
@@ -433,7 +433,7 @@ build_java_array_type (element_type, length)
(unsigned) BIGGEST_FIELD_ALIGNMENT);
#endif
#ifdef ADJUST_FIELD_ALIGN
- desired_align = ADJUST_FIELD_ALIGN (field, desired_align);
+ desired_align = ADJUST_FIELD_ALIGN (fld, desired_align);
#endif
DECL_ALIGN (arfld) = desired_align;
}
diff --git a/gcc/java/verify.c b/gcc/java/verify.c
index 4c2e4c8b1d3..5bc82cfe381 100644
--- a/gcc/java/verify.c
+++ b/gcc/java/verify.c
@@ -131,6 +131,20 @@ merge_types (type1, type2)
tt1 = HANDLE_TO_CLASS_TYPE (TREE_TYPE (type1));
tt2 = HANDLE_TO_CLASS_TYPE (TREE_TYPE (type2));
+ /* If tt{1,2} haven't been properly loaded, now is a good time
+ to do it. */
+ if (!TYPE_SIZE (tt1))
+ {
+ load_class (tt1, 1);
+ safe_layout_class (tt1);
+ }
+
+ if (!TYPE_SIZE (tt2))
+ {
+ load_class (tt2, 1);
+ safe_layout_class (tt2);
+ }
+
if (TYPE_ARRAY_P (tt1) || TYPE_ARRAY_P (tt2))
{
if (TYPE_ARRAY_P (tt1) == TYPE_ARRAY_P (tt2))
@@ -159,6 +173,8 @@ merge_types (type1, type2)
if (CLASS_INTERFACE (TYPE_NAME (tt1)))
{
+ /* FIXME: should see if two interfaces have a common
+ superinterface. */
if (CLASS_INTERFACE (TYPE_NAME (tt2)))
{
/* This is a kludge, but matches what Sun's verifier does.
@@ -171,7 +187,7 @@ merge_types (type1, type2)
if (can_widen_reference_to (tt2, tt1))
return type1;
else
- return TYPE_UNKNOWN;
+ return object_ptr_type_node;
}
}
else if (CLASS_INTERFACE (TYPE_NAME (tt2)))
@@ -179,7 +195,7 @@ merge_types (type1, type2)
if (can_widen_reference_to (tt1, tt2))
return type2;
else
- return TYPE_UNKNOWN;
+ return object_ptr_type_node;
}
type1 = tt1;
diff --git a/gcc/libgcc2.h b/gcc/libgcc2.h
index fdb0f49513f..2fd6bfe4ab7 100644
--- a/gcc/libgcc2.h
+++ b/gcc/libgcc2.h
@@ -90,7 +90,7 @@ typedef unsigned int UHItype __attribute__ ((mode (HI)));
/* These typedefs are usually forbidden on dsp's with UNITS_PER_WORD 1 */
typedef int SItype __attribute__ ((mode (SI)));
typedef unsigned int USItype __attribute__ ((mode (SI)));
-#if MIN_UNITS_PER_WORD > 2
+#if LONG_LONG_TYPE_SIZE > 32
/* These typedefs are usually forbidden on archs with UNITS_PER_WORD 2 */
typedef int DItype __attribute__ ((mode (DI)));
typedef unsigned int UDItype __attribute__ ((mode (DI)));
@@ -163,7 +163,7 @@ typedef int word_type __attribute__ ((mode (__word__)));
#define UDWtype UTItype
#define __NW(a,b) __ ## a ## di ## b
#define __NDW(a,b) __ ## a ## ti ## b
-#elif MIN_UNITS_PER_WORD > 2
+#elif MIN_UNITS_PER_WORD > 2 || LONG_LONG_TYPE_SIZE > 32
#define W_TYPE_SIZE (4 * BITS_PER_UNIT)
#define Wtype SItype
#define UWtype USItype
diff --git a/gcc/loop.c b/gcc/loop.c
index ce3494bd415..a48cbec2645 100644
--- a/gcc/loop.c
+++ b/gcc/loop.c
@@ -78,87 +78,6 @@ static int max_luid;
static int max_loop_num;
-/* Indexed by register number, contains the number of times the reg
- is set during the loop being scanned.
- During code motion, a negative value indicates a reg that has been
- made a candidate; in particular -2 means that it is an candidate that
- we know is equal to a constant and -1 means that it is an candidate
- not known equal to a constant.
- After code motion, regs moved have 0 (which is accurate now)
- while the failed candidates have the original number of times set.
-
- Therefore, at all times, == 0 indicates an invariant register;
- < 0 a conditionally invariant one. */
-
-static varray_type set_in_loop;
-
-/* Original value of set_in_loop; same except that this value
- is not set negative for a reg whose sets have been made candidates
- and not set to 0 for a reg that is moved. */
-
-static varray_type n_times_set;
-
-/* Index by register number, 1 indicates that the register
- cannot be moved or strength reduced. */
-
-static varray_type may_not_optimize;
-
-/* Contains the insn in which a register was used if it was used
- exactly once; contains const0_rtx if it was used more than once. */
-
-static varray_type reg_single_usage;
-
-/* Nonzero means reg N has already been moved out of one loop.
- This reduces the desire to move it out of another. */
-
-static char *moved_once;
-
-/* List of MEMs that are stored in this loop. */
-
-static rtx loop_store_mems;
-
-/* The insn where the first of these was found. */
-static rtx first_loop_store_insn;
-
-typedef struct loop_mem_info {
- rtx mem; /* The MEM itself. */
- rtx reg; /* Corresponding pseudo, if any. */
- int optimize; /* Nonzero if we can optimize access to this MEM. */
-} loop_mem_info;
-
-/* Array of MEMs that are used (read or written) in this loop, but
- cannot be aliased by anything in this loop, except perhaps
- themselves. In other words, if loop_mems[i] is altered during the
- loop, it is altered by an expression that is rtx_equal_p to it. */
-
-static loop_mem_info *loop_mems;
-
-/* The index of the next available slot in LOOP_MEMS. */
-
-static int loop_mems_idx;
-
-/* The number of elements allocated in LOOP_MEMs. */
-
-static int loop_mems_allocated;
-
-/* Nonzero if we don't know what MEMs were changed in the current
- loop. This happens if the loop contains a call (in which case
- `loop_info->has_call' will also be set) or if we store into more
- than NUM_STORES MEMs. */
-
-static int unknown_address_altered;
-
-/* The above doesn't count any readonly memory locations that are stored.
- This does. */
-
-static int unknown_constant_address_altered;
-
-/* Count of movable (i.e. invariant) instructions discovered in the loop. */
-static int num_movables;
-
-/* Count of memory write instructions discovered in the loop. */
-static int num_mem_sets;
-
/* Bound on pseudo register number before loop optimization.
A pseudo has valid regscan info if its number is < max_reg_before_loop. */
unsigned int max_reg_before_loop;
@@ -224,7 +143,17 @@ struct movable
struct movable *next;
};
-static struct movable *the_movables;
+struct movables
+{
+ /* Head of movable chain. */
+ struct movable *head;
+ /* Last movable in chain. */
+ struct movable *last;
+ /* Number of movables in the loop. */
+ int num;
+};
+
+static struct movables the_movables;
FILE *loop_dump_stream;
@@ -238,7 +167,8 @@ static int reg_in_basic_block_p PARAMS ((rtx, rtx));
static int consec_sets_invariant_p PARAMS ((const struct loop *,
rtx, int, rtx));
static int labels_in_range_p PARAMS ((rtx, int));
-static void count_one_set PARAMS ((rtx, rtx, varray_type, rtx *));
+static void count_one_set PARAMS ((struct loop_regs *, rtx, rtx,
+ varray_type, rtx *));
static void count_loop_regs_set PARAMS ((const struct loop*,
varray_type, varray_type,
@@ -252,41 +182,47 @@ static void replace_call_address PARAMS ((rtx, rtx, rtx));
#endif
static rtx skip_consec_insns PARAMS ((rtx, int));
static int libcall_benefit PARAMS ((rtx));
-static void ignore_some_movables PARAMS ((struct movable *));
-static void force_movables PARAMS ((struct movable *));
-static void combine_movables PARAMS ((struct movable *, int));
-static int regs_match_p PARAMS ((rtx, rtx, struct movable *));
-static int rtx_equal_for_loop_p PARAMS ((rtx, rtx, struct movable *));
+static void ignore_some_movables PARAMS ((struct movables *));
+static void force_movables PARAMS ((struct movables *));
+static void combine_movables PARAMS ((struct movables *, struct loop_regs *));
+static int regs_match_p PARAMS ((rtx, rtx, struct movables *));
+static int rtx_equal_for_loop_p PARAMS ((rtx, rtx, struct movables *,
+ struct loop_regs *));
static void add_label_notes PARAMS ((rtx, rtx));
-static void move_movables PARAMS ((struct loop *loop, struct movable *,
- int, int, int));
+static void move_movables PARAMS ((struct loop *loop, struct movables *,
+ int, int));
static int count_nonfixed_reads PARAMS ((const struct loop *, rtx));
static void strength_reduce PARAMS ((struct loop *, int, int));
static void find_single_use_in_loop PARAMS ((rtx, rtx, varray_type));
static int valid_initial_value_p PARAMS ((rtx, rtx, int, rtx));
static void find_mem_givs PARAMS ((const struct loop *, rtx, rtx, int, int));
-static void record_biv PARAMS ((struct induction *, rtx, rtx, rtx, rtx, rtx *,
+static void record_biv PARAMS ((struct loop *, struct induction *,
+ rtx, rtx, rtx, rtx, rtx *,
int, int));
static void check_final_value PARAMS ((const struct loop *,
struct induction *));
static void record_giv PARAMS ((const struct loop *, struct induction *,
- rtx, rtx, rtx, rtx, rtx, int, enum g_types,
- int, int, rtx *));
+ rtx, rtx, rtx, rtx, rtx, rtx, int,
+ enum g_types, int, int, rtx *));
static void update_giv_derive PARAMS ((const struct loop *, rtx));
+static void check_ext_dependant_givs PARAMS ((struct iv_class *,
+ struct loop_info *));
static int basic_induction_var PARAMS ((const struct loop *, rtx,
enum machine_mode, rtx, rtx,
rtx *, rtx *, rtx **));
-static rtx simplify_giv_expr PARAMS ((const struct loop *, rtx, int *));
+static rtx simplify_giv_expr PARAMS ((const struct loop *, rtx, rtx *, int *));
static int general_induction_var PARAMS ((const struct loop *loop, rtx, rtx *,
- rtx *, rtx *, int, int *, enum machine_mode));
+ rtx *, rtx *, rtx *, int, int *,
+ enum machine_mode));
static int consec_sets_giv PARAMS ((const struct loop *, int, rtx,
- rtx, rtx, rtx *, rtx *, rtx *));
+ rtx, rtx, rtx *, rtx *, rtx *, rtx *));
static int check_dbra_loop PARAMS ((struct loop *, int));
static rtx express_from_1 PARAMS ((rtx, rtx, rtx));
static rtx combine_givs_p PARAMS ((struct induction *, struct induction *));
-static void combine_givs PARAMS ((struct iv_class *));
+static void combine_givs PARAMS ((struct loop_regs *, struct iv_class *));
struct recombine_givs_stats;
-static int find_life_end PARAMS ((rtx, struct recombine_givs_stats *,
+static int find_life_end PARAMS ((const struct loop *, rtx,
+ struct recombine_givs_stats *,
rtx, rtx));
static void recombine_givs PARAMS ((const struct loop *, struct iv_class *,
int));
@@ -304,7 +240,9 @@ static void load_mems_and_recount_loop_regs_set PARAMS ((const struct loop*,
static void load_mems PARAMS ((const struct loop *));
static int insert_loop_mem PARAMS ((rtx *, void *));
static int replace_loop_mem PARAMS ((rtx *, void *));
+static void replace_loop_mems PARAMS ((rtx, rtx, rtx));
static int replace_loop_reg PARAMS ((rtx *, void *));
+static void replace_loop_regs PARAMS ((rtx insn, rtx, rtx));
static void note_reg_stored PARAMS ((rtx, rtx, void *));
static void try_copy_prop PARAMS ((const struct loop *, rtx, unsigned int));
static void try_swap_copy_prop PARAMS ((const struct loop *, rtx,
@@ -317,16 +255,19 @@ static int iv_add_mult_cost PARAMS ((rtx, rtx, rtx, rtx));
static void loop_dump_aux PARAMS ((const struct loop *, FILE *, int));
void debug_loop PARAMS ((const struct loop *));
-typedef struct rtx_and_int {
- rtx r;
- int i;
-} rtx_and_int;
-
-typedef struct rtx_pair {
+typedef struct rtx_pair
+{
rtx r1;
rtx r2;
} rtx_pair;
+typedef struct loop_replace_args
+{
+ rtx match;
+ rtx replacement;
+ rtx insn;
+} loop_replace_args;
+
/* Nonzero iff INSN is between START and END, inclusive. */
#define INSN_IN_RANGE_P(INSN, START, END) \
(INSN_UID (INSN) < max_uid_for_loop \
@@ -340,7 +281,8 @@ static int indirect_jump_in_function_p PARAMS ((rtx));
static int compute_luids PARAMS ((rtx, rtx, int));
static int biv_elimination_giv_has_0_offset PARAMS ((struct induction *,
- struct induction *, rtx));
+ struct induction *,
+ rtx));
/* Benefit penalty, if a giv is not replaceable, i.e. must emit an insn to
copy the value of the strength reduced giv to its original register. */
@@ -357,7 +299,7 @@ init_loop ()
reg_address_cost = address_cost (reg, SImode);
- copy_cost = 2;
+ copy_cost = COSTS_N_INSNS (1);
/* Free the objects we just allocated. */
obfree (free_point);
@@ -412,6 +354,7 @@ loop_optimize (f, dumpfile, flags)
struct loops loops_data;
struct loops *loops = &loops_data;
struct loop_info *loops_info;
+ static char *moved_once;
loop_dump_stream = dumpfile;
@@ -509,6 +452,9 @@ loop_optimize (f, dumpfile, flags)
for (i = max_loop_num - 1; i >= 0; i--)
{
struct loop *loop = &loops->array[i];
+ struct loop_regs *regs = LOOP_REGS (loop);
+
+ regs->moved_once = moved_once;
if (! loop->invalid && loop->end)
scan_loop (loop, flags);
@@ -574,13 +520,11 @@ scan_loop (loop, flags)
struct loop *loop;
int flags;
{
+ struct loop_info *loop_info = LOOP_INFO (loop);
+ struct loop_regs *regs = LOOP_REGS (loop);
register int i;
rtx loop_start = loop->start;
rtx loop_end = loop->end;
- /* Additional information about the current loop being processed
- that is used to compute the number of loop iterations for loop
- unrolling and doloop optimization. */
- struct loop_info *loop_info = LOOP_INFO (loop);
rtx p;
/* 1 if we are scanning insns that could be executed zero times. */
int maybe_never = 0;
@@ -596,9 +540,7 @@ scan_loop (loop, flags)
/* The SET from an insn, if it is the only SET in the insn. */
rtx set, set1;
/* Chain describing insns movable in current loop. */
- struct movable *movables = 0;
- /* Last element in `movables' -- so we can add elements at the end. */
- struct movable *last_movable = 0;
+ struct movables *movables = &the_movables;
/* Ratio of extra register life span we can justify
for saving an instruction. More if loop doesn't call subroutines
since in that case saving an insn makes more difference
@@ -610,6 +552,10 @@ scan_loop (loop, flags)
loop->top = 0;
+ movables->head = 0;
+ movables->last = 0;
+ movables->num = 0;
+
/* Determine whether this loop starts with a jump down to a test at
the end. This will occur for a small number of loops with a test
that is too complex to duplicate in front of the loop.
@@ -683,28 +629,31 @@ scan_loop (loop, flags)
return;
}
- /* Count number of times each reg is set during this loop.
- Set VARRAY_CHAR (may_not_optimize, I) if it is not safe to move out
- the setting of register I. Set VARRAY_RTX (reg_single_usage, I). */
+ /* Count number of times each reg is set during this loop. Set
+ VARRAY_CHAR (regs->may_not_optimize, I) if it is not safe to move
+ out the setting of register I. Set VARRAY_RTX
+ (regs->single_usage, I). */
/* Allocate extra space for REGS that might be created by
load_mems. We allocate a little extra slop as well, in the hopes
that even after the moving of movables creates some new registers
we won't have to reallocate these arrays. However, we do grow
the arrays, if necessary, in load_mems_recount_loop_regs_set. */
- nregs = max_reg_num () + loop_mems_idx + 16;
- VARRAY_INT_INIT (set_in_loop, nregs, "set_in_loop");
- VARRAY_INT_INIT (n_times_set, nregs, "n_times_set");
- VARRAY_CHAR_INIT (may_not_optimize, nregs, "may_not_optimize");
- VARRAY_RTX_INIT (reg_single_usage, nregs, "reg_single_usage");
+ nregs = max_reg_num () + loop_info->mems_idx + 16;
+ VARRAY_INT_INIT (regs->set_in_loop, nregs, "set_in_loop");
+ VARRAY_INT_INIT (regs->n_times_set, nregs, "n_times_set");
+ VARRAY_CHAR_INIT (regs->may_not_optimize, nregs, "may_not_optimize");
+ VARRAY_RTX_INIT (regs->single_usage, nregs, "single_usage");
+
+ regs->num = nregs;
- count_loop_regs_set (loop, may_not_optimize, reg_single_usage,
+ count_loop_regs_set (loop, regs->may_not_optimize, regs->single_usage,
&insn_count, nregs);
for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
{
- VARRAY_CHAR (may_not_optimize, i) = 1;
- VARRAY_INT (set_in_loop, i) = 1;
+ VARRAY_CHAR (regs->may_not_optimize, i) = 1;
+ VARRAY_INT (regs->set_in_loop, i) = 1;
}
#ifdef AVOID_CCMODE_COPIES
@@ -712,11 +661,11 @@ scan_loop (loop, flags)
create CCmode register copies. */
for (i = max_reg_num () - 1; i >= FIRST_PSEUDO_REGISTER; i--)
if (GET_MODE_CLASS (GET_MODE (regno_reg_rtx[i])) == MODE_CC)
- VARRAY_CHAR (may_not_optimize, i) = 1;
+ VARRAY_CHAR (regs->may_not_optimize, i) = 1;
#endif
- bcopy ((char *) &set_in_loop->data,
- (char *) &n_times_set->data, nregs * sizeof (int));
+ bcopy ((char *) &regs->set_in_loop->data,
+ (char *) &regs->n_times_set->data, nregs * sizeof (int));
if (loop_dump_stream)
{
@@ -728,7 +677,7 @@ scan_loop (loop, flags)
}
/* Scan through the loop finding insns that are safe to move.
- Set set_in_loop negative for the reg being set, so that
+ Set regs->set_in_loop negative for the reg being set, so that
this reg will be considered invariant for subsequent insns.
We consider whether subsequent insns use the reg
in deciding whether it is worth actually moving.
@@ -747,7 +696,7 @@ scan_loop (loop, flags)
if (GET_CODE (p) == INSN
&& (set = single_set (p))
&& GET_CODE (SET_DEST (set)) == REG
- && ! VARRAY_CHAR (may_not_optimize, REGNO (SET_DEST (set))))
+ && ! VARRAY_CHAR (regs->may_not_optimize, REGNO (SET_DEST (set))))
{
int tem1 = 0;
int tem2 = 0;
@@ -811,12 +760,13 @@ scan_loop (loop, flags)
else if ((tem = loop_invariant_p (loop, src))
&& (dependencies == 0
|| (tem2 = loop_invariant_p (loop, dependencies)) != 0)
- && (VARRAY_INT (set_in_loop,
+ && (VARRAY_INT (regs->set_in_loop,
REGNO (SET_DEST (set))) == 1
|| (tem1
= consec_sets_invariant_p
(loop, SET_DEST (set),
- VARRAY_INT (set_in_loop, REGNO (SET_DEST (set))),
+ VARRAY_INT (regs->set_in_loop,
+ REGNO (SET_DEST (set))),
p)))
/* If the insn can cause a trap (such as divide by zero),
can't move it unless it's guaranteed to be executed
@@ -844,12 +794,12 @@ scan_loop (loop, flags)
SMALL_REGISTER_CLASSES and SET_SRC is a hard register. */
if (loop_info->has_call
- && VARRAY_RTX (reg_single_usage, regno) != 0
- && VARRAY_RTX (reg_single_usage, regno) != const0_rtx
+ && VARRAY_RTX (regs->single_usage, regno) != 0
+ && VARRAY_RTX (regs->single_usage, regno) != const0_rtx
&& REGNO_FIRST_UID (regno) == INSN_UID (p)
&& (REGNO_LAST_UID (regno)
- == INSN_UID (VARRAY_RTX (reg_single_usage, regno)))
- && VARRAY_INT (set_in_loop, regno) == 1
+ == INSN_UID (VARRAY_RTX (regs->single_usage, regno)))
+ && VARRAY_INT (regs->set_in_loop, regno) == 1
&& ! side_effects_p (SET_SRC (set))
&& ! find_reg_note (p, REG_RETVAL, NULL_RTX)
&& (! SMALL_REGISTER_CLASSES
@@ -860,24 +810,25 @@ scan_loop (loop, flags)
might span a call. */
&& ! modified_between_p (SET_SRC (set), p,
VARRAY_RTX
- (reg_single_usage, regno))
- && no_labels_between_p (p, VARRAY_RTX (reg_single_usage, regno))
+ (regs->single_usage, regno))
+ && no_labels_between_p (p, VARRAY_RTX (regs->single_usage,
+ regno))
&& validate_replace_rtx (SET_DEST (set), SET_SRC (set),
VARRAY_RTX
- (reg_single_usage, regno)))
+ (regs->single_usage, regno)))
{
/* Replace any usage in a REG_EQUAL note. Must copy the
new source, so that we don't get rtx sharing between the
SET_SOURCE and REG_NOTES of insn p. */
- REG_NOTES (VARRAY_RTX (reg_single_usage, regno))
+ REG_NOTES (VARRAY_RTX (regs->single_usage, regno))
= replace_rtx (REG_NOTES (VARRAY_RTX
- (reg_single_usage, regno)),
+ (regs->single_usage, regno)),
SET_DEST (set), copy_rtx (SET_SRC (set)));
PUT_CODE (p, NOTE);
NOTE_LINE_NUMBER (p) = NOTE_INSN_DELETED;
NOTE_SOURCE_FILE (p) = 0;
- VARRAY_INT (set_in_loop, regno) = 0;
+ VARRAY_INT (regs->set_in_loop, regno) = 0;
continue;
}
@@ -888,7 +839,7 @@ scan_loop (loop, flags)
m->dependencies = dependencies;
m->set_dest = SET_DEST (set);
m->force = 0;
- m->consec = VARRAY_INT (set_in_loop,
+ m->consec = VARRAY_INT (regs->set_in_loop,
REGNO (SET_DEST (set))) - 1;
m->done = 0;
m->forces = 0;
@@ -908,16 +859,16 @@ scan_loop (loop, flags)
m->match = 0;
m->lifetime = (uid_luid[REGNO_LAST_UID (regno)]
- uid_luid[REGNO_FIRST_UID (regno)]);
- m->savings = VARRAY_INT (n_times_set, regno);
+ m->savings = VARRAY_INT (regs->n_times_set, regno);
if (find_reg_note (p, REG_RETVAL, NULL_RTX))
m->savings += libcall_benefit (p);
- VARRAY_INT (set_in_loop, regno) = move_insn ? -2 : -1;
+ VARRAY_INT (regs->set_in_loop, regno) = move_insn ? -2 : -1;
/* Add M to the end of the chain MOVABLES. */
- if (movables == 0)
- movables = m;
+ if (movables->head == 0)
+ movables->head = m;
else
- last_movable->next = m;
- last_movable = m;
+ movables->last->next = m;
+ movables->last = m;
if (m->consec > 0)
{
@@ -970,7 +921,7 @@ scan_loop (loop, flags)
&& !reg_mentioned_p (SET_DEST (set), SET_SRC (set1)))
{
register int regno = REGNO (SET_DEST (set));
- if (VARRAY_INT (set_in_loop, regno) == 2)
+ if (VARRAY_INT (regs->set_in_loop, regno) == 2)
{
register struct movable *m;
m = (struct movable *) alloca (sizeof (struct movable));
@@ -1020,13 +971,13 @@ scan_loop (loop, flags)
m->lifetime = (uid_luid[REGNO_LAST_UID (regno)]
- uid_luid[REGNO_FIRST_UID (regno)]);
m->savings = 1;
- VARRAY_INT (set_in_loop, regno) = -1;
+ VARRAY_INT (regs->set_in_loop, regno) = -1;
/* Add M to the end of the chain MOVABLES. */
- if (movables == 0)
- movables = m;
+ if (movables->head == 0)
+ movables->head = m;
else
- last_movable->next = m;
- last_movable = m;
+ movables->last->next = m;
+ movables->last = m;
}
}
}
@@ -1081,22 +1032,23 @@ scan_loop (loop, flags)
through the `match' field, and add the priorities of them
all together as the priority of the first. */
- combine_movables (movables, nregs);
+ combine_movables (movables, regs);
/* Now consider each movable insn to decide whether it is worth moving.
- Store 0 in set_in_loop for each reg that is moved.
+ Store 0 in regs->set_in_loop for each reg that is moved.
Generally this increases code size, so do not move moveables when
optimizing for code size. */
if (! optimize_size)
- move_movables (loop, movables, threshold, insn_count, nregs);
+ move_movables (loop, movables, threshold, insn_count);
/* Now candidates that still are negative are those not moved.
- Change set_in_loop to indicate that those are not actually invariant. */
+ Change regs->set_in_loop to indicate that those are not actually
+ invariant. */
for (i = 0; i < nregs; i++)
- if (VARRAY_INT (set_in_loop, i) < 0)
- VARRAY_INT (set_in_loop, i) = VARRAY_INT (n_times_set, i);
+ if (VARRAY_INT (regs->set_in_loop, i) < 0)
+ VARRAY_INT (regs->set_in_loop, i) = VARRAY_INT (regs->n_times_set, i);
/* Now that we've moved some things out of the loop, we might be able to
hoist even more memory references. */
@@ -1118,7 +1070,6 @@ scan_loop (loop, flags)
/* Ensure our label doesn't go away. */
LABEL_NUSES (update_end)++;
- the_movables = movables;
strength_reduce (loop, insn_count, flags);
reg_scan_update (update_start, update_end, loop_max_reg);
@@ -1129,10 +1080,10 @@ scan_loop (loop, flags)
delete_insn (update_end);
}
- VARRAY_FREE (reg_single_usage);
- VARRAY_FREE (set_in_loop);
- VARRAY_FREE (n_times_set);
- VARRAY_FREE (may_not_optimize);
+ VARRAY_FREE (regs->single_usage);
+ VARRAY_FREE (regs->set_in_loop);
+ VARRAY_FREE (regs->n_times_set);
+ VARRAY_FREE (regs->may_not_optimize);
}
/* Add elements to *OUTPUT to record all the pseudo-regs
@@ -1328,11 +1279,11 @@ skip_consec_insns (insn, count)
static void
ignore_some_movables (movables)
- struct movable *movables;
+ struct movables *movables;
{
register struct movable *m, *m1;
- for (m = movables; m; m = m->next)
+ for (m = movables->head; m; m = m->next)
{
/* Is this a movable for the value of a libcall? */
rtx note = find_reg_note (m->insn, REG_RETVAL, NULL_RTX);
@@ -1346,7 +1297,7 @@ ignore_some_movables (movables)
explicitly check each insn in the libcall (since invariant
libcalls aren't that common). */
for (insn = XEXP (note, 0); insn != m->insn; insn = NEXT_INSN (insn))
- for (m1 = movables; m1 != m; m1 = m1->next)
+ for (m1 = movables->head; m1 != m; m1 = m1->next)
if (m1->insn == insn)
m1->done = 1;
}
@@ -1360,10 +1311,10 @@ ignore_some_movables (movables)
static void
force_movables (movables)
- struct movable *movables;
+ struct movables *movables;
{
register struct movable *m, *m1;
- for (m1 = movables; m1; m1 = m1->next)
+ for (m1 = movables->head; m1; m1 = m1->next)
/* Omit this if moving just the (SET (REG) 0) of a zero-extend. */
if (!m1->partial && !m1->done)
{
@@ -1398,32 +1349,33 @@ force_movables (movables)
one register. */
static void
-combine_movables (movables, nregs)
- struct movable *movables;
- int nregs;
+combine_movables (movables, regs)
+ struct movables *movables;
+ struct loop_regs *regs;
{
register struct movable *m;
- char *matched_regs = (char *) xmalloc (nregs);
+ char *matched_regs = (char *) xmalloc (regs->num);
enum machine_mode mode;
/* Regs that are set more than once are not allowed to match
or be matched. I'm no longer sure why not. */
/* Perhaps testing m->consec_sets would be more appropriate here? */
- for (m = movables; m; m = m->next)
- if (m->match == 0 && VARRAY_INT (n_times_set, m->regno) == 1
+ for (m = movables->head; m; m = m->next)
+ if (m->match == 0 && VARRAY_INT (regs->n_times_set, m->regno) == 1
&& !m->partial)
{
register struct movable *m1;
int regno = m->regno;
- bzero (matched_regs, nregs);
+ bzero (matched_regs, regs->num);
matched_regs[regno] = 1;
/* We want later insns to match the first one. Don't make the first
one match any later ones. So start this loop at m->next. */
for (m1 = m->next; m1; m1 = m1->next)
- if (m != m1 && m1->match == 0 && VARRAY_INT (n_times_set, m1->regno) == 1
+ if (m != m1 && m1->match == 0 && VARRAY_INT (regs->n_times_set,
+ m1->regno) == 1
/* A reg used outside the loop mustn't be eliminated. */
&& !m1->global
/* A reg used for zero-extending mustn't be eliminated. */
@@ -1447,7 +1399,7 @@ combine_movables (movables, nregs)
&& ((GET_CODE (m1->set_src) == REG
&& matched_regs[REGNO (m1->set_src)])
|| rtx_equal_for_loop_p (m->set_src, m1->set_src,
- movables))))
+ movables, regs))))
&& ((m->dependencies == m1->dependencies)
|| rtx_equal_p (m->dependencies, m1->dependencies)))
{
@@ -1470,7 +1422,7 @@ combine_movables (movables, nregs)
/* Combine all the registers for extension from mode MODE.
Don't combine any that are used outside this loop. */
- for (m = movables; m; m = m->next)
+ for (m = movables->head; m; m = m->next)
if (m->partial && ! m->global
&& mode == GET_MODE (SET_SRC (PATTERN (NEXT_INSN (m->insn)))))
{
@@ -1492,7 +1444,7 @@ combine_movables (movables, nregs)
/* We already have one: check for overlap with those
already combined together. */
- for (m1 = movables; m1 != m; m1 = m1->next)
+ for (m1 = movables->head; m1 != m; m1 = m1->next)
if (m1 == m0 || (m1->partial && m1->match == m0))
if (! (uid_luid[REGNO_FIRST_UID (m1->regno)] > last
|| uid_luid[REGNO_LAST_UID (m1->regno)] < first))
@@ -1518,17 +1470,17 @@ combine_movables (movables, nregs)
static int
regs_match_p (x, y, movables)
rtx x, y;
- struct movable *movables;
+ struct movables *movables;
{
unsigned int xn = REGNO (x);
unsigned int yn = REGNO (y);
struct movable *mx, *my;
- for (mx = movables; mx; mx = mx->next)
+ for (mx = movables->head; mx; mx = mx->next)
if (mx->regno == xn)
break;
- for (my = movables; my; my = my->next)
+ for (my = movables->head; my; my = my->next)
if (my->regno == yn)
break;
@@ -1545,9 +1497,10 @@ regs_match_p (x, y, movables)
equivalent constant, consider them equal. */
static int
-rtx_equal_for_loop_p (x, y, movables)
+rtx_equal_for_loop_p (x, y, movables, regs)
rtx x, y;
- struct movable *movables;
+ struct movables *movables;
+ struct loop_regs *regs;
{
register int i;
register int j;
@@ -1564,18 +1517,19 @@ rtx_equal_for_loop_p (x, y, movables)
/* If we have a register and a constant, they may sometimes be
equal. */
- if (GET_CODE (x) == REG && VARRAY_INT (set_in_loop, REGNO (x)) == -2
+ if (GET_CODE (x) == REG && VARRAY_INT (regs->set_in_loop, REGNO (x)) == -2
&& CONSTANT_P (y))
{
- for (m = movables; m; m = m->next)
+ for (m = movables->head; m; m = m->next)
if (m->move_insn && m->regno == REGNO (x)
&& rtx_equal_p (m->set_src, y))
return 1;
}
- else if (GET_CODE (y) == REG && VARRAY_INT (set_in_loop, REGNO (y)) == -2
+ else if (GET_CODE (y) == REG && VARRAY_INT (regs->set_in_loop,
+ REGNO (y)) == -2
&& CONSTANT_P (x))
{
- for (m = movables; m; m = m->next)
+ for (m = movables->head; m; m = m->next)
if (m->move_insn && m->regno == REGNO (y)
&& rtx_equal_p (m->set_src, x))
return 1;
@@ -1625,12 +1579,14 @@ rtx_equal_for_loop_p (x, y, movables)
/* And the corresponding elements must match. */
for (j = 0; j < XVECLEN (x, i); j++)
- if (rtx_equal_for_loop_p (XVECEXP (x, i, j), XVECEXP (y, i, j), movables) == 0)
+ if (rtx_equal_for_loop_p (XVECEXP (x, i, j), XVECEXP (y, i, j),
+ movables, regs) == 0)
return 0;
break;
case 'e':
- if (rtx_equal_for_loop_p (XEXP (x, i), XEXP (y, i), movables) == 0)
+ if (rtx_equal_for_loop_p (XEXP (x, i), XEXP (y, i), movables, regs)
+ == 0)
return 0;
break;
@@ -1698,13 +1654,14 @@ add_label_notes (x, insns)
other throughout. */
static void
-move_movables (loop, movables, threshold, insn_count, nregs)
+move_movables (loop, movables, threshold, insn_count)
struct loop *loop;
- struct movable *movables;
+ struct movables *movables;
int threshold;
int insn_count;
- int nregs;
{
+ struct loop_regs *regs = LOOP_REGS (loop);
+ int nregs = regs->num;
rtx new_start = 0;
register struct movable *m;
register rtx p;
@@ -1716,9 +1673,9 @@ move_movables (loop, movables, threshold, insn_count, nregs)
rtx *reg_map = (rtx *) xcalloc (nregs, sizeof (rtx));
char *already_moved = (char *) xcalloc (nregs, sizeof (char));
- num_movables = 0;
+ movables->num = 0;
- for (m = movables; m; m = m->next)
+ for (m = movables->head; m; m = m->next)
{
/* Describe this movable insn. */
@@ -1747,7 +1704,7 @@ move_movables (loop, movables, threshold, insn_count, nregs)
}
/* Count movables. Value used in heuristics in strength_reduce. */
- num_movables++;
+ movables->num++;
/* Ignore the insn if it's already done (it matched something else).
Otherwise, see if it is now safe to move. */
@@ -1776,7 +1733,7 @@ move_movables (loop, movables, threshold, insn_count, nregs)
if (loop_dump_stream)
fprintf (loop_dump_stream, "savings %d ", savings);
- if (moved_once[regno] && loop_dump_stream)
+ if (regs->moved_once[regno] && loop_dump_stream)
fprintf (loop_dump_stream, "halved since already moved ");
/* An insn MUST be moved if we already moved something else
@@ -1795,9 +1752,9 @@ move_movables (loop, movables, threshold, insn_count, nregs)
if (already_moved[regno]
|| flag_move_all_movables
|| (threshold * savings * m->lifetime) >=
- (moved_once[regno] ? insn_count * 2 : insn_count)
+ (regs->moved_once[regno] ? insn_count * 2 : insn_count)
|| (m->forces && m->forces->done
- && VARRAY_INT (n_times_set, m->forces->regno) == 1))
+ && VARRAY_INT (regs->n_times_set, m->forces->regno) == 1))
{
int count;
register struct movable *m1;
@@ -2103,11 +2060,11 @@ move_movables (loop, movables, threshold, insn_count, nregs)
already_moved[regno] = 1;
/* This reg has been moved out of one loop. */
- moved_once[regno] = 1;
+ regs->moved_once[regno] = 1;
/* The reg set here is now invariant. */
if (! m->partial)
- VARRAY_INT (set_in_loop, regno) = 0;
+ VARRAY_INT (regs->set_in_loop, regno) = 0;
m->done = 1;
@@ -2126,7 +2083,7 @@ move_movables (loop, movables, threshold, insn_count, nregs)
/* Combine with this moved insn any other matching movables. */
if (! m->partial)
- for (m1 = movables; m1; m1 = m1->next)
+ for (m1 = movables->head; m1; m1 = m1->next)
if (m1->match == m)
{
rtx temp;
@@ -2171,7 +2128,7 @@ move_movables (loop, movables, threshold, insn_count, nregs)
/* The reg merged here is now invariant,
if the reg it matches is invariant. */
if (! m->partial)
- VARRAY_INT (set_in_loop, m1->regno) = 0;
+ VARRAY_INT (regs->set_in_loop, m1->regno) = 0;
}
}
else if (loop_dump_stream)
@@ -2321,10 +2278,10 @@ count_nonfixed_reads (loop, x)
}
/* Scan a loop setting the elements `cont', `vtop', `loops_enclosed',
- `has_call', `has_volatile', and `has_tablejump' within LOOP.
- Set the global variables `unknown_address_altered',
- `unknown_constant_address_altered', and `num_mem_sets'. Also, fill
- in the array `loop_mems' and the list `loop_store_mems'. */
+ `has_call', `has_volatile', `has_tablejump',
+ `unknown_address_altered', `unknown_constant_address_altered', and
+ `num_mem_sets' in LOOP. Also, fill in the array `mems' and the
+ list `store_mems' in LOOP. */
static void
prescan_loop (loop)
@@ -2348,12 +2305,12 @@ prescan_loop (loop)
loop_info->has_multiple_exit_targets = 0;
loop->level = 1;
- unknown_address_altered = 0;
- unknown_constant_address_altered = 0;
- loop_store_mems = NULL_RTX;
- first_loop_store_insn = NULL_RTX;
- loop_mems_idx = 0;
- num_mem_sets = 0;
+ loop_info->unknown_address_altered = 0;
+ loop_info->unknown_constant_address_altered = 0;
+ loop_info->store_mems = NULL_RTX;
+ loop_info->first_loop_store_insn = NULL_RTX;
+ loop_info->mems_idx = 0;
+ loop_info->num_mem_sets = 0;
for (insn = NEXT_INSN (start); insn != NEXT_INSN (end);
insn = NEXT_INSN (insn))
@@ -2374,7 +2331,7 @@ prescan_loop (loop)
else if (GET_CODE (insn) == CALL_INSN)
{
if (! CONST_CALL_P (insn))
- unknown_address_altered = 1;
+ loop_info->unknown_address_altered = 1;
loop_info->has_call = 1;
}
else if (GET_CODE (insn) == INSN || GET_CODE (insn) == JUMP_INSN)
@@ -2390,9 +2347,9 @@ prescan_loop (loop)
|| GET_CODE (PATTERN (insn)) == ADDR_VEC))
loop_info->has_tablejump = 1;
- note_stores (PATTERN (insn), note_addr_stored, NULL);
- if (! first_loop_store_insn && loop_store_mems)
- first_loop_store_insn = insn;
+ note_stores (PATTERN (insn), note_addr_stored, loop_info);
+ if (! loop_info->first_loop_store_insn && loop_info->store_mems)
+ loop_info->first_loop_store_insn = insn;
if (! loop_info->has_multiple_exit_targets
&& GET_CODE (insn) == JUMP_INSN
@@ -2452,23 +2409,25 @@ prescan_loop (loop)
&& ! loop_info->has_multiple_exit_targets)
for (insn = NEXT_INSN (start); insn != NEXT_INSN (end);
insn = NEXT_INSN (insn))
- for_each_rtx (&insn, insert_loop_mem, 0);
+ for_each_rtx (&insn, insert_loop_mem, loop_info);
/* BLKmode MEMs are added to LOOP_STORE_MEM as necessary so
that loop_invariant_p and load_mems can use true_dependence
to determine what is really clobbered. */
- if (unknown_address_altered)
+ if (loop_info->unknown_address_altered)
{
rtx mem = gen_rtx_MEM (BLKmode, const0_rtx);
- loop_store_mems = gen_rtx_EXPR_LIST (VOIDmode, mem, loop_store_mems);
+ loop_info->store_mems
+ = gen_rtx_EXPR_LIST (VOIDmode, mem, loop_info->store_mems);
}
- if (unknown_constant_address_altered)
+ if (loop_info->unknown_constant_address_altered)
{
rtx mem = gen_rtx_MEM (BLKmode, const0_rtx);
RTX_UNCHANGING_P (mem) = 1;
- loop_store_mems = gen_rtx_EXPR_LIST (VOIDmode, mem, loop_store_mems);
+ loop_info->store_mems
+ = gen_rtx_EXPR_LIST (VOIDmode, mem, loop_info->store_mems);
}
}
@@ -2627,8 +2586,7 @@ find_and_verify_loops (f, loops)
cont. */
if ((INSN_LUID (label)
< INSN_LUID (loop->cont))
- && (INSN_LUID (label)
- > INSN_LUID (loop->start))
+ && (INSN_LUID (label) > INSN_LUID (loop->start))
/* And if there is no later destination already
recorded. */
&& (! loop->cont_dominator
@@ -2852,9 +2810,9 @@ find_and_verify_loops (f, loops)
off LABEL_OUTSIDE_LOOP_P bit. */
if (JUMP_LABEL (insn))
{
- for (q = 0,
- r = this_loop->exit_labels;
- r; q = r, r = LABEL_NEXTREF (r))
+ for (q = 0, r = this_loop->exit_labels;
+ r;
+ q = r, r = LABEL_NEXTREF (r))
if (XEXP (r, 0) == JUMP_LABEL (insn))
{
LABEL_OUTSIDE_LOOP_P (r) = 0;
@@ -3082,32 +3040,34 @@ note_addr_stored (x, y, data)
rtx y ATTRIBUTE_UNUSED;
void *data ATTRIBUTE_UNUSED;
{
+ struct loop_info *loop_info = data;
+
if (x == 0 || GET_CODE (x) != MEM)
return;
/* Count number of memory writes.
This affects heuristics in strength_reduce. */
- num_mem_sets++;
+ loop_info->num_mem_sets++;
/* BLKmode MEM means all memory is clobbered. */
- if (GET_MODE (x) == BLKmode)
+ if (GET_MODE (x) == BLKmode)
{
if (RTX_UNCHANGING_P (x))
- unknown_constant_address_altered = 1;
+ loop_info->unknown_constant_address_altered = 1;
else
- unknown_address_altered = 1;
+ loop_info->unknown_address_altered = 1;
return;
}
- loop_store_mems = gen_rtx_EXPR_LIST (VOIDmode, x, loop_store_mems);
+ loop_info->store_mems = gen_rtx_EXPR_LIST (VOIDmode, x,
+ loop_info->store_mems);
}
/* X is a value modified by an INSN that references a biv inside a loop
exit test (ie, X is somehow related to the value of the biv). If X
is a pseudo that is used more than once, then the biv is (effectively)
- used more than once. DATA is really an `int *', and is set if the
- biv is used more than once. */
+ used more than once. DATA is a pointer to a loop_regs structure. */
static void
note_set_pseudo_multiple_uses (x, y, data)
@@ -3115,6 +3075,8 @@ note_set_pseudo_multiple_uses (x, y, data)
rtx y ATTRIBUTE_UNUSED;
void *data;
{
+ struct loop_regs *regs = (struct loop_regs *) data;
+
if (x == 0)
return;
@@ -3130,9 +3092,9 @@ note_set_pseudo_multiple_uses (x, y, data)
/* If we do not have usage information, or if we know the register
is used more than once, note that fact for check_dbra_loop. */
if (REGNO (x) >= max_reg_before_loop
- || ! VARRAY_RTX (reg_single_usage, REGNO (x))
- || VARRAY_RTX (reg_single_usage, REGNO (x)) == const0_rtx)
- *((int *) data) = 1;
+ || ! VARRAY_RTX (regs->single_usage, REGNO (x))
+ || VARRAY_RTX (regs->single_usage, REGNO (x)) == const0_rtx)
+ regs->multiple_uses = 1;
}
/* Return nonzero if the rtx X is invariant over the current loop.
@@ -3140,13 +3102,15 @@ note_set_pseudo_multiple_uses (x, y, data)
The value is 2 if we refer to something only conditionally invariant.
A memory ref is invariant if it is not volatile and does not conflict
- with anything stored in `loop_store_mems'. */
+ with anything stored in `loop_info->store_mems'. */
int
loop_invariant_p (loop, x)
const struct loop *loop;
register rtx x;
{
+ struct loop_info *loop_info = LOOP_INFO (loop);
+ struct loop_regs *regs = LOOP_REGS (loop);
register int i;
register enum rtx_code code;
register const char *fmt;
@@ -3197,10 +3161,10 @@ loop_invariant_p (loop, x)
&& REGNO (x) < FIRST_PSEUDO_REGISTER && call_used_regs[REGNO (x)])
return 0;
- if (VARRAY_INT (set_in_loop, REGNO (x)) < 0)
+ if (VARRAY_INT (regs->set_in_loop, REGNO (x)) < 0)
return 2;
- return VARRAY_INT (set_in_loop, REGNO (x)) == 0;
+ return VARRAY_INT (regs->set_in_loop, REGNO (x)) == 0;
case MEM:
/* Volatile memory references must be rejected. Do this before
@@ -3210,7 +3174,7 @@ loop_invariant_p (loop, x)
return 0;
/* See if there is any dependence between a store and this load. */
- mem_list_entry = loop_store_mems;
+ mem_list_entry = loop_info->store_mems;
while (mem_list_entry)
{
if (true_dependence (XEXP (mem_list_entry, 0), VOIDmode,
@@ -3279,12 +3243,13 @@ consec_sets_invariant_p (loop, reg, n_sets, insn)
int n_sets;
rtx reg, insn;
{
+ struct loop_regs *regs = LOOP_REGS (loop);
rtx p = insn;
unsigned int regno = REGNO (reg);
rtx temp;
/* Number of sets we have to insist on finding after INSN. */
int count = n_sets - 1;
- int old = VARRAY_INT (set_in_loop, regno);
+ int old = VARRAY_INT (regs->set_in_loop, regno);
int value = 0;
int this;
@@ -3292,7 +3257,7 @@ consec_sets_invariant_p (loop, reg, n_sets, insn)
if (n_sets == 127)
return 0;
- VARRAY_INT (set_in_loop, regno) = 0;
+ VARRAY_INT (regs->set_in_loop, regno) = 0;
while (count > 0)
{
@@ -3331,12 +3296,12 @@ consec_sets_invariant_p (loop, reg, n_sets, insn)
count--;
else if (code != NOTE)
{
- VARRAY_INT (set_in_loop, regno) = old;
+ VARRAY_INT (regs->set_in_loop, regno) = old;
return 0;
}
}
- VARRAY_INT (set_in_loop, regno) = old;
+ VARRAY_INT (regs->set_in_loop, regno) = old;
/* If loop_invariant_p ever returned 2, we return 2. */
return 1 + (value & 2);
}
@@ -3419,7 +3384,8 @@ find_single_use_in_loop (insn, x, usage)
MAY_NOT_MOVE and LAST_SET for any register set in X. */
static void
-count_one_set (insn, x, may_not_move, last_set)
+count_one_set (regs, insn, x, may_not_move, last_set)
+ struct loop_regs *regs;
rtx insn, x;
varray_type may_not_move;
rtx *last_set;
@@ -3444,7 +3410,7 @@ count_one_set (insn, x, may_not_move, last_set)
in current basic block, and it was set before,
it must be set in two basic blocks, so it cannot
be moved out of the loop. */
- if (VARRAY_INT (set_in_loop, regno) > 0
+ if (VARRAY_INT (regs->set_in_loop, regno) > 0
&& last_set[regno] == 0)
VARRAY_CHAR (may_not_move, regno) = 1;
/* If this is not first setting in current basic block,
@@ -3453,16 +3419,16 @@ count_one_set (insn, x, may_not_move, last_set)
if (last_set[regno] != 0
&& reg_used_between_p (dest, last_set[regno], insn))
VARRAY_CHAR (may_not_move, regno) = 1;
- if (VARRAY_INT (set_in_loop, regno) < 127)
- ++VARRAY_INT (set_in_loop, regno);
+ if (VARRAY_INT (regs->set_in_loop, regno) < 127)
+ ++VARRAY_INT (regs->set_in_loop, regno);
last_set[regno] = insn;
}
}
}
-/* Increment SET_IN_LOOP at the index of each register
+/* Increment REGS->SET_IN_LOOP at the index of each register
that is modified by an insn between FROM and TO.
- If the value of an element of SET_IN_LOOP becomes 127 or more,
+ If the value of an element of REGS->SET_IN_LOOP becomes 127 or more,
stop incrementing it, to avoid overflow.
Store in SINGLE_USAGE[I] the single insn in which register I is
@@ -3484,6 +3450,7 @@ count_loop_regs_set (loop, may_not_move, single_usage, count_ptr, nregs)
int *count_ptr;
int nregs;
{
+ struct loop_regs *regs = LOOP_REGS (loop);
register rtx *last_set = (rtx *) xcalloc (nregs, sizeof (rtx));
register rtx insn;
register int count = 0;
@@ -3504,12 +3471,12 @@ count_loop_regs_set (loop, may_not_move, single_usage, count_ptr, nregs)
if (GET_CODE (PATTERN (insn)) == SET
|| GET_CODE (PATTERN (insn)) == CLOBBER)
- count_one_set (insn, PATTERN (insn), may_not_move, last_set);
+ count_one_set (regs, insn, PATTERN (insn), may_not_move, last_set);
else if (GET_CODE (PATTERN (insn)) == PARALLEL)
{
register int i;
for (i = XVECLEN (PATTERN (insn), 0) - 1; i >= 0; i--)
- count_one_set (insn, XVECEXP (PATTERN (insn), 0, i),
+ count_one_set (regs, insn, XVECEXP (PATTERN (insn), 0, i),
may_not_move, last_set);
}
}
@@ -3562,34 +3529,6 @@ loop_reg_used_before_p (loop, set, insn)
/* Bivs are recognized by `basic_induction_var';
Givs by `general_induction_var'. */
-/* Indexed by register number, indicates whether or not register is an
- induction variable, and if so what type. */
-
-varray_type reg_iv_type;
-
-/* Indexed by register number, contains pointer to `struct induction'
- if register is an induction variable. This holds general info for
- all induction variables. */
-
-varray_type reg_iv_info;
-
-/* Indexed by register number, contains pointer to `struct iv_class'
- if register is a basic induction variable. This holds info describing
- the class (a related group) of induction variables that the biv belongs
- to. */
-
-struct iv_class **reg_biv_class;
-
-/* The head of a list which links together (via the next field)
- every iv class for the current loop. */
-
-struct iv_class *loop_iv_list;
-
-/* Givs made from biv increments are always splittable for loop unrolling.
- Since there is no regscan info for them, we have to keep track of them
- separately. */
-unsigned int first_increment_giv, last_increment_giv;
-
/* Communication with routines called via `note_stores'. */
static rtx note_insn;
@@ -3780,11 +3719,12 @@ for_each_insn_in_loop (loop, fncall)
/* Perform strength reduction and induction variable elimination.
- Pseudo registers created during this function will be beyond the last
- valid index in several tables including n_times_set and regno_last_uid.
- This does not cause a problem here, because the added registers cannot be
- givs outside of their loop, and hence will never be reconsidered.
- But scan_loop must check regnos to make sure they are in bounds. */
+ Pseudo registers created during this function will be beyond the
+ last valid index in several tables including regs->n_times_set and
+ regno_last_uid. This does not cause a problem here, because the
+ added registers cannot be givs outside of their loop, and hence
+ will never be reconsidered. But scan_loop must check regnos to
+ make sure they are in bounds. */
static void
strength_reduce (loop, insn_count, flags)
@@ -3792,10 +3732,12 @@ strength_reduce (loop, insn_count, flags)
int insn_count;
int flags;
{
+ struct loop_info *loop_info = LOOP_INFO (loop);
+ struct loop_regs *regs = LOOP_REGS (loop);
+ struct loop_ivs *ivs = LOOP_IVS (loop);
rtx p;
- /* Temporary list pointers for traversing loop_iv_list. */
+ /* Temporary list pointers for traversing ivs->loop_iv_list. */
struct iv_class *bl, **backbl;
- struct loop_info *loop_info = LOOP_INFO (loop);
/* Ratio of extra register life span we can justify
for saving an instruction. More if loop doesn't call subroutines
since in that case saving an insn makes more difference
@@ -3815,12 +3757,12 @@ strength_reduce (loop, insn_count, flags)
rtx loop_scan_start = loop->scan_start;
rtx test_reg = gen_rtx_REG (word_mode, LAST_VIRTUAL_REGISTER + 1);
- VARRAY_INT_INIT (reg_iv_type, max_reg_before_loop, "reg_iv_type");
- VARRAY_GENERIC_PTR_INIT (reg_iv_info, max_reg_before_loop, "reg_iv_info");
- reg_biv_class = (struct iv_class **)
+ VARRAY_INT_INIT (ivs->reg_iv_type, max_reg_before_loop, "reg_iv_type");
+ VARRAY_GENERIC_PTR_INIT (ivs->reg_iv_info, max_reg_before_loop, "reg_iv_info");
+ ivs->reg_biv_class = (struct iv_class **)
xcalloc (max_reg_before_loop, sizeof (struct iv_class *));
- loop_iv_list = 0;
+ ivs->loop_iv_list = 0;
addr_placeholder = gen_reg_rtx (Pmode);
/* Save insn immediately after the loop_end. Insns inserted after loop_end
@@ -3837,14 +3779,14 @@ strength_reduce (loop, insn_count, flags)
for_each_insn_in_loop (loop, check_insn_for_bivs);
- /* Scan loop_iv_list to remove all regs that proved not to be bivs.
- Make a sanity check against n_times_set. */
- for (backbl = &loop_iv_list, bl = *backbl; bl; bl = bl->next)
+ /* Scan ivs->loop_iv_list to remove all regs that proved not to be bivs.
+ Make a sanity check against regs->n_times_set. */
+ for (backbl = &ivs->loop_iv_list, bl = *backbl; bl; bl = bl->next)
{
- if (REG_IV_TYPE (bl->regno) != BASIC_INDUCT
+ if (REG_IV_TYPE (ivs, bl->regno) != BASIC_INDUCT
/* Above happens if register modified by subreg, etc. */
/* Make sure it is not recognized as a basic induction var: */
- || VARRAY_INT (n_times_set, bl->regno) != bl->biv_count
+ || VARRAY_INT (regs->n_times_set, bl->regno) != bl->biv_count
/* If never incremented, it is invariant that we decided not to
move. So leave it alone. */
|| ! bl->incremented)
@@ -3852,12 +3794,12 @@ strength_reduce (loop, insn_count, flags)
if (loop_dump_stream)
fprintf (loop_dump_stream, "Reg %d: biv discarded, %s\n",
bl->regno,
- (REG_IV_TYPE (bl->regno) != BASIC_INDUCT
+ (REG_IV_TYPE (ivs, bl->regno) != BASIC_INDUCT
? "not induction variable"
: (! bl->incremented ? "never incremented"
: "count error")));
- REG_IV_TYPE (bl->regno) = NOT_BASIC_INDUCT;
+ REG_IV_TYPE (ivs, bl->regno) = NOT_BASIC_INDUCT;
*backbl = bl->next;
}
else
@@ -3870,7 +3812,7 @@ strength_reduce (loop, insn_count, flags)
}
/* Exit if there are no bivs. */
- if (! loop_iv_list)
+ if (! ivs->loop_iv_list)
{
/* Can still unroll the loop anyways, but indicate that there is no
strength reduction info available. */
@@ -3892,7 +3834,7 @@ strength_reduce (loop, insn_count, flags)
call_seen = 1;
if (INSN_P (p))
- note_stores (PATTERN (p), record_initial, NULL);
+ note_stores (PATTERN (p), record_initial, ivs);
/* Record any test of a biv that branches around the loop if no store
between it and the start of loop. We only care about tests with
@@ -3903,7 +3845,7 @@ strength_reduce (loop, insn_count, flags)
&& (test = get_condition_for_loop (loop, p)) != 0
&& GET_CODE (XEXP (test, 0)) == REG
&& REGNO (XEXP (test, 0)) < max_reg_before_loop
- && (bl = reg_biv_class[REGNO (XEXP (test, 0))]) != 0
+ && (bl = ivs->reg_biv_class[REGNO (XEXP (test, 0))]) != 0
&& valid_initial_value_p (XEXP (test, 1), p, call_seen, loop_start)
&& bl->init_insn == 0)
{
@@ -3922,7 +3864,7 @@ strength_reduce (loop, insn_count, flags)
/* Look at the each biv and see if we can say anything better about its
initial value from any initializing insns set up above. (This is done
in two passes to avoid missing SETs in a PARALLEL.) */
- for (backbl = &loop_iv_list; (bl = *backbl); backbl = &bl->next)
+ for (backbl = &ivs->loop_iv_list; (bl = *backbl); backbl = &bl->next)
{
rtx src;
rtx note;
@@ -3985,7 +3927,7 @@ strength_reduce (loop, insn_count, flags)
{
unsigned int regno = REGNO (XEXP (src, 0));
- for (bl2 = loop_iv_list; bl2; bl2 = bl2->next)
+ for (bl2 = ivs->loop_iv_list; bl2; bl2 = bl2->next)
if (bl2->regno == regno)
break;
}
@@ -4021,8 +3963,8 @@ strength_reduce (loop, insn_count, flags)
if (loop_dump_stream)
fprintf (loop_dump_stream, "is giv of biv %d\n", bl2->regno);
/* Let this giv be discovered by the generic code. */
- REG_IV_TYPE (bl->regno) = UNKNOWN_INDUCT;
- reg_biv_class[bl->regno] = (struct iv_class *) NULL_PTR;
+ REG_IV_TYPE (ivs, bl->regno) = UNKNOWN_INDUCT;
+ ivs->reg_biv_class[bl->regno] = (struct iv_class *) NULL_PTR;
/* We can get better optimization if we can move the giv setting
before the first giv use. */
if (dominator
@@ -4086,8 +4028,8 @@ strength_reduce (loop, insn_count, flags)
/* Get an upper bound for the number of registers
we might have after all bivs have been processed. */
- first_increment_giv = max_reg_num ();
- for (n_extra_increment = 0, bl = loop_iv_list; bl; bl = bl->next)
+ ivs->first_increment_giv = max_reg_num ();
+ for (n_extra_increment = 0, bl = ivs->loop_iv_list; bl; bl = bl->next)
n_extra_increment += bl->biv_count - 1;
/* If the loop contains volatile memory references do not allow any
@@ -4095,13 +4037,13 @@ strength_reduce (loop, insn_count, flags)
markers. */
if (n_extra_increment && ! loop_info->has_volatile)
{
- unsigned int nregs = first_increment_giv + n_extra_increment;
+ unsigned int nregs = ivs->first_increment_giv + n_extra_increment;
- /* Reallocate reg_iv_type and reg_iv_info. */
- VARRAY_GROW (reg_iv_type, nregs);
- VARRAY_GROW (reg_iv_info, nregs);
+ /* Reallocate ivs->reg_iv_type and ivs->reg_iv_info. */
+ VARRAY_GROW (ivs->reg_iv_type, nregs);
+ VARRAY_GROW (ivs->reg_iv_info, nregs);
- for (bl = loop_iv_list; bl; bl = bl->next)
+ for (bl = ivs->loop_iv_list; bl; bl = bl->next)
{
struct induction **vp, *v, *next;
int biv_dead_after_loop = 0;
@@ -4167,17 +4109,18 @@ strength_reduce (loop, insn_count, flags)
old_reg = v->dest_reg;
dest_reg = gen_reg_rtx (v->mode);
- /* Unlike reg_iv_type / reg_iv_info, the other three arrays
- have been allocated with some slop space, so we may not
- actually need to reallocate them. If we do, the following
- if statement will be executed just once in this loop. */
- if ((unsigned) max_reg_num () > n_times_set->num_elements)
+ /* Unlike ivs->reg_iv_type / ivs->reg_iv_info, the other
+ three arrays have been allocated with some slop
+ space, so we may not actually need to reallocate
+ them. If we do, the following if statement will be
+ executed just once in this loop. */
+ if ((unsigned) max_reg_num () > regs->n_times_set->num_elements)
{
/* Grow all the remaining arrays. */
- VARRAY_GROW (set_in_loop, nregs);
- VARRAY_GROW (n_times_set, nregs);
- VARRAY_GROW (may_not_optimize, nregs);
- VARRAY_GROW (reg_single_usage, nregs);
+ VARRAY_GROW (regs->set_in_loop, nregs);
+ VARRAY_GROW (regs->n_times_set, nregs);
+ VARRAY_GROW (regs->may_not_optimize, nregs);
+ VARRAY_GROW (regs->single_usage, nregs);
}
/* Some bivs are incremented with a multi-insn sequence.
@@ -4253,14 +4196,14 @@ strength_reduce (loop, insn_count, flags)
old_regno = REGNO (old_reg);
new_regno = REGNO (dest_reg);
- VARRAY_INT (set_in_loop, old_regno)--;
- VARRAY_INT (set_in_loop, new_regno) = 1;
- VARRAY_INT (n_times_set, old_regno)--;
- VARRAY_INT (n_times_set, new_regno) = 1;
- VARRAY_CHAR (may_not_optimize, new_regno) = 0;
+ VARRAY_INT (regs->set_in_loop, old_regno)--;
+ VARRAY_INT (regs->set_in_loop, new_regno) = 1;
+ VARRAY_INT (regs->n_times_set, old_regno)--;
+ VARRAY_INT (regs->n_times_set, new_regno) = 1;
+ VARRAY_CHAR (regs->may_not_optimize, new_regno) = 0;
- REG_IV_TYPE (new_regno) = GENERAL_INDUCT;
- REG_IV_INFO (new_regno) = v;
+ REG_IV_TYPE (ivs, new_regno) = GENERAL_INDUCT;
+ REG_IV_INFO (ivs, new_regno) = v;
/* If next_insn has a REG_EQUAL note that mentiones OLD_REG,
it must be replaced. */
@@ -4318,7 +4261,7 @@ strength_reduce (loop, insn_count, flags)
}
}
}
- last_increment_giv = max_reg_num () - 1;
+ ivs->last_increment_giv = max_reg_num () - 1;
/* Search the loop for general induction variables. */
@@ -4336,7 +4279,7 @@ strength_reduce (loop, insn_count, flags)
can be calculated. This must be done after loop_iterations is called,
so that final_giv_value will work correctly. */
- for (bl = loop_iv_list; bl; bl = bl->next)
+ for (bl = ivs->loop_iv_list; bl; bl = bl->next)
{
struct induction *v;
@@ -4352,14 +4295,14 @@ strength_reduce (loop, insn_count, flags)
/* Create reg_map to hold substitutions for replaceable giv regs.
Some givs might have been made from biv increments, so look at
- reg_iv_type for a suitable size. */
- reg_map_size = reg_iv_type->num_elements;
+ ivs->reg_iv_type for a suitable size. */
+ reg_map_size = ivs->reg_iv_type->num_elements;
reg_map = (rtx *) xcalloc (reg_map_size, sizeof (rtx));
/* Examine each iv class for feasibility of strength reduction/induction
variable elimination. */
- for (bl = loop_iv_list; bl; bl = bl->next)
+ for (bl = ivs->loop_iv_list; bl; bl = bl->next)
{
struct induction *v;
int benefit;
@@ -4412,8 +4355,12 @@ strength_reduce (loop, insn_count, flags)
}
}
+ /* Check each extension dependant giv in this class to see if its
+ root biv is safe from wrapping in the interior mode. */
+ check_ext_dependant_givs (bl, loop_info);
+
/* Combine all giv's for this iv_class. */
- combine_givs (bl);
+ combine_givs (regs, bl);
/* This will be true at the end, if all givs which depend on this
biv have been strength reduced.
@@ -4549,7 +4496,7 @@ strength_reduce (loop, insn_count, flags)
v->maybe_dead = 1;
}
else if (v->giv_type == DEST_REG
- && REGNO_FIRST_UID (REGNO (v->dest_reg)) == INSN_UID (v->insn))
+ && REGNO_FIRST_UID (REGNO (v->dest_reg)) == INSN_UID (v->insn))
{
struct induction *v1;
@@ -4561,20 +4508,20 @@ strength_reduce (loop, insn_count, flags)
/* Now that we know which givs will be reduced, try to rearrange the
combinations to reduce register pressure.
- recombine_givs calls find_life_end, which needs reg_iv_type and
- reg_iv_info to be valid for all pseudos. We do the necessary
+ recombine_givs calls find_life_end, which needs ivs->reg_iv_type and
+ ivs->reg_iv_info to be valid for all pseudos. We do the necessary
reallocation here since it allows to check if there are still
more bivs to process. */
nregs = max_reg_num ();
- if (nregs > reg_iv_type->num_elements)
+ if (nregs > ivs->reg_iv_type->num_elements)
{
/* If there are still more bivs to process, allocate some slack
space so that we're not constantly reallocating these arrays. */
if (bl->next)
nregs += nregs / 4;
- /* Reallocate reg_iv_type and reg_iv_info. */
- VARRAY_GROW (reg_iv_type, nregs);
- VARRAY_GROW (reg_iv_info, nregs);
+ /* Reallocate ivs->reg_iv_type and ivs->reg_iv_info. */
+ VARRAY_GROW (ivs->reg_iv_type, nregs);
+ VARRAY_GROW (ivs->reg_iv_info, nregs);
}
recombine_givs (loop, bl, flags & LOOP_UNROLL);
@@ -4733,8 +4680,9 @@ strength_reduce (loop, insn_count, flags)
/* Add code at loop start to initialize giv's reduced reg. */
- emit_iv_add_mult (bl->initial_value, v->mult_val,
- v->add_val, v->new_reg, loop_start);
+ emit_iv_add_mult (extend_value_for_giv (v, bl->initial_value),
+ v->mult_val, v->add_val, v->new_reg,
+ loop_start);
}
}
@@ -4799,8 +4747,9 @@ strength_reduce (loop, insn_count, flags)
not replaceable. The correct final value is the same as the
value that the giv starts the reversed loop with. */
if (bl->reversed && ! v->replaceable)
- emit_iv_add_mult (bl->initial_value, v->mult_val,
- v->add_val, v->dest_reg, end_insert_before);
+ emit_iv_add_mult (extend_value_for_giv (v, bl->initial_value),
+ v->mult_val, v->add_val, v->dest_reg,
+ end_insert_before);
else if (v->final_value)
{
rtx insert_before;
@@ -4984,9 +4933,9 @@ strength_reduce (loop, insn_count, flags)
fprintf (loop_dump_stream, "\n");
egress:
- VARRAY_FREE (reg_iv_type);
- VARRAY_FREE (reg_iv_info);
- free (reg_biv_class);
+ VARRAY_FREE (ivs->reg_iv_type);
+ VARRAY_FREE (ivs->reg_iv_info);
+ free (ivs->reg_biv_class);
if (reg_map)
free (reg_map);
}
@@ -4999,6 +4948,7 @@ check_insn_for_bivs (loop, p, not_every_iteration, maybe_multiple)
int not_every_iteration;
int maybe_multiple;
{
+ struct loop_ivs *ivs = LOOP_IVS (loop);
rtx set;
rtx dest_reg;
rtx inc_val;
@@ -5012,7 +4962,7 @@ check_insn_for_bivs (loop, p, not_every_iteration, maybe_multiple)
dest_reg = SET_DEST (set);
if (REGNO (dest_reg) < max_reg_before_loop
&& REGNO (dest_reg) >= FIRST_PSEUDO_REGISTER
- && REG_IV_TYPE (REGNO (dest_reg)) != NOT_BASIC_INDUCT)
+ && REG_IV_TYPE (ivs, REGNO (dest_reg)) != NOT_BASIC_INDUCT)
{
if (basic_induction_var (loop, SET_SRC (set),
GET_MODE (SET_SRC (set)),
@@ -5025,12 +4975,12 @@ check_insn_for_bivs (loop, p, not_every_iteration, maybe_multiple)
struct induction *v
= (struct induction *) oballoc (sizeof (struct induction));
- record_biv (v, p, dest_reg, inc_val, mult_val, location,
+ record_biv (loop, v, p, dest_reg, inc_val, mult_val, location,
not_every_iteration, maybe_multiple);
- REG_IV_TYPE (REGNO (dest_reg)) = BASIC_INDUCT;
+ REG_IV_TYPE (ivs, REGNO (dest_reg)) = BASIC_INDUCT;
}
else if (REGNO (dest_reg) < max_reg_before_loop)
- REG_IV_TYPE (REGNO (dest_reg)) = NOT_BASIC_INDUCT;
+ REG_IV_TYPE (ivs, REGNO (dest_reg)) = NOT_BASIC_INDUCT;
}
}
return p;
@@ -5046,17 +4996,20 @@ check_insn_for_givs (loop, p, not_every_iteration, maybe_multiple)
int not_every_iteration;
int maybe_multiple;
{
+ struct loop_regs *regs = LOOP_REGS (loop);
+
rtx set;
/* Look for a general induction variable in a register. */
if (GET_CODE (p) == INSN
&& (set = single_set (p))
&& GET_CODE (SET_DEST (set)) == REG
- && ! VARRAY_CHAR (may_not_optimize, REGNO (SET_DEST (set))))
+ && ! VARRAY_CHAR (regs->may_not_optimize, REGNO (SET_DEST (set))))
{
rtx src_reg;
rtx dest_reg;
rtx add_val;
rtx mult_val;
+ rtx ext_val;
int benefit;
rtx regnote = 0;
rtx last_consec_insn;
@@ -5067,11 +5020,11 @@ check_insn_for_givs (loop, p, not_every_iteration, maybe_multiple)
if (/* SET_SRC is a giv. */
(general_induction_var (loop, SET_SRC (set), &src_reg, &add_val,
- &mult_val, 0, &benefit, VOIDmode)
+ &mult_val, &ext_val, 0, &benefit, VOIDmode)
/* Equivalent expression is a giv. */
|| ((regnote = find_reg_note (p, REG_EQUAL, NULL_RTX))
&& general_induction_var (loop, XEXP (regnote, 0), &src_reg,
- &add_val, &mult_val, 0,
+ &add_val, &mult_val, &ext_val, 0,
&benefit, VOIDmode)))
/* Don't try to handle any regs made by loop optimization.
We have nothing on them in regno_first_uid, etc. */
@@ -5079,11 +5032,11 @@ check_insn_for_givs (loop, p, not_every_iteration, maybe_multiple)
/* Don't recognize a BASIC_INDUCT_VAR here. */
&& dest_reg != src_reg
/* This must be the only place where the register is set. */
- && (VARRAY_INT (n_times_set, REGNO (dest_reg)) == 1
+ && (VARRAY_INT (regs->n_times_set, REGNO (dest_reg)) == 1
/* or all sets must be consecutive and make a giv. */
|| (benefit = consec_sets_giv (loop, benefit, p,
src_reg, dest_reg,
- &add_val, &mult_val,
+ &add_val, &mult_val, &ext_val,
&last_consec_insn))))
{
struct induction *v
@@ -5094,11 +5047,11 @@ check_insn_for_givs (loop, p, not_every_iteration, maybe_multiple)
benefit += libcall_benefit (p);
/* Skip the consecutive insns, if there are any. */
- if (VARRAY_INT (n_times_set, REGNO (dest_reg)) != 1)
+ if (VARRAY_INT (regs->n_times_set, REGNO (dest_reg)) != 1)
p = last_consec_insn;
record_giv (loop, v, p, src_reg, dest_reg, mult_val, add_val,
- benefit, DEST_REG, not_every_iteration,
+ ext_val, benefit, DEST_REG, not_every_iteration,
maybe_multiple, NULL_PTR);
}
@@ -5202,6 +5155,7 @@ find_mem_givs (loop, x, insn, not_every_iteration, maybe_multiple)
rtx src_reg;
rtx add_val;
rtx mult_val;
+ rtx ext_val;
int benefit;
/* This code used to disable creating GIVs with mult_val == 1 and
@@ -5210,15 +5164,16 @@ find_mem_givs (loop, x, insn, not_every_iteration, maybe_multiple)
this one would not be seen. */
if (general_induction_var (loop, XEXP (x, 0), &src_reg, &add_val,
- &mult_val, 1, &benefit, GET_MODE (x)))
+ &mult_val, &ext_val, 1, &benefit,
+ GET_MODE (x)))
{
/* Found one; record it. */
struct induction *v
= (struct induction *) oballoc (sizeof (struct induction));
record_giv (loop, v, insn, src_reg, addr_placeholder, mult_val,
- add_val, benefit, DEST_ADDR, not_every_iteration,
- maybe_multiple, &XEXP (x, 0));
+ add_val, ext_val, benefit, DEST_ADDR,
+ not_every_iteration, maybe_multiple, &XEXP (x, 0));
v->mem_mode = GET_MODE (x);
}
@@ -5259,8 +5214,9 @@ find_mem_givs (loop, x, insn, not_every_iteration, maybe_multiple)
executed exactly once per iteration. */
static void
-record_biv (v, insn, dest_reg, inc_val, mult_val, location,
+record_biv (loop, v, insn, dest_reg, inc_val, mult_val, location,
not_every_iteration, maybe_multiple)
+ struct loop *loop;
struct induction *v;
rtx insn;
rtx dest_reg;
@@ -5270,6 +5226,7 @@ record_biv (v, insn, dest_reg, inc_val, mult_val, location,
int not_every_iteration;
int maybe_multiple;
{
+ struct loop_ivs *ivs = LOOP_IVS (loop);
struct iv_class *bl;
v->insn = insn;
@@ -5277,6 +5234,7 @@ record_biv (v, insn, dest_reg, inc_val, mult_val, location,
v->dest_reg = dest_reg;
v->mult_val = mult_val;
v->add_val = inc_val;
+ v->ext_dependant = NULL_RTX;
v->location = location;
v->mode = GET_MODE (dest_reg);
v->always_computable = ! not_every_iteration;
@@ -5286,7 +5244,7 @@ record_biv (v, insn, dest_reg, inc_val, mult_val, location,
/* Add this to the reg's iv_class, creating a class
if this is the first incrementation of the reg. */
- bl = reg_biv_class[REGNO (dest_reg)];
+ bl = ivs->reg_biv_class[REGNO (dest_reg)];
if (bl == 0)
{
/* Create and initialize new iv_class. */
@@ -5311,12 +5269,12 @@ record_biv (v, insn, dest_reg, inc_val, mult_val, location,
bl->reversed = 0;
bl->total_benefit = 0;
- /* Add this class to loop_iv_list. */
- bl->next = loop_iv_list;
- loop_iv_list = bl;
+ /* Add this class to ivs->loop_iv_list. */
+ bl->next = ivs->loop_iv_list;
+ ivs->loop_iv_list = bl;
/* Put it in the array of biv register classes. */
- reg_biv_class[REGNO (dest_reg)] = bl;
+ ivs->reg_biv_class[REGNO (dest_reg)] = bl;
}
/* Update IV_CLASS entry for this biv. */
@@ -5360,19 +5318,20 @@ record_biv (v, insn, dest_reg, inc_val, mult_val, location,
LOCATION points to the place where this giv's value appears in INSN. */
static void
-record_giv (loop, v, insn, src_reg, dest_reg, mult_val, add_val, benefit,
- type, not_every_iteration, maybe_multiple, location)
+record_giv (loop, v, insn, src_reg, dest_reg, mult_val, add_val, ext_val,
+ benefit, type, not_every_iteration, maybe_multiple, location)
const struct loop *loop;
struct induction *v;
rtx insn;
rtx src_reg;
rtx dest_reg;
- rtx mult_val, add_val;
+ rtx mult_val, add_val, ext_val;
int benefit;
enum g_types type;
int not_every_iteration, maybe_multiple;
rtx *location;
{
+ struct loop_ivs *ivs = LOOP_IVS (loop);
struct induction *b;
struct iv_class *bl;
rtx set = single_set (insn);
@@ -5389,6 +5348,7 @@ record_giv (loop, v, insn, src_reg, dest_reg, mult_val, add_val, benefit,
v->dest_reg = dest_reg;
v->mult_val = mult_val;
v->add_val = add_val;
+ v->ext_dependant = ext_val;
v->benefit = benefit;
v->location = location;
v->cant_derive = 0;
@@ -5440,13 +5400,13 @@ record_giv (loop, v, insn, src_reg, dest_reg, mult_val, add_val, benefit,
if (v->lifetime == 0)
v->ignore = 1;
- REG_IV_TYPE (REGNO (dest_reg)) = GENERAL_INDUCT;
- REG_IV_INFO (REGNO (dest_reg)) = v;
+ REG_IV_TYPE (ivs, REGNO (dest_reg)) = GENERAL_INDUCT;
+ REG_IV_INFO (ivs, REGNO (dest_reg)) = v;
}
/* Add the giv to the class of givs computed from one biv. */
- bl = reg_biv_class[REGNO (src_reg)];
+ bl = ivs->reg_biv_class[REGNO (src_reg)];
if (bl)
{
v->next_iv = bl->giv;
@@ -5577,6 +5537,24 @@ record_giv (loop, v, insn, src_reg, dest_reg, mult_val, add_val, benefit,
if (v->no_const_addval)
fprintf (loop_dump_stream, " ncav");
+ if (v->ext_dependant)
+ {
+ switch (GET_CODE (v->ext_dependant))
+ {
+ case SIGN_EXTEND:
+ fprintf (loop_dump_stream, " ext se");
+ break;
+ case ZERO_EXTEND:
+ fprintf (loop_dump_stream, " ext ze");
+ break;
+ case TRUNCATE:
+ fprintf (loop_dump_stream, " ext tr");
+ break;
+ default:
+ abort ();
+ }
+ }
+
if (GET_CODE (mult_val) == CONST_INT)
{
fprintf (loop_dump_stream, " mult ");
@@ -5616,10 +5594,11 @@ check_final_value (loop, v)
const struct loop *loop;
struct induction *v;
{
+ struct loop_ivs *ivs = LOOP_IVS (loop);
struct iv_class *bl;
rtx final_value = 0;
- bl = reg_biv_class[REGNO (v->src_reg)];
+ bl = ivs->reg_biv_class[REGNO (v->src_reg)];
/* DEST_ADDR givs will never reach here, because they are always marked
replaceable above in record_giv. */
@@ -5689,7 +5668,7 @@ check_final_value (loop, v)
if (! biv_increment_seen
&& reg_set_p (v->src_reg, PATTERN (p)))
biv_increment_seen = 1;
-
+
if (reg_mentioned_p (v->dest_reg, PATTERN (p)))
{
if (biv_increment_seen)
@@ -5763,6 +5742,7 @@ update_giv_derive (loop, p)
const struct loop *loop;
rtx p;
{
+ struct loop_ivs *ivs = LOOP_IVS (loop);
struct iv_class *bl;
struct induction *biv, *giv;
rtx tem;
@@ -5795,7 +5775,7 @@ update_giv_derive (loop, p)
subsequent biv update was performed. If this adjustment cannot be done,
the giv cannot derive further givs. */
- for (bl = loop_iv_list; bl; bl = bl->next)
+ for (bl = ivs->loop_iv_list; bl; bl = bl->next)
for (biv = bl->biv; biv; biv = biv->next_iv)
if (GET_CODE (p) == CODE_LABEL || GET_CODE (p) == JUMP_INSN
|| biv->insn == p)
@@ -5825,20 +5805,21 @@ update_giv_derive (loop, p)
be able to compute a compensation. */
else if (biv->insn == p)
{
- tem = 0;
+ rtx ext_val_dummy;
+ tem = 0;
if (biv->mult_val == const1_rtx)
tem = simplify_giv_expr (loop,
gen_rtx_MULT (giv->mode,
biv->add_val,
giv->mult_val),
- &dummy);
+ &ext_val_dummy, &dummy);
if (tem && giv->derive_adjustment)
tem = simplify_giv_expr
(loop,
gen_rtx_PLUS (giv->mode, tem, giv->derive_adjustment),
- &dummy);
+ &ext_val_dummy, &dummy);
if (tem)
giv->derive_adjustment = tem;
@@ -5984,7 +5965,7 @@ basic_induction_var (loop, x, mode, dest_reg, p, inc_val, mult_val, location)
inc_val, mult_val, location))
return 1;
}
- /* ... fall through ... */
+ /* Fall through. */
/* Can accept constant setting of biv only when inside inner most loop.
Otherwise, a biv of an inner loop may be incorrectly recognized
@@ -6002,7 +5983,7 @@ basic_induction_var (loop, x, mode, dest_reg, p, inc_val, mult_val, location)
if (loop->level == 1
&& GET_MODE_CLASS (mode) != MODE_CC
&& GET_MODE_CLASS (GET_MODE (dest_reg)) != MODE_CC)
- {
+ {
/* Possible bug here? Perhaps we don't know the mode of X. */
*inc_val = convert_modes (GET_MODE (dest_reg), mode, x, 0);
*mult_val = const0_rtx;
@@ -6058,17 +6039,19 @@ basic_induction_var (loop, x, mode, dest_reg, p, inc_val, mult_val, location)
such that the value of X is biv * mult + add; */
static int
-general_induction_var (loop, x, src_reg, add_val, mult_val, is_addr,
- pbenefit, addr_mode)
+general_induction_var (loop, x, src_reg, add_val, mult_val, ext_val,
+ is_addr, pbenefit, addr_mode)
const struct loop *loop;
rtx x;
rtx *src_reg;
rtx *add_val;
rtx *mult_val;
+ rtx *ext_val;
int is_addr;
int *pbenefit;
enum machine_mode addr_mode;
{
+ struct loop_ivs *ivs = LOOP_IVS (loop);
rtx orig_x = x;
char *storage;
@@ -6080,7 +6063,8 @@ general_induction_var (loop, x, src_reg, add_val, mult_val, is_addr,
Mark our place on the obstack in case we don't find a giv. */
storage = (char *) oballoc (0);
*pbenefit = 0;
- x = simplify_giv_expr (loop, x, pbenefit);
+ *ext_val = NULL_RTX;
+ x = simplify_giv_expr (loop, x, ext_val, pbenefit);
if (x == 0)
{
obfree (storage);
@@ -6094,7 +6078,7 @@ general_induction_var (loop, x, src_reg, add_val, mult_val, is_addr,
/* Since this is now an invariant and wasn't before, it must be a giv
with MULT_VAL == 0. It doesn't matter which BIV we associate this
with. */
- *src_reg = loop_iv_list->biv->dest_reg;
+ *src_reg = ivs->loop_iv_list->biv->dest_reg;
*mult_val = const0_rtx;
*add_val = x;
break;
@@ -6177,11 +6161,14 @@ static int cmp_combine_givs_stats PARAMS ((const PTR, const PTR));
static int cmp_recombine_givs_stats PARAMS ((const PTR, const PTR));
static rtx
-simplify_giv_expr (loop, x, benefit)
+simplify_giv_expr (loop, x, ext_val, benefit)
const struct loop *loop;
rtx x;
+ rtx *ext_val;
int *benefit;
{
+ struct loop_ivs *ivs = LOOP_IVS (loop);
+ struct loop_regs *regs = LOOP_REGS (loop);
enum machine_mode mode = GET_MODE (x);
rtx arg0, arg1;
rtx tem;
@@ -6196,8 +6183,8 @@ simplify_giv_expr (loop, x, benefit)
switch (GET_CODE (x))
{
case PLUS:
- arg0 = simplify_giv_expr (loop, XEXP (x, 0), benefit);
- arg1 = simplify_giv_expr (loop, XEXP (x, 1), benefit);
+ arg0 = simplify_giv_expr (loop, XEXP (x, 0), ext_val, benefit);
+ arg1 = simplify_giv_expr (loop, XEXP (x, 1), ext_val, benefit);
if (arg0 == 0 || arg1 == 0)
return NULL_RTX;
@@ -6249,7 +6236,7 @@ simplify_giv_expr (loop, x, benefit)
gen_rtx_PLUS (mode,
XEXP (arg0, 1),
arg1)),
- benefit);
+ ext_val, benefit);
default:
abort ();
@@ -6275,7 +6262,7 @@ simplify_giv_expr (loop, x, benefit)
gen_rtx_PLUS (mode, arg0,
XEXP (arg1, 0)),
XEXP (arg1, 1)),
- benefit);
+ ext_val, benefit);
/* Now must have MULT + MULT. Distribute if same biv, else not giv. */
if (GET_CODE (arg0) != MULT || GET_CODE (arg1) != MULT)
@@ -6290,7 +6277,7 @@ simplify_giv_expr (loop, x, benefit)
gen_rtx_PLUS (mode,
XEXP (arg0, 1),
XEXP (arg1, 1))),
- benefit);
+ ext_val, benefit);
case MINUS:
/* Handle "a - b" as "a + b * (-1)". */
@@ -6300,11 +6287,11 @@ simplify_giv_expr (loop, x, benefit)
gen_rtx_MULT (mode,
XEXP (x, 1),
constm1_rtx)),
- benefit);
+ ext_val, benefit);
case MULT:
- arg0 = simplify_giv_expr (loop, XEXP (x, 0), benefit);
- arg1 = simplify_giv_expr (loop, XEXP (x, 1), benefit);
+ arg0 = simplify_giv_expr (loop, XEXP (x, 0), ext_val, benefit);
+ arg1 = simplify_giv_expr (loop, XEXP (x, 1), ext_val, benefit);
if (arg0 == 0 || arg1 == 0)
return NULL_RTX;
@@ -6350,7 +6337,7 @@ simplify_giv_expr (loop, x, benefit)
XEXP (arg0,
1),
arg1)),
- benefit);
+ ext_val, benefit);
}
/* Porpagate the MULT expressions to the intermost nodes. */
else if (GET_CODE (arg0) == PLUS)
@@ -6366,7 +6353,7 @@ simplify_giv_expr (loop, x, benefit)
XEXP (arg0,
1),
arg1)),
- benefit);
+ ext_val, benefit);
}
return gen_rtx_USE (mode, gen_rtx_MULT (mode, arg0, arg1));
@@ -6378,7 +6365,7 @@ simplify_giv_expr (loop, x, benefit)
gen_rtx_MULT (mode,
XEXP (arg0, 1),
arg1)),
- benefit);
+ ext_val, benefit);
case PLUS:
/* (a + invar_1) * invar_2. Distribute. */
@@ -6390,7 +6377,7 @@ simplify_giv_expr (loop, x, benefit)
gen_rtx_MULT (mode,
XEXP (arg0, 1),
arg1)),
- benefit);
+ ext_val, benefit);
default:
abort ();
@@ -6407,13 +6394,13 @@ simplify_giv_expr (loop, x, benefit)
XEXP (x, 0),
GEN_INT ((HOST_WIDE_INT) 1
<< INTVAL (XEXP (x, 1)))),
- benefit);
+ ext_val, benefit);
case NEG:
/* "-a" is "a * (-1)" */
return simplify_giv_expr (loop,
gen_rtx_MULT (mode, XEXP (x, 0), constm1_rtx),
- benefit);
+ ext_val, benefit);
case NOT:
/* "~a" is "-a - 1". Silly, but easy. */
@@ -6421,25 +6408,42 @@ simplify_giv_expr (loop, x, benefit)
gen_rtx_MINUS (mode,
gen_rtx_NEG (mode, XEXP (x, 0)),
const1_rtx),
- benefit);
+ ext_val, benefit);
case USE:
/* Already in proper form for invariant. */
return x;
+ case SIGN_EXTEND:
+ case ZERO_EXTEND:
+ case TRUNCATE:
+ /* Conditionally recognize extensions of simple IVs. After we've
+ computed loop traversal counts and verified the range of the
+ source IV, we'll reevaluate this as a GIV. */
+ if (*ext_val == NULL_RTX)
+ {
+ arg0 = simplify_giv_expr (loop, XEXP (x, 0), ext_val, benefit);
+ if (arg0 && *ext_val == NULL_RTX && GET_CODE (arg0) == REG)
+ {
+ *ext_val = gen_rtx_fmt_e (GET_CODE (x), mode, arg0);
+ return arg0;
+ }
+ }
+ goto do_default;
+
case REG:
/* If this is a new register, we can't deal with it. */
if (REGNO (x) >= max_reg_before_loop)
return 0;
/* Check for biv or giv. */
- switch (REG_IV_TYPE (REGNO (x)))
+ switch (REG_IV_TYPE (ivs, REGNO (x)))
{
case BASIC_INDUCT:
return x;
case GENERAL_INDUCT:
{
- struct induction *v = REG_IV_INFO (REGNO (x));
+ struct induction *v = REG_IV_INFO (ivs, REGNO (x));
/* Form expression from giv and add benefit. Ensure this giv
can derive another and subtract any needed adjustment if so. */
@@ -6452,7 +6456,7 @@ simplify_giv_expr (loop, x, benefit)
less harmful than reducing many givs that are not really
beneficial. */
{
- rtx single_use = VARRAY_RTX (reg_single_usage, REGNO (x));
+ rtx single_use = VARRAY_RTX (regs->single_usage, REGNO (x));
if (single_use && single_use != const0_rtx)
*benefit += v->benefit;
}
@@ -6466,10 +6470,22 @@ simplify_giv_expr (loop, x, benefit)
if (v->derive_adjustment)
tem = gen_rtx_MINUS (mode, tem, v->derive_adjustment);
- return simplify_giv_expr (loop, tem, benefit);
+ arg0 = simplify_giv_expr (loop, tem, ext_val, benefit);
+ if (*ext_val)
+ {
+ if (!v->ext_dependant)
+ return arg0;
+ }
+ else
+ {
+ *ext_val = v->ext_dependant;
+ return arg0;
+ }
+ return 0;
}
default:
+ do_default:
/* If it isn't an induction variable, and it is invariant, we
may be able to simplify things further by looking through
the bits we just moved outside the loop. */
@@ -6477,7 +6493,7 @@ simplify_giv_expr (loop, x, benefit)
{
struct movable *m;
- for (m = the_movables; m; m = m->next)
+ for (m = the_movables.head; m; m = m->next)
if (rtx_equal_p (x, m->set_dest))
{
/* Ok, we found a match. Substitute and simplify. */
@@ -6486,7 +6502,7 @@ simplify_giv_expr (loop, x, benefit)
this one is going away. */
if (m->match)
return simplify_giv_expr (loop, m->match->set_dest,
- benefit);
+ ext_val, benefit);
/* If consec is non-zero, this is a member of a group of
instructions that were moved together. We handle this
@@ -6496,7 +6512,11 @@ simplify_giv_expr (loop, x, benefit)
{
int i = m->consec;
tem = m->insn;
- do { tem = NEXT_INSN (tem); } while (--i > 0);
+ do
+ {
+ tem = NEXT_INSN (tem);
+ }
+ while (--i > 0);
tem = find_reg_note (tem, REG_EQUAL, NULL_RTX);
if (tem)
@@ -6520,17 +6540,18 @@ simplify_giv_expr (loop, x, benefit)
|| GET_CODE (tem) == CONST_INT
|| GET_CODE (tem) == SYMBOL_REF)
{
- tem = simplify_giv_expr (loop, tem, benefit);
+ tem = simplify_giv_expr (loop, tem, ext_val,
+ benefit);
if (tem)
return tem;
}
else if (GET_CODE (tem) == CONST
- && GET_CODE (XEXP (tem, 0)) == PLUS
- && GET_CODE (XEXP (XEXP (tem, 0), 0)) == SYMBOL_REF
- && GET_CODE (XEXP (XEXP (tem, 0), 1)) == CONST_INT)
+ && GET_CODE (XEXP (tem, 0)) == PLUS
+ && GET_CODE (XEXP (XEXP (tem, 0), 0)) == SYMBOL_REF
+ && GET_CODE (XEXP (XEXP (tem, 0), 1)) == CONST_INT)
{
tem = simplify_giv_expr (loop, XEXP (tem, 0),
- benefit);
+ ext_val, benefit);
if (tem)
return tem;
}
@@ -6635,7 +6656,7 @@ sge_plus (mode, x, y)
static int
consec_sets_giv (loop, first_benefit, p, src_reg, dest_reg,
- add_val, mult_val, last_consec_insn)
+ add_val, mult_val, ext_val, last_consec_insn)
const struct loop *loop;
int first_benefit;
rtx p;
@@ -6643,8 +6664,11 @@ consec_sets_giv (loop, first_benefit, p, src_reg, dest_reg,
rtx dest_reg;
rtx *add_val;
rtx *mult_val;
+ rtx *ext_val;
rtx *last_consec_insn;
{
+ struct loop_ivs *ivs = LOOP_IVS (loop);
+ struct loop_regs *regs = LOOP_REGS (loop);
int count;
enum rtx_code code;
int benefit;
@@ -6666,11 +6690,12 @@ consec_sets_giv (loop, first_benefit, p, src_reg, dest_reg,
v->benefit = first_benefit;
v->cant_derive = 0;
v->derive_adjustment = 0;
+ v->ext_dependant = NULL_RTX;
- REG_IV_TYPE (REGNO (dest_reg)) = GENERAL_INDUCT;
- REG_IV_INFO (REGNO (dest_reg)) = v;
+ REG_IV_TYPE (ivs, REGNO (dest_reg)) = GENERAL_INDUCT;
+ REG_IV_INFO (ivs, REGNO (dest_reg)) = v;
- count = VARRAY_INT (n_times_set, REGNO (dest_reg)) - 1;
+ count = VARRAY_INT (regs->n_times_set, REGNO (dest_reg)) - 1;
while (count > 0)
{
@@ -6686,12 +6711,13 @@ consec_sets_giv (loop, first_benefit, p, src_reg, dest_reg,
&& GET_CODE (SET_DEST (set)) == REG
&& SET_DEST (set) == dest_reg
&& (general_induction_var (loop, SET_SRC (set), &src_reg,
- add_val, mult_val, 0, &benefit, VOIDmode)
+ add_val, mult_val, ext_val, 0,
+ &benefit, VOIDmode)
/* Giv created by equivalent expression. */
|| ((temp = find_reg_note (p, REG_EQUAL, NULL_RTX))
&& general_induction_var (loop, XEXP (temp, 0), &src_reg,
- add_val, mult_val, 0, &benefit,
- VOIDmode)))
+ add_val, mult_val, ext_val, 0,
+ &benefit, VOIDmode)))
&& src_reg == v->src_reg)
{
if (find_reg_note (p, REG_RETVAL, NULL_RTX))
@@ -6713,7 +6739,7 @@ consec_sets_giv (loop, first_benefit, p, src_reg, dest_reg,
&& CONSTANT_P (SET_SRC (set)))
continue;
- REG_IV_TYPE (REGNO (dest_reg)) = UNKNOWN_INDUCT;
+ REG_IV_TYPE (ivs, REGNO (dest_reg)) = UNKNOWN_INDUCT;
return 0;
}
}
@@ -6785,7 +6811,7 @@ express_from_1 (a, b, mult)
a = ra, b = ob;
else
{
- /* Indicates an extra register in B. Strip one level from B and
+ /* Indicates an extra register in B. Strip one level from B and
recurse, hoping B was the higher order expression. */
ob = express_from_1 (a, ob, mult);
if (ob == NULL_RTX)
@@ -6921,25 +6947,36 @@ static rtx
combine_givs_p (g1, g2)
struct induction *g1, *g2;
{
- rtx tem = express_from (g1, g2);
+ rtx comb, ret;
+
+ /* With the introduction of ext dependant givs, we must care for modes.
+ G2 must not use a wider mode than G1. */
+ if (GET_MODE_SIZE (g1->mode) < GET_MODE_SIZE (g2->mode))
+ return NULL_RTX;
+
+ ret = comb = express_from (g1, g2);
+ if (comb == NULL_RTX)
+ return NULL_RTX;
+ if (g1->mode != g2->mode)
+ ret = gen_lowpart (g2->mode, comb);
/* If these givs are identical, they can be combined. We use the results
of express_from because the addends are not in a canonical form, so
rtx_equal_p is a weaker test. */
/* But don't combine a DEST_REG giv with a DEST_ADDR giv; we want the
combination to be the other way round. */
- if (tem == g1->dest_reg
+ if (comb == g1->dest_reg
&& (g1->giv_type == DEST_REG || g2->giv_type == DEST_ADDR))
{
- return g1->dest_reg;
+ return ret;
}
/* If G2 can be expressed as a function of G1 and that function is valid
as an address and no more expensive than using a register for G2,
the expression of G2 in terms of G1 can be used. */
- if (tem != NULL_RTX
+ if (ret != NULL_RTX
&& g2->giv_type == DEST_ADDR
- && memory_address_p (g2->mem_mode, tem)
+ && memory_address_p (g2->mem_mode, ret)
/* ??? Looses, especially with -fforce-addr, where *g2->location
will always be a register, and so anything more complicated
gets discarded. */
@@ -6952,12 +6989,197 @@ combine_givs_p (g1, g2)
#endif
)
{
- return tem;
+ return ret;
}
return NULL_RTX;
}
+/* Check each extension dependant giv in this class to see if its
+ root biv is safe from wrapping in the interior mode, which would
+ make the giv illegal. */
+
+static void
+check_ext_dependant_givs (bl, loop_info)
+ struct iv_class *bl;
+ struct loop_info *loop_info;
+{
+ int ze_ok = 0, se_ok = 0, info_ok = 0;
+ enum machine_mode biv_mode = GET_MODE (bl->biv->src_reg);
+ HOST_WIDE_INT start_val;
+ unsigned HOST_WIDE_INT u_end_val, u_start_val;
+ rtx incr = pc_rtx;
+ struct induction *v;
+
+ /* Make sure the iteration data is available. We must have
+ constants in order to be certain of no overflow. */
+ /* ??? An unknown iteration count with an increment of +-1
+ combined with friendly exit tests of against an invariant
+ value is also ameanable to optimization. Not implemented. */
+ if (loop_info->n_iterations > 0
+ && bl->initial_value
+ && GET_CODE (bl->initial_value) == CONST_INT
+ && (incr = biv_total_increment (bl))
+ && GET_CODE (incr) == CONST_INT
+ /* Make sure the host can represent the arithmetic. */
+ && HOST_BITS_PER_WIDE_INT >= GET_MODE_BITSIZE (biv_mode))
+ {
+ unsigned HOST_WIDE_INT abs_incr, total_incr;
+ HOST_WIDE_INT s_end_val;
+ int neg_incr;
+
+ info_ok = 1;
+ start_val = INTVAL (bl->initial_value);
+ u_start_val = start_val;
+
+ neg_incr = 0, abs_incr = INTVAL (incr);
+ if (INTVAL (incr) < 0)
+ neg_incr = 1, abs_incr = -abs_incr;
+ total_incr = abs_incr * loop_info->n_iterations;
+
+ /* Check for host arithmatic overflow. */
+ if (total_incr / loop_info->n_iterations == abs_incr)
+ {
+ unsigned HOST_WIDE_INT u_max;
+ HOST_WIDE_INT s_max;
+
+ u_end_val = start_val + (neg_incr ? -total_incr : total_incr);
+ s_end_val = u_end_val;
+ u_max = GET_MODE_MASK (biv_mode);
+ s_max = u_max >> 1;
+
+ /* Check zero extension of biv ok. */
+ if (start_val >= 0
+ /* Check for host arithmatic overflow. */
+ && (neg_incr
+ ? u_end_val < u_start_val
+ : u_end_val > u_start_val)
+ /* Check for target arithmetic overflow. */
+ && (neg_incr
+ ? 1 /* taken care of with host overflow */
+ : u_end_val <= u_max))
+ {
+ ze_ok = 1;
+ }
+
+ /* Check sign extension of biv ok. */
+ /* ??? While it is true that overflow with signed and pointer
+ arithmetic is undefined, I fear too many programmers don't
+ keep this fact in mind -- myself included on occasion.
+ So leave alone with the signed overflow optimizations. */
+ if (start_val >= -s_max - 1
+ /* Check for host arithmatic overflow. */
+ && (neg_incr
+ ? s_end_val < start_val
+ : s_end_val > start_val)
+ /* Check for target arithmetic overflow. */
+ && (neg_incr
+ ? s_end_val >= -s_max - 1
+ : s_end_val <= s_max))
+ {
+ se_ok = 1;
+ }
+ }
+ }
+
+ /* Invalidate givs that fail the tests. */
+ for (v = bl->giv; v; v = v->next_iv)
+ if (v->ext_dependant)
+ {
+ enum rtx_code code = GET_CODE (v->ext_dependant);
+ int ok = 0;
+
+ switch (code)
+ {
+ case SIGN_EXTEND:
+ ok = se_ok;
+ break;
+ case ZERO_EXTEND:
+ ok = ze_ok;
+ break;
+
+ case TRUNCATE:
+ /* We don't know whether this value is being used as either
+ signed or unsigned, so to safely truncate we must satisfy
+ both. The initial check here verifies the BIV itself;
+ once that is successful we may check its range wrt the
+ derived GIV. */
+ if (se_ok && ze_ok)
+ {
+ enum machine_mode outer_mode = GET_MODE (v->ext_dependant);
+ unsigned HOST_WIDE_INT max = GET_MODE_MASK (outer_mode) >> 1;
+
+ /* We know from the above that both endpoints are nonnegative,
+ and that there is no wrapping. Verify that both endpoints
+ are within the (signed) range of the outer mode. */
+ if (u_start_val <= max && u_end_val <= max)
+ ok = 1;
+ }
+ break;
+
+ default:
+ abort ();
+ }
+
+ if (ok)
+ {
+ if (loop_dump_stream)
+ {
+ fprintf (loop_dump_stream,
+ "Verified ext dependant giv at %d of reg %d\n",
+ INSN_UID (v->insn), bl->regno);
+ }
+ }
+ else
+ {
+ if (loop_dump_stream)
+ {
+ const char *why;
+
+ if (info_ok)
+ why = "biv iteration values overflowed";
+ else
+ {
+ if (incr == pc_rtx)
+ incr = biv_total_increment (bl);
+ if (incr == const1_rtx)
+ why = "biv iteration info incomplete; incr by 1";
+ else
+ why = "biv iteration info incomplete";
+ }
+
+ fprintf (loop_dump_stream,
+ "Failed ext dependant giv at %d, %s\n",
+ INSN_UID (v->insn), why);
+ }
+ v->ignore = 1;
+ }
+ }
+}
+
+/* Generate a version of VALUE in a mode appropriate for initializing V. */
+
+rtx
+extend_value_for_giv (v, value)
+ struct induction *v;
+ rtx value;
+{
+ rtx ext_dep = v->ext_dependant;
+
+ if (! ext_dep)
+ return value;
+
+ /* Recall that check_ext_dependant_givs verified that the known bounds
+ of a biv did not overflow or wrap with respect to the extension for
+ the giv. Therefore, constants need no additional adjustment. */
+ if (CONSTANT_P (value) && GET_MODE (value) == VOIDmode)
+ return value;
+
+ /* Otherwise, we must adjust the value to compensate for the
+ differing modes of the biv and the giv. */
+ return gen_rtx_fmt_e (GET_CODE (ext_dep), GET_MODE (ext_dep), value);
+}
+
struct combine_givs_stats
{
int giv_number;
@@ -6987,7 +7209,8 @@ cmp_combine_givs_stats (xp, yp)
giv. Also, update BENEFIT and related fields for cost/benefit analysis. */
static void
-combine_givs (bl)
+combine_givs (regs, bl)
+ struct loop_regs *regs;
struct iv_class *bl;
{
/* Additional benefit to add for being combined multiple times. */
@@ -7029,7 +7252,8 @@ combine_givs (bl)
DEST_ADDR targets on hosts with reg+reg addressing, though it can
be seen elsewhere as well. */
if (g1->giv_type == DEST_REG
- && (single_use = VARRAY_RTX (reg_single_usage, REGNO (g1->dest_reg)))
+ && (single_use = VARRAY_RTX (regs->single_usage,
+ REGNO (g1->dest_reg)))
&& single_use != const0_rtx)
continue;
@@ -7181,10 +7405,12 @@ cmp_recombine_givs_stats (xp, yp)
Only consider givs that belong to BIV.
Return the total number of lifetime ends that have been found. */
static int
-find_life_end (x, stats, insn, biv)
+find_life_end (loop, x, stats, insn, biv)
+ const struct loop *loop;
rtx x, insn, biv;
struct recombine_givs_stats *stats;
{
+ struct loop_ivs *ivs = LOOP_IVS (loop);
enum rtx_code code;
const char *fmt;
int i, j;
@@ -7199,9 +7425,9 @@ find_life_end (x, stats, insn, biv)
if (GET_CODE (reg) == REG)
{
int regno = REGNO (reg);
- struct induction *v = REG_IV_INFO (regno);
+ struct induction *v = REG_IV_INFO (ivs, regno);
- if (REG_IV_TYPE (regno) == GENERAL_INDUCT
+ if (REG_IV_TYPE (ivs, regno) == GENERAL_INDUCT
&& ! v->ignore
&& v->src_reg == biv
&& stats[v->ix].end_luid <= 0)
@@ -7214,21 +7440,22 @@ find_life_end (x, stats, insn, biv)
if (stats[v->ix].end_luid == 0)
{
stats[v->ix].end_luid = stats[v->ix].start_luid;
- return 1 + find_life_end (SET_SRC (x), stats, insn, biv);
+ return 1 + find_life_end (loop, SET_SRC (x), stats,
+ insn, biv);
}
else if (stats[v->ix].start_luid == INSN_LUID (insn))
stats[v->ix].end_luid = 0;
}
- return find_life_end (SET_SRC (x), stats, insn, biv);
+ return find_life_end (loop, SET_SRC (x), stats, insn, biv);
}
break;
}
case REG:
{
int regno = REGNO (x);
- struct induction *v = REG_IV_INFO (regno);
+ struct induction *v = REG_IV_INFO (ivs, regno);
- if (REG_IV_TYPE (regno) == GENERAL_INDUCT
+ if (REG_IV_TYPE (ivs, regno) == GENERAL_INDUCT
&& ! v->ignore
&& v->src_reg == biv
&& stats[v->ix].end_luid == 0)
@@ -7253,11 +7480,11 @@ find_life_end (x, stats, insn, biv)
for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--)
{
if (fmt[i] == 'e')
- retval += find_life_end (XEXP (x, i), stats, insn, biv);
+ retval += find_life_end (loop, XEXP (x, i), stats, insn, biv);
else if (fmt[i] == 'E')
for (j = XVECLEN (x, i) - 1; j >= 0; j--)
- retval += find_life_end (XVECEXP (x, i, j), stats, insn, biv);
+ retval += find_life_end (loop, XVECEXP (x, i, j), stats, insn, biv);
}
return retval;
}
@@ -7272,6 +7499,7 @@ recombine_givs (loop, bl, unroll_p)
struct iv_class *bl;
int unroll_p;
{
+ struct loop_regs *regs = LOOP_REGS (loop);
struct induction *v, **giv_array, *last_giv;
struct recombine_givs_stats *stats;
int giv_count;
@@ -7399,7 +7627,7 @@ recombine_givs (loop, bl, unroll_p)
else
{
int regno = REGNO (v->dest_reg);
- int count = VARRAY_INT (n_times_set, regno) - 1;
+ int count = VARRAY_INT (regs->n_times_set, regno) - 1;
rtx p = v->insn;
/* Find the first insn that sets the giv, so that we can verify
@@ -7446,7 +7674,8 @@ recombine_givs (loop, bl, unroll_p)
p = PREV_INSN (p);
if (! INSN_P (p))
continue;
- ends_need_computing -= find_life_end (PATTERN (p), stats, p, biv);
+ ends_need_computing -= find_life_end (loop, PATTERN (p),
+ stats, p, biv);
}
while (ends_need_computing);
}
@@ -7755,6 +7984,9 @@ check_dbra_loop (loop, insn_count)
struct loop *loop;
int insn_count;
{
+ struct loop_info *loop_info = LOOP_INFO (loop);
+ struct loop_regs *regs = LOOP_REGS (loop);
+ struct loop_ivs *ivs = LOOP_IVS (loop);
struct iv_class *bl;
rtx reg;
rtx jump_label;
@@ -7769,7 +8001,6 @@ check_dbra_loop (loop, insn_count)
int compare_and_branch;
rtx loop_start = loop->start;
rtx loop_end = loop->end;
- struct loop_info *loop_info = LOOP_INFO (loop);
/* If last insn is a conditional branch, and the insn before tests a
register value, try to optimize it. Otherwise, we can't do anything. */
@@ -7802,7 +8033,7 @@ check_dbra_loop (loop, insn_count)
rtx jump1;
if ((jump1 = prev_nonnote_insn (first_compare)) != loop->cont)
if (GET_CODE (jump1) == JUMP_INSN)
- return 0;
+ return 0;
}
/* Check all of the bivs to see if the compare uses one of them.
@@ -7810,7 +8041,7 @@ check_dbra_loop (loop, insn_count)
it will be zero on the last iteration. Also skip if the biv is
used between its update and the test insn. */
- for (bl = loop_iv_list; bl; bl = bl->next)
+ for (bl = ivs->loop_iv_list; bl; bl = bl->next)
{
if (bl->biv_count == 1
&& ! bl->biv->maybe_multiple
@@ -7927,10 +8158,9 @@ check_dbra_loop (loop, insn_count)
that has more than one usage, then the biv has uses
other than counting since it's used to derive a value
that is used more than one time. */
- int note_set_pseudo_multiple_uses_retval = 0;
note_stores (PATTERN (p), note_set_pseudo_multiple_uses,
- &note_set_pseudo_multiple_uses_retval);
- if (note_set_pseudo_multiple_uses_retval)
+ regs);
+ if (regs->multiple_uses)
{
no_use_except_counting = 0;
break;
@@ -7947,7 +8177,7 @@ check_dbra_loop (loop, insn_count)
if (no_use_except_counting)
/* No need to worry about MEMs. */
;
- else if (num_mem_sets <= 1)
+ else if (loop_info->num_mem_sets <= 1)
{
for (p = loop_start; p != loop_end; p = NEXT_INSN (p))
if (INSN_P (p))
@@ -7959,15 +8189,15 @@ check_dbra_loop (loop, insn_count)
This would work if the source was invariant also, however, in that
case, the insn should have been moved out of the loop. */
- if (num_mem_sets == 1)
+ if (loop_info->num_mem_sets == 1)
{
struct induction *v;
reversible_mem_store
- = (! unknown_address_altered
- && ! unknown_constant_address_altered
+ = (! loop_info->unknown_address_altered
+ && ! loop_info->unknown_constant_address_altered
&& ! loop_invariant_p (loop,
- XEXP (XEXP (loop_store_mems, 0),
+ XEXP (XEXP (loop_info->store_mems, 0),
0)));
/* If the store depends on a register that is set after the
@@ -7977,8 +8207,9 @@ check_dbra_loop (loop, insn_count)
{
if (v->giv_type == DEST_REG
&& reg_mentioned_p (v->dest_reg,
- PATTERN (first_loop_store_insn))
- && loop_insn_first_p (first_loop_store_insn, v->insn))
+ PATTERN (loop_info->first_loop_store_insn))
+ && loop_insn_first_p (loop_info->first_loop_store_insn,
+ v->insn))
reversible_mem_store = 0;
}
}
@@ -7998,9 +8229,9 @@ check_dbra_loop (loop, insn_count)
&& ! loop_info->has_call
&& ! loop_info->has_volatile
&& reversible_mem_store
- && (bl->giv_count + bl->biv_count + num_mem_sets
- + num_movables + compare_and_branch == insn_count)
- && (bl == loop_iv_list && bl->next == 0))
+ && (bl->giv_count + bl->biv_count + loop_info->num_mem_sets
+ + the_movables.num + compare_and_branch == insn_count)
+ && (bl == ivs->loop_iv_list && bl->next == 0))
|| no_use_except_counting)
{
rtx tem;
@@ -8150,7 +8381,7 @@ check_dbra_loop (loop, insn_count)
jump_label = XEXP (SET_SRC (PATTERN (PREV_INSN (loop_end))), 1);
if (jump_label == pc_rtx)
jump_label = XEXP (SET_SRC (PATTERN (PREV_INSN (loop_end))), 2);
- new_add_val = GEN_INT (- INTVAL (bl->biv->add_val));
+ new_add_val = GEN_INT (-INTVAL (bl->biv->add_val));
/* Set start_value; if this is not a CONST_INT, we need
to generate a SUB.
@@ -8234,7 +8465,7 @@ check_dbra_loop (loop, insn_count)
/* Inc LABEL_NUSES so that delete_insn will
not delete the label. */
- LABEL_NUSES (XEXP (jump_label, 0)) ++;
+ LABEL_NUSES (XEXP (jump_label, 0))++;
/* Emit an insn after the end of the loop to set the biv's
proper exit value if it is used anywhere outside the loop. */
@@ -8299,9 +8530,9 @@ check_dbra_loop (loop, insn_count)
REG_EQUAL notes should still be correct. */
if (! set
|| GET_CODE (SET_DEST (set)) != REG
- || (size_t) REGNO (SET_DEST (set)) >= reg_iv_type->num_elements
- || REG_IV_TYPE (REGNO (SET_DEST (set))) != GENERAL_INDUCT
- || REG_IV_INFO (REGNO (SET_DEST (set)))->src_reg != bl->biv->src_reg)
+ || (size_t) REGNO (SET_DEST (set)) >= ivs->reg_iv_type->num_elements
+ || REG_IV_TYPE (ivs, REGNO (SET_DEST (set))) != GENERAL_INDUCT
+ || REG_IV_INFO (ivs, REGNO (SET_DEST (set)))->src_reg != bl->biv->src_reg)
for (pnote = &REG_NOTES (p); *pnote;)
{
if (REG_NOTE_KIND (*pnote) == REG_EQUAL
@@ -8352,6 +8583,7 @@ maybe_eliminate_biv (loop, bl, eliminate_p, threshold, insn_count)
int eliminate_p;
int threshold, insn_count;
{
+ struct loop_ivs *ivs = LOOP_IVS (loop);
rtx reg = bl->biv->dest_reg;
rtx loop_start = loop->start;
rtx loop_end = loop->end;
@@ -8380,8 +8612,8 @@ maybe_eliminate_biv (loop, bl, eliminate_p, threshold, insn_count)
unsigned int regno = REGNO (SET_DEST (set));
if (regno < max_reg_before_loop
- && REG_IV_TYPE (regno) == GENERAL_INDUCT
- && REG_IV_INFO (regno)->src_reg == bl->biv->src_reg)
+ && REG_IV_TYPE (ivs, regno) == GENERAL_INDUCT
+ && REG_IV_INFO (ivs, regno)->src_reg == bl->biv->src_reg)
p = last;
}
}
@@ -8767,7 +8999,7 @@ maybe_eliminate_biv_1 (loop, x, insn, bl, eliminate_p, where)
#if 0
/* Otherwise the reg compared with had better be a biv. */
if (GET_CODE (arg) != REG
- || REG_IV_TYPE (REGNO (arg)) != BASIC_INDUCT)
+ || REG_IV_TYPE (ivs, REGNO (arg)) != BASIC_INDUCT)
return 0;
/* Look for a pair of givs, one for each biv,
@@ -8779,7 +9011,7 @@ maybe_eliminate_biv_1 (loop, x, insn, bl, eliminate_p, where)
if (v->ignore || v->maybe_dead || v->mode != mode)
continue;
- for (tv = reg_biv_class[REGNO (arg)]->giv; tv; tv = tv->next_iv)
+ for (tv = ivs->reg_biv_class[REGNO (arg)]->giv; tv; tv = tv->next_iv)
if (! tv->ignore && ! tv->maybe_dead
&& rtx_equal_p (tv->mult_val, v->mult_val)
&& rtx_equal_p (tv->add_val, v->add_val)
@@ -8869,14 +9101,15 @@ record_initial (dest, set, data)
rtx set;
void *data ATTRIBUTE_UNUSED;
{
+ struct loop_ivs *ivs = (struct loop_ivs *) data;
struct iv_class *bl;
if (GET_CODE (dest) != REG
|| REGNO (dest) >= max_reg_before_loop
- || REG_IV_TYPE (REGNO (dest)) != BASIC_INDUCT)
+ || REG_IV_TYPE (ivs, REGNO (dest)) != BASIC_INDUCT)
return;
- bl = reg_biv_class[REGNO (dest)];
+ bl = ivs->reg_biv_class[REGNO (dest)];
/* If this is the first set found, record it. */
if (bl->init_insn == 0)
@@ -8979,7 +9212,7 @@ canonicalize_condition (insn, cond, reverse, earliest, want_reg)
in cse.c */
while (GET_RTX_CLASS (code) == '<'
- && op1 == CONST0_RTX (GET_MODE (op0))
+ && op1 == CONST0_RTX (GET_MODE (op0))
&& op0 != want_reg)
{
/* Set non-zero when we find something of interest. */
@@ -9271,6 +9504,7 @@ insert_loop_mem (mem, data)
rtx *mem;
void *data ATTRIBUTE_UNUSED;
{
+ struct loop_info *loop_info = data;
int i;
rtx m = *mem;
@@ -9301,46 +9535,46 @@ insert_loop_mem (mem, data)
}
/* See if we've already seen this MEM. */
- for (i = 0; i < loop_mems_idx; ++i)
- if (rtx_equal_p (m, loop_mems[i].mem))
+ for (i = 0; i < loop_info->mems_idx; ++i)
+ if (rtx_equal_p (m, loop_info->mems[i].mem))
{
- if (GET_MODE (m) != GET_MODE (loop_mems[i].mem))
+ if (GET_MODE (m) != GET_MODE (loop_info->mems[i].mem))
/* The modes of the two memory accesses are different. If
this happens, something tricky is going on, and we just
don't optimize accesses to this MEM. */
- loop_mems[i].optimize = 0;
+ loop_info->mems[i].optimize = 0;
return 0;
}
/* Resize the array, if necessary. */
- if (loop_mems_idx == loop_mems_allocated)
+ if (loop_info->mems_idx == loop_info->mems_allocated)
{
- if (loop_mems_allocated != 0)
- loop_mems_allocated *= 2;
+ if (loop_info->mems_allocated != 0)
+ loop_info->mems_allocated *= 2;
else
- loop_mems_allocated = 32;
+ loop_info->mems_allocated = 32;
- loop_mems = (loop_mem_info*)
- xrealloc (loop_mems,
- loop_mems_allocated * sizeof (loop_mem_info));
+ loop_info->mems = (loop_mem_info *)
+ xrealloc (loop_info->mems,
+ loop_info->mems_allocated * sizeof (loop_mem_info));
}
/* Actually insert the MEM. */
- loop_mems[loop_mems_idx].mem = m;
+ loop_info->mems[loop_info->mems_idx].mem = m;
/* We can't hoist this MEM out of the loop if it's a BLKmode MEM
because we can't put it in a register. We still store it in the
table, though, so that if we see the same address later, but in a
non-BLK mode, we'll not think we can optimize it at that point. */
- loop_mems[loop_mems_idx].optimize = (GET_MODE (m) != BLKmode);
- loop_mems[loop_mems_idx].reg = NULL_RTX;
- ++loop_mems_idx;
+ loop_info->mems[loop_info->mems_idx].optimize = (GET_MODE (m) != BLKmode);
+ loop_info->mems[loop_info->mems_idx].reg = NULL_RTX;
+ ++loop_info->mems_idx;
return 0;
}
-/* Like load_mems, but also ensures that SET_IN_LOOP,
- MAY_NOT_OPTIMIZE, REG_SINGLE_USAGE, and INSN_COUNT have the correct
+/* Like load_mems, but also ensures that REGS->SET_IN_LOOP,
+ REGS->MAY_NOT_OPTIMIZE, REGS->SINGLE_USAGE, and INSN_COUNT have the correct
values after load_mems. */
static void
@@ -9348,11 +9582,12 @@ load_mems_and_recount_loop_regs_set (loop, insn_count)
const struct loop *loop;
int *insn_count;
{
+ struct loop_regs *regs = LOOP_REGS (loop);
int nregs = max_reg_num ();
load_mems (loop);
- /* Recalculate set_in_loop and friends since load_mems may have
+ /* Recalculate regs->set_in_loop and friends since load_mems may have
created new registers. */
if (max_reg_num () > nregs)
{
@@ -9362,26 +9597,26 @@ load_mems_and_recount_loop_regs_set (loop, insn_count)
old_nregs = nregs;
nregs = max_reg_num ();
- if ((unsigned) nregs > set_in_loop->num_elements)
+ if ((unsigned) nregs > regs->set_in_loop->num_elements)
{
/* Grow all the arrays. */
- VARRAY_GROW (set_in_loop, nregs);
- VARRAY_GROW (n_times_set, nregs);
- VARRAY_GROW (may_not_optimize, nregs);
- VARRAY_GROW (reg_single_usage, nregs);
+ VARRAY_GROW (regs->set_in_loop, nregs);
+ VARRAY_GROW (regs->n_times_set, nregs);
+ VARRAY_GROW (regs->may_not_optimize, nregs);
+ VARRAY_GROW (regs->single_usage, nregs);
}
/* Clear the arrays */
- bzero ((char *) &set_in_loop->data, nregs * sizeof (int));
- bzero ((char *) &may_not_optimize->data, nregs * sizeof (char));
- bzero ((char *) &reg_single_usage->data, nregs * sizeof (rtx));
+ bzero ((char *) &regs->set_in_loop->data, nregs * sizeof (int));
+ bzero ((char *) &regs->may_not_optimize->data, nregs * sizeof (char));
+ bzero ((char *) &regs->single_usage->data, nregs * sizeof (rtx));
- count_loop_regs_set (loop, may_not_optimize, reg_single_usage,
+ count_loop_regs_set (loop, regs->may_not_optimize, regs->single_usage,
insn_count, nregs);
for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
{
- VARRAY_CHAR (may_not_optimize, i) = 1;
- VARRAY_INT (set_in_loop, i) = 1;
+ VARRAY_CHAR (regs->may_not_optimize, i) = 1;
+ VARRAY_INT (regs->set_in_loop, i) = 1;
}
#ifdef AVOID_CCMODE_COPIES
@@ -9389,12 +9624,12 @@ load_mems_and_recount_loop_regs_set (loop, insn_count)
create CCmode register copies. */
for (i = max_reg_num () - 1; i >= FIRST_PSEUDO_REGISTER; i--)
if (GET_MODE_CLASS (GET_MODE (regno_reg_rtx[i])) == MODE_CC)
- VARRAY_CHAR (may_not_optimize, i) = 1;
+ VARRAY_CHAR (regs->may_not_optimize, i) = 1;
#endif
- /* Set n_times_set for the new registers. */
- bcopy ((char *) (&set_in_loop->data.i[0] + old_nregs),
- (char *) (&n_times_set->data.i[0] + old_nregs),
+ /* Set regs->n_times_set for the new registers. */
+ bcopy ((char *) (&regs->set_in_loop->data.i[0] + old_nregs),
+ (char *) (&regs->n_times_set->data.i[0] + old_nregs),
(nregs - old_nregs) * sizeof (int));
}
}
@@ -9405,6 +9640,8 @@ static void
load_mems (loop)
const struct loop *loop;
{
+ struct loop_info *loop_info = LOOP_INFO (loop);
+ struct loop_regs *regs = LOOP_REGS (loop);
int maybe_never = 0;
int i;
rtx p;
@@ -9414,7 +9651,7 @@ load_mems (loop)
int next_maybe_never = 0;
int last_max_reg = max_reg_num ();
- if (loop_mems_idx == 0)
+ if (loop_info->mems_idx == 0)
return;
/* Find start of the extended basic block that enters the loop. */
@@ -9463,23 +9700,23 @@ load_mems (loop)
}
/* Actually move the MEMs. */
- for (i = 0; i < loop_mems_idx; ++i)
+ for (i = 0; i < loop_info->mems_idx; ++i)
{
regset_head load_copies;
regset_head store_copies;
int written = 0;
rtx reg;
- rtx mem = loop_mems[i].mem;
+ rtx mem = loop_info->mems[i].mem;
rtx mem_list_entry;
if (MEM_VOLATILE_P (mem)
|| loop_invariant_p (loop, XEXP (mem, 0)) != 1)
/* There's no telling whether or not MEM is modified. */
- loop_mems[i].optimize = 0;
+ loop_info->mems[i].optimize = 0;
/* Go through the MEMs written to in the loop to see if this
one is aliased by one of them. */
- mem_list_entry = loop_store_mems;
+ mem_list_entry = loop_info->store_mems;
while (mem_list_entry)
{
if (rtx_equal_p (mem, XEXP (mem_list_entry, 0)))
@@ -9488,7 +9725,7 @@ load_mems (loop)
mem, rtx_varies_p))
{
/* MEM is indeed aliased by this store. */
- loop_mems[i].optimize = 0;
+ loop_info->mems[i].optimize = 0;
break;
}
mem_list_entry = XEXP (mem_list_entry, 1);
@@ -9496,27 +9733,27 @@ load_mems (loop)
if (flag_float_store && written
&& GET_MODE_CLASS (GET_MODE (mem)) == MODE_FLOAT)
- loop_mems[i].optimize = 0;
+ loop_info->mems[i].optimize = 0;
/* If this MEM is written to, we must be sure that there
are no reads from another MEM that aliases this one. */
- if (loop_mems[i].optimize && written)
+ if (loop_info->mems[i].optimize && written)
{
int j;
- for (j = 0; j < loop_mems_idx; ++j)
+ for (j = 0; j < loop_info->mems_idx; ++j)
{
if (j == i)
continue;
else if (true_dependence (mem,
VOIDmode,
- loop_mems[j].mem,
+ loop_info->mems[j].mem,
rtx_varies_p))
{
- /* It's not safe to hoist loop_mems[i] out of
+ /* It's not safe to hoist loop_info->mems[i] out of
the loop because writes to it might not be
- seen by reads from loop_mems[j]. */
- loop_mems[i].optimize = 0;
+ seen by reads from loop_info->mems[j]. */
+ loop_info->mems[i].optimize = 0;
break;
}
}
@@ -9525,9 +9762,9 @@ load_mems (loop)
if (maybe_never && may_trap_p (mem))
/* We can't access the MEM outside the loop; it might
cause a trap that wouldn't have happened otherwise. */
- loop_mems[i].optimize = 0;
+ loop_info->mems[i].optimize = 0;
- if (!loop_mems[i].optimize)
+ if (!loop_info->mems[i].optimize)
/* We thought we were going to lift this MEM out of the
loop, but later discovered that we could not. */
continue;
@@ -9541,7 +9778,7 @@ load_mems (loop)
user-variable nor used in the loop test. */
reg = gen_reg_rtx (GET_MODE (mem));
REG_USERVAR_P (reg) = 1;
- loop_mems[i].reg = reg;
+ loop_info->mems[i].reg = reg;
/* Now, replace all references to the MEM with the
corresponding pesudos. */
@@ -9550,8 +9787,6 @@ load_mems (loop)
p != NULL_RTX;
p = next_insn_in_loop (loop, p))
{
- rtx_and_int ri;
-
if (INSN_P (p))
{
rtx set;
@@ -9567,28 +9802,28 @@ load_mems (loop)
&& GET_CODE (SET_DEST (set)) == REG
&& REGNO (SET_DEST (set)) >= FIRST_PSEUDO_REGISTER
&& REGNO (SET_DEST (set)) < last_max_reg
- && VARRAY_INT (n_times_set, REGNO (SET_DEST (set))) == 1
+ && VARRAY_INT (regs->n_times_set,
+ REGNO (SET_DEST (set))) == 1
&& rtx_equal_p (SET_SRC (set), mem))
SET_REGNO_REG_SET (&load_copies, REGNO (SET_DEST (set)));
- /* See if this copies the mem from a register that isn't
+ /* See if this copies the mem from a register that isn't
modified afterwards. We'll try to remove the
redundant copy later on by doing a little register
renaming and copy propagation. This will help
to untangle things for the BIV detection code. */
- if (set
- && ! maybe_never
- && GET_CODE (SET_SRC (set)) == REG
- && REGNO (SET_SRC (set)) >= FIRST_PSEUDO_REGISTER
- && REGNO (SET_SRC (set)) < last_max_reg
- && VARRAY_INT (n_times_set, REGNO (SET_SRC (set))) == 1
- && rtx_equal_p (SET_DEST (set), mem))
- SET_REGNO_REG_SET (&store_copies, REGNO (SET_SRC (set)));
-
- /* Replace the memory reference with the shadow register. */
- ri.r = p;
- ri.i = i;
- for_each_rtx (&p, replace_loop_mem, &ri);
+ if (set
+ && ! maybe_never
+ && GET_CODE (SET_SRC (set)) == REG
+ && REGNO (SET_SRC (set)) >= FIRST_PSEUDO_REGISTER
+ && REGNO (SET_SRC (set)) < last_max_reg
+ && VARRAY_INT (regs->n_times_set, REGNO (SET_SRC (set))) == 1
+ && rtx_equal_p (SET_DEST (set), mem))
+ SET_REGNO_REG_SET (&store_copies, REGNO (SET_SRC (set)));
+
+ /* Replace the memory reference with the shadow register. */
+ replace_loop_mems (p, loop_info->mems[i].mem,
+ loop_info->mems[i].reg);
}
if (GET_CODE (p) == CODE_LABEL
@@ -9598,7 +9833,7 @@ load_mems (loop)
if (! apply_change_group ())
/* We couldn't replace all occurrences of the MEM. */
- loop_mems[i].optimize = 0;
+ loop_info->mems[i].optimize = 0;
else
{
/* Load the memory immediately before LOOP->START, which is
@@ -9792,12 +10027,8 @@ try_copy_prop (loop, replacement, regno)
if (init_insn && insn != init_insn)
{
struct note_reg_stored_arg arg;
- rtx array[3];
- array[0] = reg_rtx;
- array[1] = replacement;
- array[2] = insn;
- for_each_rtx (&insn, replace_loop_reg, array);
+ replace_loop_regs (insn, reg_rtx, replacement);
if (REGNO_LAST_UID (regno) == INSN_UID (insn))
replaced_last = 1;
@@ -9828,7 +10059,6 @@ try_copy_prop (loop, replacement, regno)
}
}
-
/* Try to replace occurrences of pseudo REGNO with REPLACEMENT within
loop LOOP if the order of the sets of these registers can be
swapped. There must be exactly one insn within the loop that sets
@@ -9864,13 +10094,13 @@ try_swap_copy_prop (loop, replacement, regno)
{
rtx prev_insn;
rtx prev_set;
-
+
/* Some DEF-USE info would come in handy here to make this
function more general. For now, just check the previous insn
which is the most likely candidate for setting REGNO. */
-
+
prev_insn = PREV_INSN (insn);
-
+
if (GET_RTX_CLASS (GET_CODE (insn)) == 'i'
&& (prev_set = single_set (prev_insn))
&& GET_CODE (SET_DEST (prev_set)) == REG
@@ -9879,7 +10109,7 @@ try_swap_copy_prop (loop, replacement, regno)
/* We have:
(set (reg regno) (expr))
(set (reg new_regno) (reg regno))
-
+
so try converting this to:
(set (reg new_regno) (expr))
(set (reg regno) (reg new_regno))
@@ -9899,9 +10129,9 @@ try_swap_copy_prop (loop, replacement, regno)
if (apply_change_group ())
{
if (loop_dump_stream)
- fprintf (loop_dump_stream,
- " Swapped set of reg %d at %d with reg %d at %d.\n",
- regno, INSN_UID (insn),
+ fprintf (loop_dump_stream,
+ " Swapped set of reg %d at %d with reg %d at %d.\n",
+ regno, INSN_UID (insn),
new_regno, INSN_UID (prev_insn));
/* Update first use of REGNO. */
@@ -9916,10 +10146,9 @@ try_swap_copy_prop (loop, replacement, regno)
}
}
-
/* Replace MEM with its associated pseudo register. This function is
- called from load_mems via for_each_rtx. DATA is actually an
- rtx_and_int * describing the instruction currently being scanned
+ called from load_mems via for_each_rtx. DATA is actually a pointer
+ to a structure describing the instruction currently being scanned
and the MEM we are currently replacing. */
static int
@@ -9927,9 +10156,7 @@ replace_loop_mem (mem, data)
rtx *mem;
void *data;
{
- rtx_and_int *ri;
- rtx insn;
- int i;
+ loop_replace_args *args = (loop_replace_args *) data;
rtx m = *mem;
if (m == NULL_RTX)
@@ -9950,25 +10177,34 @@ replace_loop_mem (mem, data)
return 0;
}
- ri = (rtx_and_int *) data;
- i = ri->i;
-
- if (!rtx_equal_p (loop_mems[i].mem, m))
+ if (!rtx_equal_p (args->match, m))
/* This is not the MEM we are currently replacing. */
return 0;
- insn = ri->r;
-
/* Actually replace the MEM. */
- validate_change (insn, mem, loop_mems[i].reg, 1);
+ validate_change (args->insn, mem, args->replacement, 1);
return 0;
}
+static void
+replace_loop_mems (insn, mem, reg)
+ rtx insn;
+ rtx mem;
+ rtx reg;
+{
+ loop_replace_args args;
+
+ args.insn = insn;
+ args.match = mem;
+ args.replacement = reg;
+
+ for_each_rtx (&insn, replace_loop_mem, &args);
+}
+
/* Replace one register with another. Called through for_each_rtx; PX points
- to the rtx being scanned. DATA is actually an array of three rtx's; the
- first one is the one to be replaced, and the second one the replacement.
- The third one is the current insn. */
+ to the rtx being scanned. DATA is actually a pointer to
+ a structure of arguments. */
static int
replace_loop_reg (px, data)
@@ -9976,17 +10212,32 @@ replace_loop_reg (px, data)
void *data;
{
rtx x = *px;
- rtx *array = (rtx *) data;
+ loop_replace_args *args = (loop_replace_args *) data;
if (x == NULL_RTX)
return 0;
- if (x == array[0])
- validate_change (array[2], px, array[1], 1);
+ if (x == args->match)
+ validate_change (args->insn, px, args->replacement, 1);
return 0;
}
+static void
+replace_loop_regs (insn, reg, replacement)
+ rtx insn;
+ rtx reg;
+ rtx replacement;
+{
+ loop_replace_args args;
+
+ args.insn = insn;
+ args.match = reg;
+ args.replacement = replacement;
+
+ for_each_rtx (&insn, replace_loop_reg, &args);
+}
+
/* Replace occurrences of the old exit label for the loop with the new
one. DATA is an rtx_pair containing the old and new labels,
respectively. */
@@ -10028,7 +10279,8 @@ replace_label (x, data)
#define LOOP_INSN_UID(INSN) ((INSN) ? INSN_UID (INSN) : -1)
-static void loop_dump_aux (loop, file, verbose)
+static void
+loop_dump_aux (loop, file, verbose)
const struct loop *loop;
FILE *file;
int verbose;
@@ -10044,7 +10296,7 @@ static void loop_dump_aux (loop, file, verbose)
|| GET_CODE (PREV_INSN (loop->first->head)) != NOTE
|| NOTE_LINE_NUMBER (PREV_INSN (loop->first->head))
!= NOTE_INSN_LOOP_BEG)
- fprintf (file, ";; No NOTE_INSN_LOOP_BEG at %d\n",
+ fprintf (file, ";; No NOTE_INSN_LOOP_BEG at %d\n",
INSN_UID (PREV_INSN (loop->first->head)));
if (! NEXT_INSN (loop->last->end)
|| GET_CODE (NEXT_INSN (loop->last->end)) != NOTE
@@ -10069,7 +10321,7 @@ static void loop_dump_aux (loop, file, verbose)
LOOP_INSN_UID (loop->end));
fprintf (file, ";; top %d (%d), scan start %d (%d)\n",
LOOP_BLOCK_NUM (loop->top),
- LOOP_INSN_UID (loop->top) ,
+ LOOP_INSN_UID (loop->top),
LOOP_BLOCK_NUM (loop->scan_start),
LOOP_INSN_UID (loop->scan_start));
fprintf (file, ";; exit_count %d", loop->exit_count);
@@ -10083,7 +10335,7 @@ static void loop_dump_aux (loop, file, verbose)
}
}
fputs ("\n", file);
-
+
/* This can happen when a marked loop appears as two nested loops,
say from while (a || b) {}. The inner loop won't match
the loop markers but the outer one will. */
@@ -10091,7 +10343,6 @@ static void loop_dump_aux (loop, file, verbose)
fprintf (file, ";; NOTE_INSN_LOOP_CONT not in loop latch\n");
}
}
-
/* Call this function from the debugger to dump LOOP. */
diff --git a/gcc/loop.h b/gcc/loop.h
index 7d4c7cea41a..15c0c3c9cc0 100644
--- a/gcc/loop.h
+++ b/gcc/loop.h
@@ -25,9 +25,14 @@ Boston, MA 02111-1307, USA. */
#define LOOP_UNROLL 1
#define LOOP_BCT 2
-
/* Get the loop info pointer of a loop. */
-#define LOOP_INFO(LOOP) ((struct loop_info *) (LOOP)->aux)
+#define LOOP_INFO(LOOP) ((struct loop_info *) (LOOP)->aux)
+
+/* Get a pointer to the loop registers structure. */
+#define LOOP_REGS(LOOP) (&LOOP_INFO (loop)->regs)
+
+/* Get a pointer to the loop induction variables structure. */
+#define LOOP_IVS(LOOP) (&LOOP_INFO (loop)->ivs)
/* Get the luid of an insn. Catch the error of trying to reference the LUID
of an insn added during loop, since these don't have LUIDs. */
@@ -46,7 +51,11 @@ Boston, MA 02111-1307, USA. */
/* An enum for the two different types of givs, those that are used
as memory addresses and those that are calculated into registers. */
-enum g_types { DEST_ADDR, DEST_REG };
+enum g_types
+{
+ DEST_ADDR,
+ DEST_REG
+};
/* A `struct induction' is created for every instruction that sets
an induction variable (either a biv or a giv). */
@@ -68,7 +77,7 @@ struct induction
/* For a biv, this is the place where add_val
was found. */
enum machine_mode mode; /* The mode of this biv or giv */
- enum machine_mode mem_mode; /* For DEST_ADDR, mode of the memory object. */
+ enum machine_mode mem_mode; /* For DEST_ADDR, mode of the memory object. */
rtx mult_val; /* Multiplicative factor for src_reg. */
rtx add_val; /* Additive constant for that product. */
int benefit; /* Gain from eliminating this insn. */
@@ -96,25 +105,27 @@ struct induction
unsigned always_executed : 1; /* 1 if this set occurs each iteration. */
unsigned maybe_multiple : 1; /* Only used for a biv and 1 if this biv
update may be done multiple times per
- iteration. */
+ iteration. */
unsigned cant_derive : 1; /* For giv's, 1 if this giv cannot derive
another giv. This occurs in many cases
where a giv's lifetime spans an update to
- a biv. */
+ a biv. */
unsigned maybe_dead : 1; /* 1 if this giv might be dead. In that case,
we won't use it to eliminate a biv, it
- would probably lose. */
+ would probably lose. */
unsigned auto_inc_opt : 1; /* 1 if this giv had its increment output next
- to it to try to form an auto-inc address. */
+ to it to try to form an auto-inc address. */
unsigned unrolled : 1; /* 1 if new register has been allocated and
initialized in unrolled loop. */
unsigned shared : 1;
- unsigned no_const_addval : 1; /* 1 if add_val does not contain a const. */
+ unsigned no_const_addval : 1; /* 1 if add_val does not contain a const. */
int lifetime; /* Length of life of this giv */
rtx derive_adjustment; /* If nonzero, is an adjustment to be
subtracted from add_val when this giv
derives another. This occurs when the
- giv spans a biv update by incrementation. */
+ giv spans a biv update by incrementation. */
+ rtx ext_dependant; /* If nonzero, is a sign or zero extension
+ if a biv on which this giv is dependant. */
struct induction *next_iv; /* For givs, links together all givs that are
based on the same biv. For bivs, links
together all biv entries that refer to the
@@ -127,7 +138,7 @@ struct induction
HOST_WIDE_INT const_adjust; /* Used by loop unrolling, when an address giv
is split, and a constant is eliminated from
the address, the -constant is stored here
- for later use. */
+ for later use. */
int ix; /* Used by recombine_givs, as n index into
the stats array. */
struct induction *same_insn; /* If there are multiple identical givs in
@@ -135,12 +146,13 @@ struct induction
field set, and they all point to the giv
that doesn't have this field set. */
rtx last_use; /* For a giv made from a biv increment, this is
- a substitute for the lifetime information. */
+ a substitute for the lifetime information. */
};
/* A `struct iv_class' is created for each biv. */
-struct iv_class {
+struct iv_class
+{
unsigned int regno; /* Pseudo reg which is the biv. */
int biv_count; /* Number of insns setting this reg. */
struct induction *biv; /* List of all insns that set this reg. */
@@ -153,17 +165,88 @@ struct iv_class {
rtx initial_value; /* Value of reg at loop start */
rtx initial_test; /* Test performed on BIV before loop */
struct iv_class *next; /* Links all class structures together */
- rtx init_insn; /* insn which initializes biv, 0 if none. */
- rtx init_set; /* SET of INIT_INSN, if any. */
+ rtx init_insn; /* insn which initializes biv, 0 if none. */
+ rtx init_set; /* SET of INIT_INSN, if any. */
unsigned incremented : 1; /* 1 if somewhere incremented/decremented */
- unsigned eliminable : 1; /* 1 if plausible candidate for elimination. */
- unsigned nonneg : 1; /* 1 if we added a REG_NONNEG note for this. */
+ unsigned eliminable : 1; /* 1 if plausible candidate for elimination. */
+ unsigned nonneg : 1; /* 1 if we added a REG_NONNEG note for this. */
unsigned reversed : 1; /* 1 if we reversed the loop that this
- biv controls. */
+ biv controls. */
+};
+
+typedef struct loop_mem_info
+{
+ rtx mem; /* The MEM itself. */
+ rtx reg; /* Corresponding pseudo, if any. */
+ int optimize; /* Nonzero if we can optimize access to this MEM. */
+} loop_mem_info;
+
+struct loop_ivs
+{
+ /* Indexed by register number, indicates whether or not register is
+ an induction variable, and if so what type. */
+ varray_type reg_iv_type;
+
+ /* Indexed by register number, contains pointer to `struct
+ induction' if register is an induction variable. This holds
+ general info for all induction variables. */
+ varray_type reg_iv_info;
+
+ /* Indexed by register number, contains pointer to `struct iv_class'
+ if register is a basic induction variable. This holds info
+ describing the class (a related group) of induction variables
+ that the biv belongs to. */
+ struct iv_class **reg_biv_class;
+
+ /* The head of a list which links together (via the next field)
+ every iv class for the current loop. */
+ struct iv_class *loop_iv_list;
+
+ /* Givs made from biv increments are always splittable for loop
+ unrolling. Since there is no regscan info for them, we have to
+ keep track of them separately. */
+ unsigned int first_increment_giv;
+ unsigned int last_increment_giv;
};
-/* Information required to calculate the number of loop iterations.
- This is set by loop_iterations. */
+struct loop_regs
+{
+ int num;
+
+ /* Indexed by register number, contains the number of times the reg
+ is set during the loop being scanned.
+ During code motion, a negative value indicates a reg that has been
+ made a candidate; in particular -2 means that it is an candidate that
+ we know is equal to a constant and -1 means that it is an candidate
+ not known equal to a constant.
+ After code motion, regs moved have 0 (which is accurate now)
+ while the failed candidates have the original number of times set.
+
+ Therefore, at all times, == 0 indicates an invariant register;
+ < 0 a conditionally invariant one. */
+ varray_type set_in_loop;
+
+ /* Original value of set_in_loop; same except that this value
+ is not set negative for a reg whose sets have been made candidates
+ and not set to 0 for a reg that is moved. */
+ varray_type n_times_set;
+
+ /* Index by register number, 1 indicates that the register
+ cannot be moved or strength reduced. */
+ varray_type may_not_optimize;
+
+ /* Contains the insn in which a register was used if it was used
+ exactly once; contains const0_rtx if it was used more than once. */
+ varray_type single_usage;
+
+ /* Nonzero means reg N has already been moved out of one loop.
+ This reduces the desire to move it out of another. */
+ char *moved_once;
+
+ int multiple_uses;
+};
+
+/* Information pertaining to a loop. */
struct loop_info
{
@@ -205,11 +288,46 @@ struct loop_info
/* The number of times the loop body was unrolled. */
unsigned int unroll_number;
int used_count_register;
+ /* The loop iterator induction variable. */
+ struct iv_class *iv;
+ /* List of MEMs that are stored in this loop. */
+ rtx store_mems;
+ /* Array of MEMs that are used (read or written) in this loop, but
+ cannot be aliased by anything in this loop, except perhaps
+ themselves. In other words, if mems[i] is altered during
+ the loop, it is altered by an expression that is rtx_equal_p to
+ it. */
+ loop_mem_info *mems;
+ /* The index of the next available slot in MEMS. */
+ int mems_idx;
+ /* The number of elements allocated in MEMS. */
+ int mems_allocated;
+ /* Nonzero if we don't know what MEMs were changed in the current
+ loop. This happens if the loop contains a call (in which case
+ `has_call' will also be set) or if we store into more than
+ NUM_STORES MEMs. */
+ int unknown_address_altered;
+ /* The above doesn't count any readonly memory locations that are
+ stored. This does. */
+ int unknown_constant_address_altered;
+ /* Count of memory write instructions discovered in the loop. */
+ int num_mem_sets;
+ /* The insn where the first of these was found. */
+ rtx first_loop_store_insn;
+ /* The registers used the in loop. */
+ struct loop_regs regs;
+ /* The induction variable information in loop. */
+ struct loop_ivs ivs;
};
/* Definitions used by the basic induction variable discovery code. */
-enum iv_mode { UNKNOWN_INDUCT, BASIC_INDUCT, NOT_BASIC_INDUCT,
- GENERAL_INDUCT };
+enum iv_mode
+{
+ UNKNOWN_INDUCT,
+ BASIC_INDUCT,
+ NOT_BASIC_INDUCT,
+ GENERAL_INDUCT
+};
/* Variables declared in loop.c, but also needed in unroll.c. */
@@ -219,18 +337,10 @@ extern unsigned int max_reg_before_loop;
extern struct loop **uid_loop;
extern FILE *loop_dump_stream;
-extern varray_type reg_iv_type;
-extern varray_type reg_iv_info;
-
-#define REG_IV_TYPE(n) \
- (*(enum iv_mode *) &VARRAY_INT(reg_iv_type, (n)))
-#define REG_IV_INFO(n) \
- (*(struct induction **) &VARRAY_GENERIC_PTR(reg_iv_info, (n)))
-
-extern struct iv_class **reg_biv_class;
-extern struct iv_class *loop_iv_list;
-
-extern unsigned int first_increment_giv, last_increment_giv;
+#define REG_IV_TYPE(ivs, n) \
+ (*(enum iv_mode *) &VARRAY_INT(ivs->reg_iv_type, (n)))
+#define REG_IV_INFO(ivs, n) \
+ (*(struct induction **) &VARRAY_GENERIC_PTR(ivs->reg_iv_info, (n)))
/* Forward declarations for non-static functions declared in loop.c and
unroll.c. */
@@ -238,20 +348,21 @@ int loop_invariant_p PARAMS ((const struct loop *, rtx));
rtx get_condition_for_loop PARAMS ((const struct loop *, rtx));
void emit_iv_add_mult PARAMS ((rtx, rtx, rtx, rtx, rtx));
rtx express_from PARAMS ((struct induction *, struct induction *));
+rtx extend_value_for_giv PARAMS ((struct induction *, rtx));
void unroll_loop PARAMS ((struct loop *, int, rtx, int));
rtx biv_total_increment PARAMS ((struct iv_class *));
unsigned HOST_WIDE_INT loop_iterations PARAMS ((struct loop *));
int precondition_loop_p PARAMS ((const struct loop *,
- rtx *, rtx *, rtx *,
- enum machine_mode *mode));
+ rtx *, rtx *, rtx *,
+ enum machine_mode *mode));
rtx final_biv_value PARAMS ((const struct loop *, struct iv_class *));
rtx final_giv_value PARAMS ((const struct loop *, struct induction *));
void emit_unrolled_add PARAMS ((rtx, rtx, rtx));
int back_branch_in_range_p PARAMS ((const struct loop *, rtx));
int loop_insn_first_p PARAMS ((rtx, rtx));
-typedef rtx (*loop_insn_callback ) PARAMS ((struct loop *, rtx, int, int));
+typedef rtx (*loop_insn_callback) PARAMS ((struct loop *, rtx, int, int));
void for_each_insn_in_loop PARAMS ((struct loop *, loop_insn_callback));
/* Forward declarations for non-static functions declared in doloop.c. */
diff --git a/gcc/md.texi b/gcc/md.texi
index 111b991d45d..3b77c4b4020 100644
--- a/gcc/md.texi
+++ b/gcc/md.texi
@@ -1660,6 +1660,64 @@ Floating point constant that is not a 68881 constant
Floating point constant that can be used by Sun FPA
@end table
+@item Motorola 68HC11 & 68HC12 families---@file{m68hc11.h}
+@table @code
+@item a
+Register 'a'
+
+@item b
+Register 'b'
+
+@item d
+Register 'd'
+
+@item q
+An 8-bit register
+
+@item t
+Temporary soft register _.tmp
+
+@item u
+A soft register _.d1 to _.d31
+
+@item w
+Stack pointer register
+
+@item x
+Register 'x'
+
+@item y
+Register 'y'
+
+@item z
+Pseudo register 'z' (replaced by 'x' or 'y' at the end)
+
+@item A
+An address register: x, y or z
+
+@item B
+An address register: x or y
+
+@item D
+Register pair (x:d) to form a 32-bit value
+
+@item L
+Constants in the range -65536 to 65535
+
+@item M
+Constants whose 16-bit low part is zero
+
+@item N
+Constant integer 1 or -1
+
+@item O
+Constant integer 16
+
+@item P
+Constants in the range -8 to 2
+
+@end table
+
@need 1000
@item SPARC---@file{sparc.h}
@table @code
diff --git a/gcc/optabs.c b/gcc/optabs.c
index 0a64fad7499..07928d7f99d 100644
--- a/gcc/optabs.c
+++ b/gcc/optabs.c
@@ -39,6 +39,7 @@ Boston, MA 02111-1307, USA. */
#include "reload.h"
#include "ggc.h"
#include "real.h"
+#include "defaults.h"
/* Each optab contains info on how this target machine
can perform a particular operation
@@ -4669,9 +4670,6 @@ init_optabs ()
= init_one_libfunc ("cabs");
/* The ffs function operates on `int'. */
-#ifndef INT_TYPE_SIZE
-#define INT_TYPE_SIZE BITS_PER_WORD
-#endif
ffs_optab->handlers[(int) mode_for_size (INT_TYPE_SIZE, MODE_INT, 0)].libfunc
= init_one_libfunc ("ffs");
diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog
index fde837dd179..dd95c61c896 100644
--- a/gcc/po/ChangeLog
+++ b/gcc/po/ChangeLog
@@ -1,3 +1,30 @@
+2000-09-13 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
+
+ * POTFILES.in: Remove objc/objc-parse.c.
+
+2000-09-12 Philipp Thomas <pthomas@suse.de>
+
+ * POTFILES.in: Remove yet more files caught by the new
+ checking target.
+ * gcc.pot: Regenerated.
+ * cat-id-tbl.c: Likewise.
+
+2000-09-12 Philipp Thomas <pthomas@suse.de>
+
+ * Makefile.in.in (stamp-check-pot): Don't use $@ in rule.
+
+2000-09-12 Philipp Thomas <pthomas@suse.de>
+
+ * Makefile.in.in (stamp-check-pot): New target used for
+ checking POTFILES.
+ * gcc.pot: Regenerated.
+ * cat-tbl-id.c: Likewise.
+
+2000-09-12 Philipp Thomas <pthomas@suse.de>
+
+ * POTFILES.in: Remove c-gperf.h, c-iterate.c,
+ cp/hash.h, cp/input.c, c-parse.h and cppulp.c.
+
2000-07-13 Nick Clifton <nickc@cygnus.com>
* POTFILES.in: Add new gcc files.
diff --git a/gcc/po/Makefile.in.in b/gcc/po/Makefile.in.in
index a2b0340ecad..2345b6a5259 100644
--- a/gcc/po/Makefile.in.in
+++ b/gcc/po/Makefile.in.in
@@ -79,9 +79,12 @@ INSTOBJEXT = @INSTOBJEXT@
all: all-@USE_NLS@
-all-yes: $(CATALOGS) @MAINT@ $(srcdir)/cat-id-tbl.c
+all-yes: stamp-check-pot $(CATALOGS) @MAINT@ $(srcdir)/cat-id-tbl.c
all-no:
+stamp-check-pot: $(POTFILES)
+ touch stamp-check-pot
+
$(srcdir)/$(PACKAGE).pot: $(POTFILES)
$(XGETTEXT) --default-domain=$(PACKAGE) --directory=$(top_srcdir) \
--add-comments --keyword=_ --keyword=N_ \
@@ -187,7 +190,7 @@ dvi info tags TAGS ID:
mostlyclean:
rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp
- rm -fr *.o
+ rm -fr *.o stamp-check-pot
clean: mostlyclean
diff --git a/gcc/po/POTFILES.in b/gcc/po/POTFILES.in
index bc099c821c1..1621153ccfe 100644
--- a/gcc/po/POTFILES.in
+++ b/gcc/po/POTFILES.in
@@ -59,13 +59,10 @@ c-common.c
c-common.h
c-convert.c
c-decl.c
-c-gperf.h
-c-iterate.c
c-lang.c
c-lex.c
c-lex.h
c-parse.c
-c-parse.h
c-pragma.c
c-pragma.h
c-semantics.c
@@ -569,10 +566,8 @@ cp/except.c
cp/expr.c
cp/friend.c
cp/g++spec.c
-cp/hash.h
cp/inc/new.h
cp/init.c
-cp/input.c
cp/lang-options.h
cp/lang-specs.h
cp/lex.c
@@ -605,7 +600,6 @@ cpplib.c
cpplib.h
cppmain.c
cppspec.c
-cppulp.c
#crtstuff.c is part of the GCC library
cse.c
cselib.h
@@ -696,7 +690,6 @@ gsyms.h
gsyslimits.h
gthr-dce.h
gthr-posix.h
-gthr-qt.h
gthr-single.h
gthr-solaris.h
gthr-vxworks.h
@@ -753,7 +746,6 @@ mkdeps.h
#mips-tfile.c is not yet internationalized
objc/objc-act.c
objc/objc-act.h
-objc/objc-parse.c
optabs.c
output.h
../libiberty/pexecute.c
@@ -771,8 +763,6 @@ pself2.c
pself3.c
pself4.c
pself5.c
-range.c
-range.h
real.c
real.h
recog.c
@@ -810,7 +800,6 @@ timevar.h
tlink.c
toplev.c
toplev.h
-tradcif.c
tradcpp.c
tree.c
tree.h
diff --git a/gcc/po/cat-id-tbl.c b/gcc/po/cat-id-tbl.c
index 82c4a54f008..ecc4ae2b3f6 100644
--- a/gcc/po/cat-id-tbl.c
+++ b/gcc/po/cat-id-tbl.c
@@ -8,1805 +8,1772 @@
const struct _msg_ent _msg_tbl[] = {
{"", 1},
- {"`%s' attribute directive ignored", 2},
- {"`%s' attribute does not apply to types", 3},
- {"wrong number of arguments specified for `%s' attribute", 4},
- {"`%s' attribute ignored", 5},
- {"unknown machine mode `%s'", 6},
- {"no data type for mode `%s'", 7},
- {"section attribute cannot be specified for local variables", 8},
- {"section of `%s' conflicts with previous declaration", 9},
- {"section attribute not allowed for `%s'", 10},
- {"section attributes are not supported for this target", 11},
- {"requested alignment is not a constant", 12},
- {"requested alignment is not a power of 2", 13},
- {"requested alignment is too large", 14},
- {"alignment may not be specified for `%s'", 15},
- {"argument format specified for non-function `%s'", 16},
- {"unrecognized format specifier", 17},
- {"`%s' is an unrecognized format function type", 18},
- {"format string has invalid operand number", 19},
- {"format string arg follows the args to be formatted", 20},
- {"format string arg not a string type", 21},
- {"args to be formatted is not '...'", 22},
- {"function does not return string type", 23},
- {"`%s' defined both normally and as an alias", 24},
- {"alias arg not a string", 25},
- {"`%s' attribute applies only to functions", 26},
- {"can't set `%s' attribute after definition", 27},
- {"too few arguments for format", 28},
- {"null format string", 29},
- {"format not a string literal, argument types not checked", 30},
- {"zero-length format string", 31},
- {"unterminated format string", 32},
- {"embedded `\\0' in format", 33},
- {"too many arguments for format", 34},
- {"spurious trailing `%%' in format", 35},
- {"ANSI C does not support the strftime `%c' flag", 36},
- {"repeated `%c' flag in format", 37},
- {"ANSI C does not support strftime format width", 38},
- {"multiple E/O modifiers in format", 39},
- {"operand number out of range in format", 40},
- {"use of both ` ' and `+' flags in format", 41},
- {"use of both `0' and `-' flags in format", 42},
- {"field width is not type int (arg %d)", 43},
- {"`.' not followed by `*' or digit in format", 44},
- {"ANSI C does not support the `%c' length modifier", 45},
- {"ANSI C does not support the `ll' length modifier", 46},
- {"ANSI C does not support the `hh' length modifier", 47},
- {"use of `*' and `%c' together in format", 48},
- {"conversion lacks type at end of format", 49},
- {"ANSI C does not support the `%c' format", 50},
- {"unknown conversion type character `%c' in format", 51},
- {"unknown conversion type character 0x%x in format", 52},
- {"ANSI C does not support `%%%c'", 53},
- {"ANSI C does not support `%%O%c'", 54},
- {"width used with `%c' format", 55},
- {"`%%%c' yields only last 2 digits of year", 56},
- {"`%%%c' yields only last 2 digits of year in some locales", 57},
- {"precision used with `%c' format", 58},
- {"`a' flag used with `%c' format", 59},
- {"ANSI C does not support the `a' flag", 60},
- {"no closing `]' for `%%[' format", 61},
- {"suppression of `%c' conversion in format", 62},
- {"flag `%c' used with type `%c'", 63},
- {"`0' flag ignored with precision specifier and `%c' format", 64},
- {"use of `%c' length character with `%c' type character", 65},
- {"format argument is not a pointer (arg %d)", 66},
- {"format argument is not a pointer to a pointer (arg %d)", 67},
- {"writing into constant object (arg %d)", 68},
- {"%s format, %s arg (arg %d)", 69},
- {"overflow in constant expression", 70},
- {"integer overflow in expression", 71},
- {"floating point overflow in expression", 72},
- {"large integer implicitly truncated to unsigned type", 73},
- {"negative integer implicitly converted to unsigned type", 74},
- {"overflow in implicit constant conversion", 75},
- {"expression statement has incomplete type", 76},
- {"case label does not reduce to an integer constant", 77},
- {"invalid truth-value expression", 78},
- {"invalid operands to binary %s", 79},
- {"comparison is always false due to limited range of data type", 80},
- {"comparison is always true due to limited range of data type", 81},
- {"comparison of unsigned expression >= 0 is always true", 82},
- {"comparison of unsigned expression < 0 is always false", 83},
- {"struct type value used where scalar is required", 84},
- {"union type value used where scalar is required", 85},
- {"array type value used where scalar is required", 86},
- {"suggest parentheses around assignment used as truth value", 87},
- {"invalid use of `restrict'", 88},
- {"too few arguments to function `%s'", 89},
- {"too many arguments to function `%s'", 90},
- {"void value not ignored as it ought to be", 91},
- {"conversion to non-scalar type requested", 92},
- {"unknown C standard `%s'", 93},
- {"array `%s' assumed to have one element", 94},
- {"`struct %s' incomplete in scope ending here", 95},
- {"`union %s' incomplete in scope ending here", 96},
- {"`enum %s' incomplete in scope ending here", 97},
- {"label `%s' used but not defined", 98},
- {"label `%s' defined but not used", 99},
- {"shadowing built-in function `%s'", 100},
- {"shadowing library function `%s'", 101},
- {"library function `%s' declared as non-function", 102},
- {"built-in function `%s' declared as non-function", 103},
- {"`%s' redeclared as different kind of symbol", 104},
- {"previous declaration of `%s'", 105},
- {"conflicting types for built-in function `%s'", 106},
- {"conflicting types for `%s'", 107},
+ {"offset outside bounds of constant string", 2},
+ {"__builtin_saveregs not supported by this target", 3},
+ {"argument of `__builtin_args_info' must be constant", 4},
+ {"argument of `__builtin_args_info' out of range", 5},
+ {"missing argument in `__builtin_args_info'", 6},
+ {"`va_start' used in function with fixed args", 7},
+ {"second parameter of `va_start' not last named argument", 8},
+ {"`__builtin_next_arg' called without an argument", 9},
+ {"too many arguments to function `va_start'", 10},
+ {"first argument to `va_arg' not of type `va_list'", 11},
+ {"`%s' is promoted to `%s' when passed through `...'", 12},
+ {"(so you should pass `%s' not `%s' to `va_arg')", 13},
+ {"invalid arg to `__builtin_frame_address'", 14},
+ {"invalid arg to `__builtin_return_address'", 15},
+ {"unsupported arg to `__builtin_frame_address'", 16},
+ {"unsupported arg to `__builtin_return_address'", 17},
+ {"second arg to `__builtin_expect' must be a constant", 18},
+ {"__builtin_longjmp second argument must be 1", 19},
+ {"__builtin_trap not supported by this target", 20},
+ {"built-in function `%s' not currently supported", 21},
+ {"\
+string length `%d' is greater than the minimum length `%d' ISO C%d is \
+required to support", 22},
+ {"`%s' attribute directive ignored", 23},
+ {"`%s' attribute does not apply to types", 24},
+ {"wrong number of arguments specified for `%s' attribute", 25},
+ {"`%s' attribute ignored", 26},
+ {"unknown machine mode `%s'", 27},
+ {"no data type for mode `%s'", 28},
+ {"section attribute cannot be specified for local variables", 29},
+ {"section of `%s' conflicts with previous declaration", 30},
+ {"section attribute not allowed for `%s'", 31},
+ {"section attributes are not supported for this target", 32},
+ {"requested alignment is not a constant", 33},
+ {"requested alignment is not a power of 2", 34},
+ {"requested alignment is too large", 35},
+ {"alignment may not be specified for `%s'", 36},
+ {"argument format specified for non-function `%s'", 37},
+ {"unrecognized format specifier", 38},
+ {"`%s' is an unrecognized format function type", 39},
+ {"format string has invalid operand number", 40},
+ {"format string arg follows the args to be formatted", 41},
+ {"format string arg not a string type", 42},
+ {"args to be formatted is not '...'", 43},
+ {"function does not return string type", 44},
+ {"`%s' defined both normally and as an alias", 45},
+ {"alias arg not a string", 46},
+ {"`%s' attribute applies only to functions", 47},
+ {"can't set `%s' attribute after definition", 48},
+ {"too few arguments for format", 49},
+ {"missing $ operand number in format", 50},
+ {"ISO C does not support %%n$ operand number formats", 51},
+ {"operand number out of range in format", 52},
+ {"format argument %d unused before used argument %d in $-style format", 53},
+ {"unused arguments in $-style format", 54},
+ {"null format string", 55},
+ {"format not a string literal, argument types not checked", 56},
+ {"zero-length format string", 57},
+ {"unterminated format string", 58},
+ {"embedded `\\0' in format", 59},
+ {"too many arguments for format", 60},
+ {"spurious trailing `%%' in format", 61},
+ {"zero width in scanf format", 62},
+ {"ISO C does not support the strftime `%c' flag", 63},
+ {"repeated `%c' flag in format", 64},
+ {"ISO C does not support strftime format width", 65},
+ {"multiple E/O modifiers in format", 66},
+ {"use of both ` ' and `+' flags in format", 67},
+ {"use of both `0' and `-' flags in format", 68},
+ {"ISO C does not support the `'' format flag", 69},
+ {"ISO C does not support the `I' format flag", 70},
+ {"field width is not type int (arg %d)", 71},
+ {"field precision is not type int (arg %d)", 72},
+ {"ISO C does not support the `%s' %s length modifier", 73},
+ {"ISO C89 does not support the `%s' %s length modifier", 74},
+ {"use of `*' and `%s' together in format", 75},
+ {"conversion lacks type at end of format", 76},
+ {"unknown conversion type character `%c' in format", 77},
+ {"unknown conversion type character 0x%x in format", 78},
+ {"ISO C does not support the `%%%c' %s format", 79},
+ {"ISO C89 does not support the `%%%c' %s format", 80},
+ {"ISO C does not support `%%O%c'", 81},
+ {"ISO C89 does not support `%%O%c'", 82},
+ {"ISO C89 does not support `%%E%c'", 83},
+ {"width used with `%c' format", 84},
+ {"`%%%c' yields only last 2 digits of year in some locales", 85},
+ {"`%%%c' yields only last 2 digits of year", 86},
+ {"precision used with `%c' format", 87},
+ {"`a' flag used with `%c' format", 88},
+ {"ISO C does not support the `a' flag", 89},
+ {"no closing `]' for `%%[' format", 90},
+ {"suppression of `%c' conversion in format", 91},
+ {"flag `%c' used with type `%c'", 92},
+ {"`0' flag ignored with precision specifier and `%c' format", 93},
+ {"use of `%s' length modifier with `%c' type character", 94},
+ {"ISO C does not support the `%%%s%c' %s format", 95},
+ {"ISO C89 does not support the `%%%s%c' %s format", 96},
+ {"writing into constant object (arg %d)", 97},
+ {"extra type qualifiers in format argument (arg %d)", 98},
+ {"format argument is not a pointer (arg %d)", 99},
+ {"format argument is not a pointer to a pointer (arg %d)", 100},
+ {"%s format, %s arg (arg %d)", 101},
+ {"overflow in constant expression", 102},
+ {"integer overflow in expression", 103},
+ {"floating point overflow in expression", 104},
+ {"large integer implicitly truncated to unsigned type", 105},
+ {"negative integer implicitly converted to unsigned type", 106},
+ {"overflow in implicit constant conversion", 107},
+ {"expression statement has incomplete type", 108},
+ {"case label does not reduce to an integer constant", 109},
+ {"invalid truth-value expression", 110},
+ {"invalid operands to binary %s", 111},
+ {"comparison is always false due to limited range of data type", 112},
+ {"comparison is always true due to limited range of data type", 113},
+ {"comparison of unsigned expression >= 0 is always true", 114},
+ {"comparison of unsigned expression < 0 is always false", 115},
+ {"struct type value used where scalar is required", 116},
+ {"union type value used where scalar is required", 117},
+ {"array type value used where scalar is required", 118},
+ {"suggest parentheses around assignment used as truth value", 119},
+ {"invalid use of `restrict'", 120},
+ {"too few arguments to function `%s'", 121},
+ {"too many arguments to function `%s'", 122},
+ {"void value not ignored as it ought to be", 123},
+ {"conversion to non-scalar type requested", 124},
+ {"unknown C standard `%s'", 125},
+ {"array `%s' assumed to have one element", 126},
+ {"`struct %s' incomplete in scope ending here", 127},
+ {"`union %s' incomplete in scope ending here", 128},
+ {"`enum %s' incomplete in scope ending here", 129},
+ {"label `%s' used but not defined", 130},
+ {"label `%s' defined but not used", 131},
+ {"shadowing built-in function `%s'", 132},
+ {"shadowing library function `%s'", 133},
+ {"library function `%s' declared as non-function", 134},
+ {"built-in function `%s' declared as non-function", 135},
+ {"`%s' redeclared as different kind of symbol", 136},
+ {"previous declaration of `%s'", 137},
+ {"conflicting types for built-in function `%s'", 138},
+ {"conflicting types for `%s'", 139},
{"\
A parameter list with an ellipsis can't match an empty parameter name list \
-declaration.", 108},
+declaration.", 140},
{"\
An argument type that has a default promotion can't match an empty parameter \
-name list declaration.", 109},
- {"redefinition of `%s'", 110},
- {"redeclaration of `%s'", 111},
- {"conflicting declarations of `%s'", 112},
- {"`%s' previously defined here", 113},
- {"`%s' previously declared here", 114},
- {"prototype for `%s' follows", 115},
- {"non-prototype definition here", 116},
- {"prototype for `%s' follows and number of arguments doesn't match", 117},
- {"prototype for `%s' follows and argument %d doesn't match", 118},
- {"`%s' declared inline after being called", 119},
- {"`%s' declared inline after its definition", 120},
- {"static declaration for `%s' follows non-static", 121},
- {"non-static declaration for `%s' follows static", 122},
- {"const declaration for `%s' follows non-const", 123},
- {"type qualifiers for `%s' conflict with previous decl", 124},
- {"redundant redeclaration of `%s' in same scope", 125},
- {"nested extern declaration of `%s'", 126},
- {"`%s' used prior to declaration", 127},
- {"`%s' was declared implicitly `extern' and later `static'", 128},
- {"type mismatch with previous external decl", 129},
- {"previous external decl of `%s'", 130},
- {"type mismatch with previous implicit declaration", 131},
- {"previous implicit declaration of `%s'", 132},
- {"type of external `%s' is not global", 133},
- {"`%s' was previously implicitly declared to return `int'", 134},
- {"`%s' was declared `extern' and later `static'", 135},
- {"extern declaration of `%s' doesn't match global one", 136},
- {"`%s' locally external but globally static", 137},
- {"declaration of `%s' shadows a parameter", 138},
- {"declaration of `%s' shadows a symbol from the parameter list", 139},
- {"declaration of `%s' shadows previous local", 140},
- {"declaration of `%s' shadows global declaration", 141},
- {"implicit declaration of function `%s'", 142},
- {"function `%s' was previously declared within a block", 143},
- {"label %s referenced outside of any function", 144},
- {"duplicate label declaration `%s'", 145},
- {"this is a previous declaration", 146},
- {"duplicate label `%s'", 147},
- {"unnamed struct/union that defines no instances", 148},
- {"useless keyword or type name in empty declaration", 149},
- {"two types specified in one empty declaration", 150},
- {"empty declaration", 151},
- {"`%s' is usually a function", 152},
- {"typedef `%s' is initialized", 153},
- {"function `%s' is initialized like a variable", 154},
- {"parameter `%s' is initialized", 155},
- {"variable-sized object may not be initialized", 156},
- {"variable `%s' has initializer but incomplete type", 157},
- {"elements of array `%s' have incomplete type", 158},
- {"declaration of `%s' has `extern' and is initialized", 159},
- {"iterator has no initial value", 160},
- {"initializer fails to determine size of `%s'", 161},
- {"array size missing in `%s'", 162},
- {"zero or negative size array `%s'", 163},
- {"storage size of `%s' isn't known", 164},
- {"storage size of `%s' isn't constant", 165},
- {"ANSI C forbids parameter `%s' shadowing typedef", 166},
- {"`long long long' is too long for GCC", 167},
- {"ANSI C does not support `long long'", 168},
- {"duplicate `%s'", 169},
- {"two or more data types in declaration of `%s'", 170},
- {"`%s' fails to be a typedef or built in type", 171},
- {"type defaults to `int' in declaration of `%s'", 172},
- {"both long and short specified for `%s'", 173},
- {"long or short specified with char for `%s'", 174},
- {"long or short specified with floating type for `%s'", 175},
- {"the only valid combination is `long double'", 176},
- {"both signed and unsigned specified for `%s'", 177},
- {"long, short, signed or unsigned invalid for `%s'", 178},
- {"long, short, signed or unsigned used invalidly for `%s'", 179},
- {"complex invalid for `%s'", 180},
- {"duplicate `const'", 181},
- {"duplicate `restrict'", 182},
- {"duplicate `volatile'", 183},
- {"multiple storage classes in declaration of `%s'", 184},
- {"function definition declared `auto'", 185},
- {"function definition declared `register'", 186},
- {"function definition declared `typedef'", 187},
- {"storage class specified for structure field `%s'", 188},
- {"storage class specified for parameter `%s'", 189},
- {"storage class specified for typename", 190},
- {"`%s' initialized and declared `extern'", 191},
- {"`%s' has both `extern' and initializer", 192},
- {"nested function `%s' declared `extern'", 193},
- {"top-level declaration of `%s' specifies `auto'", 194},
- {"iterator `%s' has derived type", 195},
- {"iterator `%s' has noninteger type", 196},
- {"declaration of `%s' as array of voids", 197},
- {"declaration of `%s' as array of functions", 198},
- {"size of array `%s' has non-integer type", 199},
- {"ANSI C forbids zero-size array `%s'", 200},
- {"size of array `%s' is negative", 201},
- {"ANSI C forbids array `%s' whose size can't be evaluated", 202},
- {"ANSI C forbids variable-size array `%s'", 203},
- {"size of array `%s' is too large", 204},
- {"array type has incomplete element type", 205},
- {"ANSI C forbids const or volatile function types", 206},
- {"`%s' declared as function returning a function", 207},
- {"`%s' declared as function returning an array", 208},
- {"ANSI C forbids qualified function types", 209},
- {"invalid type modifier within pointer declarator", 210},
- {"variable or field `%s' declared void", 211},
- {"field `%s' declared as a function", 212},
- {"field `%s' has incomplete type", 213},
- {"invalid storage class for function `%s'", 214},
- {"ANSI C forbids qualified void function return type", 215},
- {"`noreturn' function returns non-void value", 216},
- {"cannot inline function `main'", 217},
- {"variable `%s' declared `inline'", 218},
- {"function declaration isn't a prototype", 219},
- {"parameter names (without types) in function declaration", 220},
- {"parameter `%s' has incomplete type", 221},
- {"parameter has incomplete type", 222},
- {"parameter `%s' points to incomplete type", 223},
- {"parameter points to incomplete type", 224},
- {"parameter `%s' has just a forward declaration", 225},
- {"`void' in parameter list must be the entire list", 226},
- {"`%s %s' declared inside parameter list", 227},
- {"anonymous struct declared inside parameter list", 228},
- {"anonymous union declared inside parameter list", 229},
- {"anonymous enum declared inside parameter list", 230},
+name list declaration.", 141},
+ {"redefinition of `%s'", 142},
+ {"redeclaration of `%s'", 143},
+ {"conflicting declarations of `%s'", 144},
+ {"`%s' previously defined here", 145},
+ {"`%s' previously declared here", 146},
+ {"prototype for `%s' follows", 147},
+ {"non-prototype definition here", 148},
+ {"prototype for `%s' follows and number of arguments doesn't match", 149},
+ {"prototype for `%s' follows and argument %d doesn't match", 150},
+ {"`%s' declared inline after being called", 151},
+ {"`%s' declared inline after its definition", 152},
+ {"static declaration for `%s' follows non-static", 153},
+ {"non-static declaration for `%s' follows static", 154},
+ {"const declaration for `%s' follows non-const", 155},
+ {"type qualifiers for `%s' conflict with previous decl", 156},
+ {"redundant redeclaration of `%s' in same scope", 157},
+ {"nested extern declaration of `%s'", 158},
+ {"`%s' used prior to declaration", 159},
+ {"`%s' was declared implicitly `extern' and later `static'", 160},
+ {"type mismatch with previous external decl", 161},
+ {"previous external decl of `%s'", 162},
+ {"type mismatch with previous implicit declaration", 163},
+ {"previous implicit declaration of `%s'", 164},
+ {"type of external `%s' is not global", 165},
+ {"`%s' was previously implicitly declared to return `int'", 166},
+ {"`%s' was declared `extern' and later `static'", 167},
+ {"extern declaration of `%s' doesn't match global one", 168},
+ {"`%s' locally external but globally static", 169},
+ {"declaration of `%s' shadows a parameter", 170},
+ {"declaration of `%s' shadows a symbol from the parameter list", 171},
+ {"declaration of `%s' shadows previous local", 172},
+ {"declaration of `%s' shadows global declaration", 173},
+ {"function `%s' was previously declared within a block", 174},
+ {"implicit declaration of function `%s'", 175},
+ {"label %s referenced outside of any function", 176},
+ {"duplicate label declaration `%s'", 177},
+ {"this is a previous declaration", 178},
+ {"unnamed struct/union that defines no instances", 179},
+ {"useless keyword or type name in empty declaration", 180},
+ {"two types specified in one empty declaration", 181},
+ {"empty declaration", 182},
+ {"`%s' is usually a function", 183},
+ {"typedef `%s' is initialized", 184},
+ {"function `%s' is initialized like a variable", 185},
+ {"parameter `%s' is initialized", 186},
+ {"variable-sized object may not be initialized", 187},
+ {"variable `%s' has initializer but incomplete type", 188},
+ {"elements of array `%s' have incomplete type", 189},
+ {"declaration of `%s' has `extern' and is initialized", 190},
+ {"initializer fails to determine size of `%s'", 191},
+ {"array size missing in `%s'", 192},
+ {"zero or negative size array `%s'", 193},
+ {"storage size of `%s' isn't known", 194},
+ {"storage size of `%s' isn't constant", 195},
+ {"ANSI C forbids parameter `%s' shadowing typedef", 196},
+ {"`long long long' is too long for GCC", 197},
+ {"ISO C89 does not support `long long'", 198},
+ {"duplicate `%s'", 199},
+ {"two or more data types in declaration of `%s'", 200},
+ {"`%s' fails to be a typedef or built in type", 201},
+ {"both long and short specified for `%s'", 202},
+ {"long or short specified with char for `%s'", 203},
+ {"long or short specified with floating type for `%s'", 204},
+ {"the only valid combination is `long double'", 205},
+ {"both signed and unsigned specified for `%s'", 206},
+ {"long, short, signed or unsigned invalid for `%s'", 207},
+ {"long, short, signed or unsigned used invalidly for `%s'", 208},
+ {"complex invalid for `%s'", 209},
+ {"duplicate `const'", 210},
+ {"duplicate `restrict'", 211},
+ {"duplicate `volatile'", 212},
+ {"multiple storage classes in declaration of `%s'", 213},
+ {"function definition declared `auto'", 214},
+ {"function definition declared `register'", 215},
+ {"function definition declared `typedef'", 216},
+ {"storage class specified for structure field `%s'", 217},
+ {"storage class specified for parameter `%s'", 218},
+ {"storage class specified for typename", 219},
+ {"`%s' initialized and declared `extern'", 220},
+ {"`%s' has both `extern' and initializer", 221},
+ {"nested function `%s' declared `extern'", 222},
+ {"top-level declaration of `%s' specifies `auto'", 223},
+ {"declaration of `%s' as array of voids", 224},
+ {"declaration of `%s' as array of functions", 225},
+ {"size of array `%s' has non-integer type", 226},
+ {"ISO C forbids zero-size array `%s'", 227},
+ {"size of array `%s' is negative", 228},
+ {"ISO C89 forbids array `%s' whose size can't be evaluated", 229},
+ {"ISO C89 forbids variable-size array `%s'", 230},
+ {"size of array `%s' is too large", 231},
+ {"array type has incomplete element type", 232},
+ {"ANSI C forbids const or volatile function types", 233},
+ {"`%s' declared as function returning a function", 234},
+ {"`%s' declared as function returning an array", 235},
+ {"ISO C forbids qualified function types", 236},
+ {"invalid type modifier within pointer declarator", 237},
+ {"ISO C forbids const or volatile function types", 238},
+ {"variable or field `%s' declared void", 239},
+ {"field `%s' declared as a function", 240},
+ {"field `%s' has incomplete type", 241},
+ {"invalid storage class for function `%s'", 242},
+ {"ISO C forbids qualified void function return type", 243},
+ {"`noreturn' function returns non-void value", 244},
+ {"cannot inline function `main'", 245},
+ {"variable `%s' declared `inline'", 246},
+ {"function declaration isn't a prototype", 247},
+ {"parameter names (without types) in function declaration", 248},
+ {"parameter `%s' has incomplete type", 249},
+ {"parameter has incomplete type", 250},
+ {"parameter `%s' points to incomplete type", 251},
+ {"parameter points to incomplete type", 252},
+ {"parameter `%s' has just a forward declaration", 253},
+ {"`void' in parameter list must be the entire list", 254},
+ {"`%s %s' declared inside parameter list", 255},
+ {"anonymous struct declared inside parameter list", 256},
+ {"anonymous union declared inside parameter list", 257},
+ {"anonymous enum declared inside parameter list", 258},
{"\
its scope is only this definition or declaration, which is probably not what \
-you want.", 231},
- {"ANSI C forbids forward references to `enum' types", 232},
- {"redefinition of `%s %s'", 233},
- {"%s defined inside parms", 234},
- {"union defined inside parms", 235},
- {"structure defined inside parms", 236},
- {"%s has no %s", 237},
- {"union", 238},
- {"struct", 239},
- {"named members", 240},
- {"members", 241},
- {"nested redefinition of `%s'", 242},
- {"bit-field `%s' width not an integer constant", 243},
- {"bit-field `%s' has invalid type", 244},
- {"bit-field `%s' type invalid in ANSI C", 245},
- {"negative width in bit-field `%s'", 246},
- {"width of `%s' exceeds its type", 247},
- {"zero width for bit-field `%s'", 248},
- {"`%s' is narrower than values of its type", 249},
- {"duplicate member `%s'", 250},
- {"union cannot be made transparent", 251},
- {"redeclaration of `enum %s'", 252},
- {"enum defined inside parms", 253},
- {"enumeration values exceed range of largest integer", 254},
- {"enumerator value for `%s' not integer constant", 255},
- {"overflow in enumeration values", 256},
- {"ANSI C restricts enumerator values to range of `int'", 257},
- {"return type is an incomplete type", 258},
- {"return type defaults to `int'", 259},
- {"no previous prototype for `%s'", 260},
- {"`%s' was used with no prototype before its definition", 261},
- {"no previous declaration for `%s'", 262},
- {"`%s' was used with no declaration before its definition", 263},
- {"return type of `%s' is not `int'", 264},
- {"first argument of `%s' should be `int'", 265},
- {"second argument of `%s' should be `char **'", 266},
- {"third argument of `%s' should probably be `char **'", 267},
- {"`%s' takes only zero or two arguments", 268},
- {"third argument of `%s' is deprecated", 269},
- {"`%s' is normally a non-static function", 270},
- {"parm types given both in parmlist and separately", 271},
- {"parameter name omitted", 272},
- {"parameter `%s' declared void", 273},
- {"parameter name missing from parameter list", 274},
- {"multiple parameters named `%s'", 275},
- {"type of `%s' defaults to `int'", 276},
- {"declaration for parameter `%s' but no such parameter", 277},
- {"number of arguments doesn't match prototype", 278},
- {"promoted argument `%s' doesn't match prototype", 279},
- {"argument `%s' doesn't match prototype", 280},
- {"type of parameter `%s' is not declared", 281},
- {"function might be possible candidate for attribute `noreturn'", 282},
- {"`noreturn' function does return", 283},
- {"control reaches end of non-void function", 284},
- {"this function may return with or without a value", 285},
- {"size of return value of `%s' is %u bytes", 286},
- {"size of return value of `%s' is larger than %d bytes", 287},
- {"`for (%s)' appears within implicit iteration", 288},
- {"carriage return in source file", 289},
- {"(we only warn about the first carriage return)", 290},
- {"stray '\\' in program", 291},
- {"invalid #-line", 292},
- {"ignoring pragma: %s", 293},
- {"invalid #ident", 294},
- {"undefined or invalid # directive `%s'", 295},
- {"invalid #line", 296},
- {"#-lines for entering and leaving files don't match", 297},
- {"the meaning of `\\x' varies with -traditional", 298},
- {"\\x used with no following hex digits", 299},
- {"hex escape out of range", 300},
- {"the meaning of `\\a' varies with -traditional", 301},
- {"non-ANSI-standard escape sequence, `\\%c'", 302},
- {"unknown escape sequence `\\%c'", 303},
- {"unknown escape sequence: `\\' followed by char code 0x%x", 304},
- {"%s at end of input", 305},
- {"%s at null character", 306},
- {"%s before string constant", 307},
- {"%s before character constant", 308},
- {"%s before character 0%o", 309},
- {"%s before `%s'", 310},
- {"more than one `f' in numeric constant", 311},
- {"more than one `l' in numeric constant", 312},
- {"more than one `i' or `j' in numeric constant", 313},
- {"ANSI C forbids imaginary numeric constants", 314},
- {"both `f' and `l' in floating constant", 315},
- {"floating point number exceeds range of `float'", 316},
- {"floating point number exceeds range of `long double'", 317},
- {"floating point number exceeds range of `double'", 318},
- {"`$' in identifier", 319},
- {"ANSI does not permit the keyword `%s'", 320},
- {"invalid identifier `%s'", 321},
- {"parse error at `..'", 322},
- {"floating constant may not be in radix 16", 323},
- {"malformed floating constant", 324},
- {"nondigits in number and not hexadecimal", 325},
- {"numeric constant with no digits", 326},
- {"numeric constant contains digits beyond the radix", 327},
- {"floating constant exponent has no digits", 328},
- {"hexadecimal floating constant has no exponent", 329},
- {"floating constant out of range", 330},
- {"two `u's in integer constant", 331},
- {"three `l's in integer constant", 332},
- {"ANSI C forbids long long integer constants", 333},
+you want.", 259},
+ {"ISO C forbids forward references to `enum' types", 260},
+ {"redefinition of `%s %s'", 261},
+ {"%s defined inside parms", 262},
+ {"union", 263},
+ {"structure", 264},
+ {"%s has no %s", 265},
+ {"struct", 266},
+ {"named members", 267},
+ {"members", 268},
+ {"nested redefinition of `%s'", 269},
+ {"bit-field `%s' width not an integer constant", 270},
+ {"bit-field `%s' has invalid type", 271},
+ {"bit-field `%s' type invalid in ISO C", 272},
+ {"negative width in bit-field `%s'", 273},
+ {"width of `%s' exceeds its type", 274},
+ {"zero width for bit-field `%s'", 275},
+ {"`%s' is narrower than values of its type", 276},
+ {"duplicate member `%s'", 277},
+ {"union cannot be made transparent", 278},
+ {"redeclaration of `enum %s'", 279},
+ {"enum defined inside parms", 280},
+ {"enumeration values exceed range of largest integer", 281},
+ {"enumerator value for `%s' not integer constant", 282},
+ {"overflow in enumeration values", 283},
+ {"ISO C restricts enumerator values to range of `int'", 284},
+ {"return type is an incomplete type", 285},
+ {"no previous prototype for `%s'", 286},
+ {"`%s' was used with no prototype before its definition", 287},
+ {"no previous declaration for `%s'", 288},
+ {"`%s' was used with no declaration before its definition", 289},
+ {"return type of `%s' is not `int'", 290},
+ {"first argument of `%s' should be `int'", 291},
+ {"second argument of `%s' should be `char **'", 292},
+ {"third argument of `%s' should probably be `char **'", 293},
+ {"`%s' takes only zero or two arguments", 294},
+ {"third argument of `%s' is deprecated", 295},
+ {"`%s' is normally a non-static function", 296},
+ {"parm types given both in parmlist and separately", 297},
+ {"parameter name omitted", 298},
+ {"parameter `%s' declared void", 299},
+ {"parameter name missing from parameter list", 300},
+ {"multiple parameters named `%s'", 301},
+ {"type of `%s' defaults to `int'", 302},
+ {"declaration for parameter `%s' but no such parameter", 303},
+ {"number of arguments doesn't match prototype", 304},
+ {"promoted argument `%s' doesn't match prototype", 305},
+ {"argument `%s' doesn't match prototype", 306},
+ {"type of parameter `%s' is not declared", 307},
+ {"function might be possible candidate for attribute `noreturn'", 308},
+ {"`noreturn' function does return", 309},
+ {"control reaches end of non-void function", 310},
+ {"this function may return with or without a value", 311},
+ {"size of return value of `%s' is %u bytes", 312},
+ {"size of return value of `%s' is larger than %d bytes", 313},
+ {"ISO C forbids case ranges", 314},
+ {"label must have integral type in ISO C", 315},
+ {"default label not within a switch statement", 316},
+ {"case label not within a switch statement", 317},
+ {"multiple default labels in one switch", 318},
+ {"this is the first default label", 319},
+ {"duplicate case value", 320},
+ {"this is the first entry for that value", 321},
+ {"case value out of range", 322},
+ {"case label within scope of cleanup or variable array", 323},
+ {"stray '\\' in program", 324},
+ {"invalid #-line", 325},
+ {"undefined or invalid # directive `%s'", 326},
+ {"invalid #line", 327},
+ {"badly nested C headers from preprocessor", 328},
+ {"#-lines for entering and leaving files don't match", 329},
+ {"ignoring #pragma %s %s", 330},
+ {"ignoring #pragma %s", 331},
+ {"incomplete universal-character-name", 332},
+ {"non hex digit '%c' in universal-character-name", 333},
+ {"universal-character-name on EBCDIC target", 334},
+ {"universal-character-name used for '%c'", 335},
+ {"invalid universal-character-name", 336},
+ {"the meaning of `\\x' varies with -traditional", 337},
+ {"\\x used with no following hex digits", 338},
+ {"hex escape out of range", 339},
+ {"the meaning of '\\a' varies with -traditional", 340},
+ {"the meaning of '\\%c' varies with -traditional", 341},
+ {"non-ISO-standard escape sequence, '\\%c'", 342},
+ {"unknown escape sequence '\\%c'", 343},
+ {"unknown escape sequence: '\\' followed by char 0x%.2x", 344},
+ {"universal-character-name '\\U%08x' not valid in identifier", 345},
+ {"universal-character-name '\\u%04x' not valid in identifier", 346},
+ {"both 'f' and 'l' suffixes on floating constant", 347},
+ {"floating point number exceeds range of '%s'", 348},
+ {"stray '%c' in program", 349},
+ {"stray '\\%#o' in program", 350},
+ {"'$' in identifier", 351},
+ {"parse error at '..'", 352},
+ {"floating constant may not be in radix 16", 353},
+ {"traditional C rejects the 'f' suffix", 354},
+ {"traditional C rejects the 'l' suffix", 355},
+ {"ISO C forbids imaginary numeric constants", 356},
+ {"floating point number exceeds range of 'double'", 357},
+ {"two 'u' suffixes on integer constant", 358},
+ {"traditional C rejects the 'u' suffix", 359},
+ {"three 'l' suffixes on integer constant", 360},
+ {"'lul' is not a valid integer suffix", 361},
+ {"'Ll' and 'lL' are not valid integer suffixes", 362},
+ {"ISO C89 forbids long long integer constants", 363},
+ {"more than one 'i' or 'j' suffix on integer constant", 364},
{"\
integer constant is too large for this configuration of the compiler - \
-truncated to %d bits", 334},
- {"width of integer constant changes with -traditional", 335},
- {"integer constant is unsigned in ANSI C, signed with -traditional", 336},
- {"width of integer constant may change on other systems with -traditional", 337},
- {"integer constant larger than the maximum value of an unsigned long int", 338},
- {"decimal constant is so large that it is unsigned", 339},
- {"complex integer constant is too wide for `complex int'", 340},
- {"integer constant is larger than the maximum value for its type", 341},
- {"missing white space after number `%s'", 342},
- {"escape sequence out of range for character", 343},
- {"ANSI C forbids newline in character constant", 344},
- {"Ignoring invalid multibyte character", 345},
- {"malformed character constant", 346},
- {"empty character constant", 347},
- {"character constant too long", 348},
- {"multi-character character constant", 349},
- {"ANSI C forbids newline in string constant", 350},
- {"Unterminated string constant", 351},
- {"YYDEBUG not defined.", 352},
- {"syntax error", 353},
- {"syntax error: cannot back up", 354},
- {"parser stack overflow", 355},
- {"ANSI C forbids an empty source file", 356},
- {"argument of `asm' is not a constant string", 357},
- {"ANSI C forbids data definition with no type or storage class", 358},
- {"data definition has no type or storage class", 359},
- {"ANSI C does not allow extra `;' outside of a function", 360},
- {"ANSI C forbids `&&'", 361},
- {"`sizeof' applied to a bit-field", 362},
- {"ANSI C forbids constructor expressions", 363},
- {"ANSI C forbids omitting the middle term of a ?: expression", 364},
- {"ANSI C forbids braced-groups within expressions", 365},
- {"Use of ANSI string concatenation", 366},
- {"ANSI C does not permit use of `varargs.h'", 367},
- {"`%s' is not at beginning of declaration", 368},
- {"ANSI C forbids empty initializer braces", 369},
- {"ANSI C forbids nested functions", 370},
- {"`[*]' in parameter declaration only allowed in ISO C 99", 371},
- {"comma at end of enumerator list", 372},
- {"no semicolon at end of struct or union", 373},
- {"extra semicolon in struct or union specified", 374},
- {"ANSI C doesn't support unnamed structs/unions", 375},
- {"ANSI C forbids member declarations with no members", 376},
- {"ANSI C forbids label at end of compound statement", 377},
- {"ANSI C forbids label declarations", 378},
- {"braced-group within expression allowed only inside a function", 379},
- {"empty body in an else-statement", 380},
- {"break statement not within loop or switch", 381},
- {"continue statement not within a loop", 382},
- {"ANSI C forbids `goto *expr;'", 383},
- {"invalid `for (ITERATOR)' syntax", 384},
- {"`%s' is not an iterator", 385},
- {"`for (%s)' inside expansion of same iterator", 386},
- {"label must have integral type in ANSI C", 387},
- {"case label not within a switch statement", 388},
- {"duplicate case value", 389},
- {"this is the first entry for that value", 390},
- {"case value out of range", 391},
- {"case label within scope of cleanup or variable array", 392},
- {"ANSI C forbids case ranges", 393},
- {"empty case range", 394},
- {"default label not within a switch statement", 395},
- {"multiple default labels in one switch", 396},
- {"this is the first default label", 397},
- {"ANSI C forbids forward parameter declarations", 398},
- {"ANSI C requires a named argument before `...'", 399},
- {"`...' in old-style identifier list", 400},
- {"parse error; also virtual memory exceeded", 401},
- {"parse error", 402},
- {"Alignment must be a small power of two, not %d, in #pragma pack", 403},
- {"\
-#pragma pack (pop) encountered without matching #pragma pack (push, <n>)", 404},
+truncated to %d bits", 365},
+ {"width of integer constant changes with -traditional", 366},
+ {"integer constant is unsigned in ISO C, signed with -traditional", 367},
+ {"width of integer constant may change on other systems with -traditional", 368},
+ {"integer constant larger than the maximum value of an unsigned long int", 369},
+ {"decimal constant is so large that it is unsigned", 370},
+ {"integer constant is larger than the maximum value for its type", 371},
+ {"missing white space after number '%.*s'", 372},
+ {"Ignoring invalid multibyte character", 373},
+ {"escape sequence out of range for character", 374},
+ {"empty character constant", 375},
+ {"character constant too long", 376},
+ {"multi-character character constant", 377},
+ {"syntax error", 378},
+ {"syntax error: cannot back up", 379},
+ {"parser stack overflow", 380},
+ {"ISO C forbids an empty source file", 381},
+ {"argument of `asm' is not a constant string", 382},
+ {"ISO C forbids data definition with no type or storage class", 383},
+ {"data definition has no type or storage class", 384},
+ {"ISO C does not allow extra `;' outside of a function", 385},
+ {"traditional C rejects the unary plus operator", 386},
+ {"ISO C forbids `&&'", 387},
+ {"`sizeof' applied to a bit-field", 388},
+ {"ISO C89 forbids constructor expressions", 389},
+ {"ISO C forbids omitting the middle term of a ?: expression", 390},
+ {"ISO C forbids braced-groups within expressions", 391},
+ {"traditional C rejects string concatenation", 392},
+ {"ISO C does not permit use of `varargs.h'", 393},
+ {"`%s' is not at beginning of declaration", 394},
+ {"ISO C forbids empty initializer braces", 395},
+ {"ISO C forbids nested functions", 396},
+ {"`[*]' in parameter declaration only allowed in ISO C 99", 397},
+ {"comma at end of enumerator list", 398},
+ {"no semicolon at end of struct or union", 399},
+ {"extra semicolon in struct or union specified", 400},
+ {"ISO C doesn't support unnamed structs/unions", 401},
+ {"ISO C forbids member declarations with no members", 402},
+ {"ISO C forbids label at end of compound statement", 403},
+ {"ISO C forbids label declarations", 404},
+ {"braced-group within expression allowed only inside a function", 405},
+ {"empty body in an else-statement", 406},
+ {"ISO C forbids `goto *expr;'", 407},
+ {"ISO C forbids forward parameter declarations", 408},
+ {"ISO C requires a named argument before `...'", 409},
+ {"`...' in old-style identifier list", 410},
+ {"parse error; also virtual memory exceeded", 411},
+ {"parse error", 412},
+ {"%s at end of input", 413},
+ {"%s before %s'%c'", 414},
+ {"%s before %s'\\x%x'", 415},
+ {"%s before string constant", 416},
+ {"%s before numeric constant", 417},
+ {"%s before \"%s\"", 418},
+ {"%s before '%s' token", 419},
+ {"invalid identifier `%s'", 420},
+ {"syntax error before '%s' token", 421},
+ {"YYDEBUG not defined.", 422},
+ {"\
+#pragma pack (pop) encountered without matching #pragma pack (push, <n>)", 423},
{"\
#pragma pack(pop, %s) encountered without matching #pragma pack(push, %s, \
-<n>)", 405},
- {"malformed `#pragma pack'", 406},
- {"malformed '#pragma pack(push[,id],<n>)'", 407},
- {"malformed '#pragma pack(pop[,id])'", 408},
- {"malformed `#pragma weak'", 409},
- {"`%s' has an incomplete type", 410},
- {"invalid use of void expression", 411},
- {"invalid use of array with unspecified bounds", 412},
- {"invalid use of undefined type `%s %s'", 413},
- {"invalid use of incomplete typedef `%s'", 414},
- {"function types not truly compatible in ANSI C", 415},
- {"types are not quite compatible", 416},
- {"sizeof applied to a function type", 417},
- {"sizeof applied to a void type", 418},
- {"sizeof applied to an incomplete type", 419},
- {"arithmetic on pointer to an incomplete type", 420},
- {"__alignof__ applied to an incomplete type", 421},
- {"`__alignof' applied to a bit-field", 422},
- {"invalid use of non-lvalue array", 423},
- {"%s has no member named `%s'", 424},
- {"request for member `%s' in something not a structure or union", 425},
- {"dereferencing pointer to incomplete type", 426},
- {"dereferencing `void *' pointer", 427},
- {"invalid type argument of `%s'", 428},
- {"subscript missing in array reference", 429},
- {"array subscript has type `char'", 430},
- {"array subscript is not an integer", 431},
- {"ANSI C forbids subscripting `register' array", 432},
- {"ANSI C forbids subscripting non-lvalue array", 433},
- {"subscript has type `char'", 434},
- {"subscripted value is neither array nor pointer", 435},
- {"`%s' undeclared here (not in a function)", 436},
- {"`%s' undeclared (first use in this function)", 437},
- {"(Each undeclared identifier is reported only once", 438},
- {"for each function it appears in.)", 439},
- {"local declaration of `%s' hides instance variable", 440},
- {"called object is not a function", 441},
- {"too many arguments to function", 442},
- {"type of formal parameter %d is incomplete", 443},
- {"%s as integer rather than floating due to prototype", 444},
- {"%s as complex rather than floating due to prototype", 445},
- {"%s as floating rather than integer due to prototype", 446},
- {"%s as floating rather than complex due to prototype", 447},
- {"%s as `float' rather than `double' due to prototype", 448},
- {"%s with different width due to prototype", 449},
- {"%s as unsigned due to prototype", 450},
- {"%s as signed due to prototype", 451},
- {"too few arguments to function", 452},
- {"suggest parentheses around + or - inside shift", 453},
- {"suggest parentheses around && within ||", 454},
- {"suggest parentheses around arithmetic in operand of |", 455},
- {"suggest parentheses around comparison in operand of |", 456},
- {"suggest parentheses around arithmetic in operand of ^", 457},
- {"suggest parentheses around comparison in operand of ^", 458},
- {"suggest parentheses around + or - in operand of &", 459},
- {"suggest parentheses around comparison in operand of &", 460},
- {"comparisons like X<=Y<=Z do not have their mathematical meaning", 461},
- {"right shift count is negative", 462},
- {"right shift count >= width of type", 463},
- {"left shift count is negative", 464},
- {"left shift count >= width of type", 465},
- {"shift count is negative", 466},
- {"shift count >= width of type", 467},
- {"comparing floating point with == or != is unsafe", 468},
- {"ANSI C forbids comparison of `void *' with function pointer", 469},
- {"comparison of distinct pointer types lacks a cast", 470},
- {"comparison between pointer and integer", 471},
- {"ANSI C forbids ordered comparisons of pointers to functions", 472},
- {"comparison of complete and incomplete pointers", 473},
- {"ordered comparison of pointer with integer zero", 474},
- {"unordered comparison on non-floating point argument", 475},
- {"comparison between signed and unsigned", 476},
- {"comparison of promoted ~unsigned with constant", 477},
- {"comparison of promoted ~unsigned with unsigned", 478},
- {"pointer of type `void *' used in arithmetic", 479},
- {"pointer to a function used in arithmetic", 480},
- {"pointer of type `void *' used in subtraction", 481},
- {"pointer to a function used in subtraction", 482},
- {"wrong type argument to unary plus", 483},
- {"wrong type argument to unary minus", 484},
- {"wrong type argument to bit-complement", 485},
- {"wrong type argument to abs", 486},
- {"wrong type argument to conjugation", 487},
- {"wrong type argument to unary exclamation mark", 488},
- {"wrong type argument to %s", 489},
- {"%s of pointer to unknown structure", 490},
- {"invalid lvalue in increment", 491},
- {"invalid lvalue in decrement", 492},
- {"increment", 493},
- {"decrement", 494},
- {"ANSI C forbids the address of a cast expression", 495},
- {"invalid lvalue in unary `&'", 496},
- {"attempt to take address of bit-field structure member `%s'", 497},
- {"%s", 498},
- {"ANSI C forbids use of conditional expressions as lvalues", 499},
- {"ANSI C forbids use of compound expressions as lvalues", 500},
- {"ANSI C forbids use of cast expressions as lvalues", 501},
- {"%s of iterator `%s'", 502},
- {"%s of read-only member `%s'", 503},
- {"%s of read-only variable `%s'", 504},
- {"%s of read-only location", 505},
- {"cannot take address of bitfield `%s'", 506},
- {"global register variable `%s' used in nested function", 507},
- {"register variable `%s' used in nested function", 508},
- {"address of global register variable `%s' requested", 509},
- {"cannot put object with volatile field into register", 510},
- {"address of register variable `%s' requested", 511},
- {"signed and unsigned type in conditional expression", 512},
- {"ANSI C forbids conditional expr with only one void side", 513},
- {"ANSI C forbids conditional expr between `void *' and function pointer", 514},
- {"pointer type mismatch in conditional expression", 515},
- {"pointer/integer type mismatch in conditional expression", 516},
- {"ANSI C forbids conditional expr between 0 and function pointer", 517},
- {"type mismatch in conditional expression", 518},
- {"left-hand operand of comma expression has no effect", 519},
- {"cast specifies array type", 520},
- {"cast specifies function type", 521},
- {"ANSI C forbids casting nonscalar to the same type", 522},
- {"ANSI C forbids casts to union type", 523},
- {"cast to union type from type not present in union", 524},
- {"cast discards qualifiers from pointer target type", 525},
- {"cast increases required alignment of target type", 526},
- {"cast from pointer to integer of different size", 527},
- {"cast does not match function type", 528},
- {"cast to pointer from integer of different size", 529},
- {"invalid lvalue in assignment", 530},
- {"assignment", 531},
- {"%s makes qualified function pointer from unqualified", 532},
- {"%s discards qualifiers from pointer target type", 533},
- {"ANSI C prohibits argument conversion to union type", 534},
- {"ANSI forbids %s between function pointer and `void *'", 535},
- {"pointer targets in %s differ in signedness", 536},
- {"%s from incompatible pointer type", 537},
- {"%s makes pointer from integer without a cast", 538},
- {"%s makes integer from pointer without a cast", 539},
- {"incompatible type for argument %d of `%s'", 540},
- {"incompatible type for argument %d of indirect function call", 541},
- {"incompatible types in %s", 542},
- {"passing arg %d of `%s'", 543},
- {"passing arg %d of pointer to function", 544},
- {"initializer for static variable is not constant", 545},
- {"initializer for static variable uses complicated arithmetic", 546},
- {"aggregate initializer is not constant", 547},
- {"aggregate initializer uses complicated arithmetic", 548},
- {"(near initialization for `%s')", 549},
- {"char-array initialized from wide string", 550},
- {"int-array initialized from non-wide string", 551},
- {"initializer-string for array of chars is too long", 552},
- {"array initialized from non-constant array expression", 553},
- {"initializer element is not constant", 554},
- {"initializer element is not computable at load time", 555},
- {"initialization", 556},
- {"invalid initializer", 557},
- {"extra brace group at end of initializer", 558},
- {"missing braces around initializer", 559},
- {"braces around scalar initializer", 560},
- {"missing initializer", 561},
- {"empty braces in initializer", 562},
- {"empty scalar initializer", 563},
- {"extra elements in scalar initializer", 564},
- {"zero or negative array size `%s'", 565},
- {"nonconstant array index in initializer", 566},
- {"array index in non-array initializer", 567},
- {"duplicate array index in initializer", 568},
- {"empty index range in initializer", 569},
- {"ANSI C forbids specifying element to initialize", 570},
- {"unknown field `%s' specified in initializer", 571},
- {"field `%s' already initialized", 572},
- {"ANSI C forbids specifying structure member to initialize", 573},
- {"duplicate initializer", 574},
- {"excess elements in char array initializer", 575},
- {"excess elements in struct initializer", 576},
- {"excess elements in union initializer", 577},
- {"excess elements in array initializer", 578},
- {"excess elements in scalar initializer", 579},
- {"asm template is not a string constant", 580},
- {"invalid lvalue in asm statement", 581},
- {"modification by `asm'", 582},
- {"function declared `noreturn' has a `return' statement", 583},
- {"`return' with no value, in function returning non-void", 584},
- {"`return' with a value, in function returning void", 585},
- {"return", 586},
- {"function returns address of local variable", 587},
- {"switch quantity not an integer", 588},
- {"`long' switch expression not converted to `int' in ANSI C", 589},
- {"inlining failed in call to `%s'", 590},
- {"called from here", 591},
- {"can't inline call to `%s'", 592},
- {"function call has aggregate value", 593},
- {"internal error", 594},
- {"no arguments", 595},
- {"fopen %s", 596},
- {"fclose %s", 597},
- {"collect2 version %s", 598},
- {"%d constructor(s) found\n", 599},
- {"%d destructor(s) found\n", 600},
- {"%d frame table(s) found\n", 601},
- {"%s terminated with signal %d [%s]%s", 602},
- {"%s returned %d exit status", 603},
- {"[cannot find %s]", 604},
- {"cannot find `%s'", 605},
- {"redirecting stdout: %s", 606},
- {"[Leaving %s]\n", 607},
+<n>)", 424},
+ {"junk at end of '#pragma pack'", 425},
+ {"junk at end of #pragma weak", 426},
+ {"malformed #pragma directive", 427},
+ {"break statement not within loop or switch", 428},
+ {"continue statement not within a loop", 429},
+ {"%s qualifier ignored on asm", 430},
+ {"`%s' has an incomplete type", 431},
+ {"invalid use of void expression", 432},
+ {"invalid use of array with unspecified bounds", 433},
+ {"invalid use of undefined type `%s %s'", 434},
+ {"invalid use of incomplete typedef `%s'", 435},
+ {"function types not truly compatible in ISO C", 436},
+ {"types are not quite compatible", 437},
+ {"sizeof applied to a function type", 438},
+ {"sizeof applied to a void type", 439},
+ {"sizeof applied to an incomplete type", 440},
+ {"arithmetic on pointer to an incomplete type", 441},
+ {"__alignof__ applied to an incomplete type", 442},
+ {"`__alignof' applied to a bit-field", 443},
+ {"invalid use of non-lvalue array", 444},
+ {"%s has no member named `%s'", 445},
+ {"request for member `%s' in something not a structure or union", 446},
+ {"dereferencing pointer to incomplete type", 447},
+ {"dereferencing `void *' pointer", 448},
+ {"invalid type argument of `%s'", 449},
+ {"subscript missing in array reference", 450},
+ {"array subscript has type `char'", 451},
+ {"array subscript is not an integer", 452},
+ {"ISO C forbids subscripting `register' array", 453},
+ {"ISO C89 forbids subscripting non-lvalue array", 454},
+ {"subscript has type `char'", 455},
+ {"subscripted value is neither array nor pointer", 456},
+ {"`%s' undeclared here (not in a function)", 457},
+ {"`%s' undeclared (first use in this function)", 458},
+ {"(Each undeclared identifier is reported only once", 459},
+ {"for each function it appears in.)", 460},
+ {"local declaration of `%s' hides instance variable", 461},
+ {"called object is not a function", 462},
+ {"too many arguments to function", 463},
+ {"type of formal parameter %d is incomplete", 464},
+ {"%s as integer rather than floating due to prototype", 465},
+ {"%s as complex rather than floating due to prototype", 466},
+ {"%s as floating rather than integer due to prototype", 467},
+ {"%s as floating rather than complex due to prototype", 468},
+ {"%s as `float' rather than `double' due to prototype", 469},
+ {"%s with different width due to prototype", 470},
+ {"%s as unsigned due to prototype", 471},
+ {"%s as signed due to prototype", 472},
+ {"too few arguments to function", 473},
+ {"suggest parentheses around + or - inside shift", 474},
+ {"suggest parentheses around && within ||", 475},
+ {"suggest parentheses around arithmetic in operand of |", 476},
+ {"suggest parentheses around comparison in operand of |", 477},
+ {"suggest parentheses around arithmetic in operand of ^", 478},
+ {"suggest parentheses around comparison in operand of ^", 479},
+ {"suggest parentheses around + or - in operand of &", 480},
+ {"suggest parentheses around comparison in operand of &", 481},
+ {"comparisons like X<=Y<=Z do not have their mathematical meaning", 482},
+ {"right shift count is negative", 483},
+ {"right shift count >= width of type", 484},
+ {"left shift count is negative", 485},
+ {"left shift count >= width of type", 486},
+ {"shift count is negative", 487},
+ {"shift count >= width of type", 488},
+ {"comparing floating point with == or != is unsafe", 489},
+ {"ISO C forbids comparison of `void *' with function pointer", 490},
+ {"comparison of distinct pointer types lacks a cast", 491},
+ {"comparison between pointer and integer", 492},
+ {"ISO C forbids ordered comparisons of pointers to functions", 493},
+ {"comparison of complete and incomplete pointers", 494},
+ {"ordered comparison of pointer with integer zero", 495},
+ {"unordered comparison on non-floating point argument", 496},
+ {"comparison between signed and unsigned", 497},
+ {"comparison of promoted ~unsigned with constant", 498},
+ {"comparison of promoted ~unsigned with unsigned", 499},
+ {"pointer of type `void *' used in arithmetic", 500},
+ {"pointer to a function used in arithmetic", 501},
+ {"pointer of type `void *' used in subtraction", 502},
+ {"pointer to a function used in subtraction", 503},
+ {"wrong type argument to unary plus", 504},
+ {"wrong type argument to unary minus", 505},
+ {"wrong type argument to bit-complement", 506},
+ {"wrong type argument to abs", 507},
+ {"wrong type argument to conjugation", 508},
+ {"wrong type argument to unary exclamation mark", 509},
+ {"wrong type argument to %s", 510},
+ {"%s of pointer to unknown structure", 511},
+ {"invalid lvalue in increment", 512},
+ {"invalid lvalue in decrement", 513},
+ {"increment", 514},
+ {"decrement", 515},
+ {"ISO C forbids the address of a cast expression", 516},
+ {"invalid lvalue in unary `&'", 517},
+ {"attempt to take address of bit-field structure member `%s'", 518},
+ {"%s", 519},
+ {"ISO C forbids use of conditional expressions as lvalues", 520},
+ {"ISO C forbids use of compound expressions as lvalues", 521},
+ {"ISO C forbids use of cast expressions as lvalues", 522},
+ {"%s of read-only member `%s'", 523},
+ {"%s of read-only variable `%s'", 524},
+ {"%s of read-only location", 525},
+ {"cannot take address of bitfield `%s'", 526},
+ {"global register variable `%s' used in nested function", 527},
+ {"register variable `%s' used in nested function", 528},
+ {"address of global register variable `%s' requested", 529},
+ {"cannot put object with volatile field into register", 530},
+ {"address of register variable `%s' requested", 531},
+ {"signed and unsigned type in conditional expression", 532},
+ {"ISO C forbids conditional expr with only one void side", 533},
+ {"ISO C forbids conditional expr between `void *' and function pointer", 534},
+ {"pointer type mismatch in conditional expression", 535},
+ {"pointer/integer type mismatch in conditional expression", 536},
+ {"ANSI C forbids conditional expr between 0 and function pointer", 537},
+ {"type mismatch in conditional expression", 538},
+ {"left-hand operand of comma expression has no effect", 539},
+ {"cast specifies array type", 540},
+ {"cast specifies function type", 541},
+ {"ISO C forbids casting nonscalar to the same type", 542},
+ {"ISO C forbids casts to union type", 543},
+ {"cast to union type from type not present in union", 544},
+ {"cast discards qualifiers from pointer target type", 545},
+ {"cast increases required alignment of target type", 546},
+ {"cast from pointer to integer of different size", 547},
+ {"cast does not match function type", 548},
+ {"cast to pointer from integer of different size", 549},
+ {"invalid lvalue in assignment", 550},
+ {"assignment", 551},
+ {"%s makes qualified function pointer from unqualified", 552},
+ {"%s discards qualifiers from pointer target type", 553},
+ {"ISO C prohibits argument conversion to union type", 554},
+ {"ISO C forbids %s between function pointer and `void *'", 555},
+ {"pointer targets in %s differ in signedness", 556},
+ {"%s from incompatible pointer type", 557},
+ {"%s makes pointer from integer without a cast", 558},
+ {"%s makes integer from pointer without a cast", 559},
+ {"incompatible type for argument %d of `%s'", 560},
+ {"incompatible type for argument %d of indirect function call", 561},
+ {"incompatible types in %s", 562},
+ {"passing arg %d of `%s'", 563},
+ {"passing arg %d of pointer to function", 564},
+ {"initializer for static variable is not constant", 565},
+ {"initializer for static variable uses complicated arithmetic", 566},
+ {"aggregate initializer is not constant", 567},
+ {"aggregate initializer uses complicated arithmetic", 568},
+ {"traditional C rejects automatic aggregate initialization", 569},
+ {"(near initialization for `%s')", 570},
+ {"char-array initialized from wide string", 571},
+ {"int-array initialized from non-wide string", 572},
+ {"initializer-string for array of chars is too long", 573},
+ {"array initialized from non-constant array expression", 574},
+ {"initializer element is not constant", 575},
+ {"initializer element is not computable at load time", 576},
+ {"initialization", 577},
+ {"invalid initializer", 578},
+ {"extra brace group at end of initializer", 579},
+ {"missing braces around initializer", 580},
+ {"braces around scalar initializer", 581},
+ {"missing initializer", 582},
+ {"empty braces in initializer", 583},
+ {"empty scalar initializer", 584},
+ {"extra elements in scalar initializer", 585},
+ {"zero or negative array size `%s'", 586},
+ {"nonconstant array index in initializer", 587},
+ {"array index in non-array initializer", 588},
+ {"duplicate array index in initializer", 589},
+ {"empty index range in initializer", 590},
+ {"ISO C89 forbids specifying element to initialize", 591},
+ {"unknown field `%s' specified in initializer", 592},
+ {"field `%s' already initialized", 593},
+ {"ISO C89 forbids specifying structure member to initialize", 594},
+ {"duplicate initializer", 595},
+ {"excess elements in char array initializer", 596},
+ {"excess elements in struct initializer", 597},
+ {"excess elements in union initializer", 598},
+ {"traditional C rejects initialization of unions", 599},
+ {"excess elements in array initializer", 600},
+ {"excess elements in scalar initializer", 601},
+ {"asm template is not a string constant", 602},
+ {"invalid lvalue in asm statement", 603},
+ {"modification by `asm'", 604},
+ {"function declared `noreturn' has a `return' statement", 605},
+ {"`return' with a value, in function returning void", 606},
+ {"return", 607},
+ {"function returns address of local variable", 608},
+ {"switch quantity not an integer", 609},
+ {"`long' switch expression not converted to `int' in ISO C", 610},
+ {"inlining failed in call to `%s'", 611},
+ {"called from here", 612},
+ {"can't inline call to `%s'", 613},
+ {"function call has aggregate value", 614},
+ {"internal error", 615},
+ {"no arguments", 616},
+ {"fopen %s", 617},
+ {"fclose %s", 618},
+ {"collect2 version %s", 619},
+ {"%d constructor(s) found\n", 620},
+ {"%d destructor(s) found\n", 621},
+ {"%d frame table(s) found\n", 622},
+ {"%s terminated with signal %d [%s]%s", 623},
+ {"%s returned %d exit status", 624},
+ {"[cannot find %s]", 625},
+ {"cannot find `%s'", 626},
+ {"redirecting stdout: %s", 627},
+ {"[Leaving %s]\n", 628},
{"\
\n\
-write_c_file - output name is %s, prefix is %s\n", 608},
- {"cannot find `nm'", 609},
- {"pipe", 610},
- {"fdopen", 611},
- {"dup2 %d 1", 612},
- {"close %d", 613},
- {"execvp %s", 614},
- {"init function found in object %s", 615},
- {"fini function found in object %s", 616},
- {"fclose", 617},
- {"unable to open file '%s'", 618},
- {"unable to stat file '%s'", 619},
- {"unable to mmap file '%s'", 620},
- {"not found\n", 621},
- {"dynamic dependency %s not found", 622},
- {"bad magic number in file '%s'", 623},
- {"dynamic dependencies.\n", 624},
- {"cannot find `ldd'", 625},
- {"execv %s", 626},
+write_c_file - output name is %s, prefix is %s\n", 629},
+ {"cannot find `nm'", 630},
+ {"pipe", 631},
+ {"fdopen", 632},
+ {"dup2 %d 1", 633},
+ {"close %d", 634},
+ {"execvp %s", 635},
+ {"init function found in object %s", 636},
+ {"fini function found in object %s", 637},
+ {"fclose", 638},
+ {"unable to open file '%s'", 639},
+ {"unable to stat file '%s'", 640},
+ {"unable to mmap file '%s'", 641},
+ {"not found\n", 642},
+ {"dynamic dependency %s not found", 643},
+ {"bad magic number in file '%s'", 644},
+ {"dynamic dependencies.\n", 645},
+ {"cannot find `ldd'", 646},
+ {"execv %s", 647},
{"\
\n\
-ldd output with constructors/destructors.\n", 627},
- {"unable to open dynamic dependency '%s'", 628},
- {"%s: not a COFF file", 629},
- {"%s: cannot open as COFF file", 630},
- {"Library lib%s not found", 631},
- {"open %s", 632},
- {"incompatibilities between object file & expected values", 633},
+ldd output with constructors/destructors.\n", 648},
+ {"unable to open dynamic dependency '%s'", 649},
+ {"%s: not a COFF file", 650},
+ {"%s: cannot open as COFF file", 651},
+ {"Library lib%s not found", 652},
+ {"open %s", 653},
+ {"incompatibilities between object file & expected values", 654},
{"\
\n\
-Processing symbol table #%d, offset = 0x%.8lx, kind = %s\n", 634},
- {"string section missing", 635},
- {"section pointer missing", 636},
- {"no symbol table found", 637},
- {"no cmd_strings found", 638},
+Processing symbol table #%d, offset = 0x%.8lx, kind = %s\n", 655},
+ {"string section missing", 656},
+ {"section pointer missing", 657},
+ {"no symbol table found", 658},
+ {"no cmd_strings found", 659},
{"\
\n\
Updating header and load commands.\n\
-\n", 639},
- {"load command map, %d cmds, new size %ld.\n", 640},
+\n", 660},
+ {"load command map, %d cmds, new size %ld.\n", 661},
{"\
writing load commands.\n\
-\n", 641},
- {"close %s", 642},
- {"could not convert 0x%l.8x into a region", 643},
- {"%s function, region %d, offset = %ld (0x%.8lx)\n", 644},
- {"bad magic number", 645},
- {"bad header version", 646},
- {"bad raw header version", 647},
- {"raw header buffer too small", 648},
- {"old raw header file", 649},
- {"unsupported version", 650},
- {"unknown {de,en}code_mach_o_hdr return value %d", 651},
- {"fstat %s", 652},
- {"lseek %s 0", 653},
- {"read %s", 654},
- {"read %ld bytes, expected %ld, from %s", 655},
- {"msync %s", 656},
- {"munmap %s", 657},
- {"write %s", 658},
- {"wrote %ld bytes, expected %ld, to %s", 659},
+\n", 662},
+ {"close %s", 663},
+ {"could not convert 0x%l.8x into a region", 664},
+ {"%s function, region %d, offset = %ld (0x%.8lx)\n", 665},
+ {"bad magic number", 666},
+ {"bad header version", 667},
+ {"bad raw header version", 668},
+ {"raw header buffer too small", 669},
+ {"old raw header file", 670},
+ {"unsupported version", 671},
+ {"unknown {de,en}code_mach_o_hdr return value %d", 672},
+ {"fstat %s", 673},
+ {"lseek %s 0", 674},
+ {"read %s", 675},
+ {"read %ld bytes, expected %ld, from %s", 676},
+ {"msync %s", 677},
+ {"munmap %s", 678},
+ {"write %s", 679},
+ {"wrote %ld bytes, expected %ld, to %s", 680},
{"\
;; Combiner statistics: %d attempts, %d substitutions (%d requiring new \
space),\n\
;; %d successes.\n\
-\n", 660},
+\n", 681},
{"\
\n\
;; Combiner totals: %d attempts, %d substitutions (%d requiring new space),\n\
-;; %d successes.\n", 661},
- {"invalid %%Q value", 662},
- {"invalid %%C value", 663},
- {"invalid %%N value", 664},
- {"invalid %%M value", 665},
- {"invalid %%m value", 666},
- {"invalid %%L value", 667},
- {"invalid %%O value", 668},
- {"invalid %%P value", 669},
- {"invalid %%V value", 670},
- {"Generate code assuming DW bit is set", 671},
- {"Generate code assuming DW bit is not set", 672},
- {"Generate code using byte writes", 673},
- {"Do not generate byte writes", 674},
- {"Use small memory model", 675},
- {"Use normal memory model", 676},
- {"Use large memory model", 677},
- {"Generate 29050 code", 678},
- {"Generate 29000 code", 679},
- {"Use kernel global registers", 680},
- {"Use user global registers", 681},
- {"Emit stack checking code", 682},
- {"Do not emit stack checking code", 683},
- {"Work around storem hardware bug", 684},
- {"Do not work around storem hardware bug", 685},
- {"Store locals in argument registers", 686},
- {"Do not store locals in arg registers", 687},
- {"Use software floating point", 688},
- {"Do not generate multm instructions", 689},
- {"bad value `%s' for -mtrap-precision switch", 690},
- {"bad value `%s' for -mfp-rounding-mode switch", 691},
- {"bad value `%s' for -mfp-trap-mode switch", 692},
- {"bad value `%s' for -mcpu switch", 693},
- {"fp software completion requires -mtrap-precision=i", 694},
- {"rounding mode not supported for VAX floats", 695},
- {"trap mode not supported for VAX floats", 696},
- {"L%d cache latency unknown for %s", 697},
- {"bad value `%s' for -mmemory-latency", 698},
- {"invalid %%r value", 699},
- {"invalid %%R value", 700},
- {"invalid %%h value", 701},
- {"invalid %%U value", 702},
- {"invalid %%s value", 703},
- {"invalid %%E value", 704},
- {"invalid %%xn code", 705},
- {"Use hardware fp", 706},
- {"Do not use hardware fp", 707},
- {"Use fp registers", 708},
- {"Do not use fp registers", 709},
- {"Do not assume GAS", 710},
- {"Assume GAS", 711},
- {"Request IEEE-conformant math library routines (OSF/1)", 712},
- {"Emit IEEE-conformant code, without inexact exceptions", 713},
- {"Emit IEEE-conformant code, with inexact exceptions", 714},
- {"Do not emit complex integer constants to read-only memory", 715},
- {"Use VAX fp", 716},
- {"Do not use VAX fp", 717},
- {"Emit code for the byte/word ISA extension", 718},
- {"Emit code for the motion video ISA extension", 719},
- {"Emit code for the fp move and sqrt ISA extension", 720},
- {"Emit code for the counting ISA extension", 721},
- {"Generate code for a given CPU", 722},
- {"Control the generated fp rounding mode", 723},
- {"Control the IEEE trap mode", 724},
- {"Control the precision given to fp exceptions", 725},
- {"Tune expected memory latency", 726},
- {"bad value (%s) for -mcpu switch", 727},
- {"invalid operand to %R code", 728},
- {"invalid operand to %H/%L code", 729},
- {"invalid operand to %U code", 730},
- {"invalid operand to %V code", 731},
- {"invalid operand output code", 732},
- {"switch -mcpu=%s conflicts with -march= switch", 733},
- {"bad value (%s) for %s switch", 734},
- {"target CPU does not support APCS-32", 735},
- {"target CPU does not support APCS-26", 736},
- {"target CPU does not support interworking", 737},
- {"target CPU does not supoport THUMB instructions.", 738},
- {"\
-enabling backtrace support is only meaningful when compiling for the Thumb.", 739},
+;; %d successes.\n", 682},
+ {"invalid %%Q value", 683},
+ {"invalid %%C value", 684},
+ {"invalid %%N value", 685},
+ {"invalid %%M value", 686},
+ {"invalid %%m value", 687},
+ {"invalid %%L value", 688},
+ {"invalid %%O value", 689},
+ {"invalid %%P value", 690},
+ {"invalid %%V value", 691},
+ {"Generate code assuming DW bit is set", 692},
+ {"Generate code assuming DW bit is not set", 693},
+ {"Generate code using byte writes", 694},
+ {"Do not generate byte writes", 695},
+ {"Use small memory model", 696},
+ {"Use normal memory model", 697},
+ {"Use large memory model", 698},
+ {"Generate 29050 code", 699},
+ {"Generate 29000 code", 700},
+ {"Use kernel global registers", 701},
+ {"Use user global registers", 702},
+ {"Emit stack checking code", 703},
+ {"Do not emit stack checking code", 704},
+ {"Work around storem hardware bug", 705},
+ {"Do not work around storem hardware bug", 706},
+ {"Store locals in argument registers", 707},
+ {"Do not store locals in arg registers", 708},
+ {"Use software floating point", 709},
+ {"Do not generate multm instructions", 710},
+ {"bad value `%s' for -mtrap-precision switch", 711},
+ {"bad value `%s' for -mfp-rounding-mode switch", 712},
+ {"bad value `%s' for -mfp-trap-mode switch", 713},
+ {"bad value `%s' for -mcpu switch", 714},
+ {"fp software completion requires -mtrap-precision=i", 715},
+ {"rounding mode not supported for VAX floats", 716},
+ {"trap mode not supported for VAX floats", 717},
+ {"L%d cache latency unknown for %s", 718},
+ {"bad value `%s' for -mmemory-latency", 719},
+ {"invalid %%r value", 720},
+ {"invalid %%R value", 721},
+ {"invalid %%h value", 722},
+ {"invalid %%U value", 723},
+ {"invalid %%s value", 724},
+ {"invalid %%E value", 725},
+ {"invalid %%xn code", 726},
+ {"Use hardware fp", 727},
+ {"Do not use hardware fp", 728},
+ {"Use fp registers", 729},
+ {"Do not use fp registers", 730},
+ {"Do not assume GAS", 731},
+ {"Assume GAS", 732},
+ {"Request IEEE-conformant math library routines (OSF/1)", 733},
+ {"Emit IEEE-conformant code, without inexact exceptions", 734},
+ {"Emit IEEE-conformant code, with inexact exceptions", 735},
+ {"Do not emit complex integer constants to read-only memory", 736},
+ {"Use VAX fp", 737},
+ {"Do not use VAX fp", 738},
+ {"Emit code for the byte/word ISA extension", 739},
+ {"Emit code for the motion video ISA extension", 740},
+ {"Emit code for the fp move and sqrt ISA extension", 741},
+ {"Emit code for the counting ISA extension", 742},
+ {"Generate code for a given CPU", 743},
+ {"Control the generated fp rounding mode", 744},
+ {"Control the IEEE trap mode", 745},
+ {"Control the precision given to fp exceptions", 746},
+ {"Tune expected memory latency", 747},
+ {"bad value (%s) for -mcpu switch", 748},
+ {"invalid operand to %R code", 749},
+ {"invalid operand to %H/%L code", 750},
+ {"invalid operand to %U code", 751},
+ {"invalid operand to %V code", 752},
+ {"invalid operand output code", 753},
+ {"switch -mcpu=%s conflicts with -march= switch", 754},
+ {"bad value (%s) for %s switch", 755},
+ {"target CPU does not support APCS-32", 756},
+ {"target CPU does not support APCS-26", 757},
+ {"target CPU does not support interworking", 758},
+ {"target CPU does not supoport THUMB instructions.", 759},
+ {"\
+enabling backtrace support is only meaningful when compiling for the Thumb.", 760},
{"\
enabling callee interworking support is only meaningful when compiling for \
-the Thumb.", 740},
+the Thumb.", 761},
{"\
enabling caller interworking support is only meaningful when compiling for \
-the Thumb.", 741},
- {"interworking forces APCS-32 to be used", 742},
- {"-mapcs-stack-check incompatible with -mno-apcs-frame", 743},
- {"-fpic and -mapcs-reent are incompatible", 744},
- {"APCS reentrant code not supported. Ignored", 745},
- {"-g with -mno-apcs-frame may not give sensible debugging", 746},
- {"Passing floating point arguments in fp regs not yet supported", 747},
- {"Invalid floating point emulation option: -mfpe-%s", 748},
- {"Structure size boundary can only be set to 8 or 32", 749},
- {"-mpic-register= is useless without -fpic", 750},
- {"Unable to use '%s' for PIC register", 751},
- {"Unable to compute real location of stacked parameter", 752},
- {"No low registers available for popping high registers", 753},
- {"thumb_load_double_from_address: destination is not a register", 754},
- {"thumb_load_double_from_address: source is not a computed memory address", 755},
- {"thumb_load_double_from_address: base is not a register", 756},
- {"thumb_load_double_from_address: Unhandled address calculation", 757},
- {"Generate APCS conformant stack frames", 758},
- {"Store function names in object code", 759},
- {"Use the 32bit version of the APCS", 760},
- {"Use the 26bit version of the APCS", 761},
- {"Pass FP arguments in FP registers", 762},
- {"Generate re-entrant, PIC code", 763},
- {"The MMU will trap on unaligned accesses", 764},
- {"Use library calls to perform FP operations", 765},
- {"Use hardware floating point instructions", 766},
- {"Assume target CPU is configured as big endian", 767},
- {"Assume target CPU is configured as little endian", 768},
- {"Assume big endian bytes, little endian words", 769},
- {"Support calls between THUMB and ARM instructions sets", 770},
- {"Generate a call to abort if a noreturn function returns", 771},
- {"Do not move instructions into a function's prologue", 772},
- {"Do not load the PIC register in function prologues", 773},
- {"Generate call insns as indirect calls, if necessary", 774},
- {"Compile for the Thumb not the ARM", 775},
- {"Thumb: Generate (non-leaf) stack frames even if not needed", 776},
- {"Thumb: Generate (leaf) stack frames even if not needed", 777},
- {"Thumb: Assume non-static functions may be called from ARM code", 778},
- {"Thumb: Assume function pointers may go to non-Thumb aware code", 779},
- {"Specify the name of the target CPU", 780},
- {"Specify the name of the target architecture", 781},
- {"Specify the version of the floating point emulator", 782},
- {"Specify the minimum bit alignment of structures", 783},
- {"Specify the register to be used for PIC addressing", 784},
- {"Do symbol renaming for BSD", 785},
- {"Do symbol renaming for X/OPEN", 786},
- {"Don't do symbol renaming", 787},
- {"Generate code for the C400", 788},
- {"Generate code for the C300", 789},
- {"Generate code for c1", 790},
- {"Generate code for c2", 791},
- {"Generate code for c32", 792},
- {"Generate code for c34", 793},
- {"Use standard calling sequence, with arg count word", 794},
- {"Place arg count in a nop instruction (faster than push)", 795},
- {"Don't push arg count, depend on symbol table", 796},
- {"Use data cache for volatile mem refs (default)", 797},
- {"Don't use data cache for volatile mem refs", 798},
- {"Bypass data cache for volatile mem refs", 799},
- {"Use 64-bit longs", 800},
- {"Use cc- and libc-compatible 32-bit longs", 801},
- {"Invalid register class letter %c", 802},
- {"ACCUM_HIGH_REGS class in limit_reload_class", 803},
- {"YH_OR_ACCUM_HIGH_REGS found in limit_reload_class", 804},
- {"YL found in limit_reload_class", 805},
- {"Stack size > 32k", 806},
- {"Invalid addressing mode", 807},
- {"Bad register extension code", 808},
- {"Invalid offset in ybase addressing", 809},
- {"Invalid register in ybase addressing", 810},
- {"inline float constants not supported on this host", 811},
- {"Invalid shift operator in emit_1600_core_shift", 812},
- {"Invalid mode for gen_tst_reg", 813},
- {"Invalid mode for integer comparison in gen_compare_reg", 814},
- {"Invalid register for compare", 815},
- {"Profiling not implemented yet.", 816},
- {"Trampolines not yet implemented", 817},
- {"Generate code the unix assembler can handle", 818},
- {"Generate code an embedded assembler can handle", 819},
- {"Generate code for a mc68020", 820},
- {"Use bitfield instructions", 821},
- {"Generate code for a mc68000", 822},
- {"Generate software FP code", 823},
- {"Do not generate bitfield insns", 824},
- {"Use 16bit integers", 825},
- {"Use 32bit integers", 826},
- {"Only initialized variables can be placed into the 8-bit area.", 827},
- {"Generate H8/S code", 828},
- {"Do not generate H8/S code", 829},
- {"Make integers 32 bits wide", 830},
- {"Use registers for argument passing", 831},
- {"Do not use registers for argument passing", 832},
- {"Consider access to byte sized memory slow", 833},
- {"Enable linker relaxing", 834},
- {"Generate H8/300H code", 835},
- {"Do not generate H8/300H code", 836},
- {"Use H8/300 alignment rules", 837},
- {"Escape value out of range", 838},
- {"#pragma map alias is too long, truncated", 839},
- {"#pragma map options are missing or incorrect", 840},
- {"Generate char instructions", 841},
- {"Do not generate char instructions", 842},
- {"Use the Cygwin interface", 843},
- {"Use the Mingw32 interface", 844},
- {"Create GUI application", 845},
- {"Create console application", 846},
- {"Generate code for a DLL", 847},
- {"Ignore dllimport for functions", 848},
- {"Use Mingw-specific thread support", 849},
- {"-f%s ignored for target (all code is position independent)", 850},
- {"Internal gcc abort from %s:%d", 851},
- {"The local variable `insn' has the value:", 852},
- {"Retain standard MXDB information", 853},
- {"Retain legend information", 854},
- {"Generate external legend information", 855},
- {"Emit identifying info in .s file", 856},
- {"Warn when a function arg is a structure", 857},
- {"argument is a structure", 858},
- {"\
-Enable weak symbol and enhanced C++ template support. Binutils 2.9.5.1 or \
-higher required.", 859},
- {"Disable weak symbol and enhanced C++ template support.", 860},
- {"bad value (%s) for -march= switch", 861},
- {"bad value (%s) for -mcpu= switch", 862},
- {"Register '%c' is unknown", 863},
- {"Register '%c' already specified in allocation order", 864},
- {"-mregparm=%d is not between 0 and %d", 865},
- {"-malign-loops=%d is not between 0 and %d", 866},
- {"-malign-jumps=%d is not between 0 and %d", 867},
- {"-malign-functions=%d is not between 0 and %d", 868},
- {"-mpreferred-stack-boundary=%d is not between 2 and 31", 869},
- {"-mbranch-cost=%d is not between 0 and 5", 870},
- {"floating constant misused", 871},
- {"invalid UNSPEC as operand", 872},
- {"invalid expression as operand", 873},
- {"half-pic init called on systems that don't support it.", 874},
- {"Same as -mcpu=i386", 875},
- {"Same as -mcpu=i486", 876},
- {"Same as -mcpu=pentium", 877},
- {"Same as -mcpu=pentiumpro", 878},
- {"Alternate calling convention", 879},
- {"Use normal calling convention", 880},
- {"Align some doubles on dword boundary", 881},
- {"Align doubles on word boundary", 882},
- {"Uninitialized locals in .bss", 883},
- {"Uninitialized locals in .data", 884},
- {"Use IEEE math for fp comparisons", 885},
- {"Do not use IEEE math for fp comparisons", 886},
- {"Return values of functions in FPU registers", 887},
- {"Do not return values of functions in FPU registers", 888},
- {"Do not generate sin, cos, sqrt for FPU", 889},
- {"Generate sin, cos, sqrt for FPU", 890},
- {"Omit the frame pointer in leaf functions", 891},
- {"Enable stack probing", 892},
- {"Emit Intel syntax assembler opcodes", 893},
- {"Align destination of the string operations", 894},
- {"Do not align destination of the string operations", 895},
- {"Inline all known string operations", 896},
- {"Do not inline all known string operations", 897},
- {"Use push instructions to save outgoing arguments", 898},
- {"Do not use push instructions to save outgoing arguments", 899},
- {"Support MMX builtins", 900},
- {"Do not support MMX builtins", 901},
- {"Support MMX and SSE builtins", 902},
- {"Do not support MMX and SSE builtins", 903},
- {"Schedule code for given CPU", 904},
- {"Generate code for given CPU", 905},
- {"Control allocation order of integer registers", 906},
- {"Number of registers used to pass integer arguments", 907},
- {"Loop code aligned to this power of 2", 908},
- {"Jump targets are aligned to this power of 2", 909},
- {"Function starts are aligned to this power of 2", 910},
- {"Attempt to keep stack aligned to this power of 2", 911},
- {"Branches are this expensive (1-5, arbitrary units)", 912},
- {"Profiling uses mcount", 913},
- {"Emit half-PIC code", 914},
- {"Emit ELF object code", 915},
- {"Emit ROSE object code", 916},
- {"Symbols have a leading underscore", 917},
- {"Align to >word boundaries", 918},
- {"Use mcount for profiling", 919},
- {"Use mcount_ptr for profiling", 920},
- {"%s causes a section type conflict", 921},
- {"Generate COFF output", 922},
- {"Generate ELF output", 923},
- {"`%s' declared as both exported to and imported from a DLL.", 924},
- {"initialized variable `%s' is marked dllimport", 925},
- {"static variable `%s' is marked dllimport", 926},
- {"Generate code which uses the FPU", 927},
- {"Do not generate code which uses the FPU", 928},
- {"stack limit expression is not supported", 929},
- {"Generate SA code", 930},
- {"Generate SB code", 931},
- {"Generate KA code", 932},
- {"Generate KB code", 933},
- {"Generate JA code", 934},
- {"Generate JD code", 935},
- {"Generate JF code", 936},
- {"generate RP code", 937},
- {"Generate MC code", 938},
- {"Generate CA code", 939},
- {"Generate CF code", 940},
- {"Use alternate leaf function entries", 941},
- {"Do not use alternate leaf function entries", 942},
- {"Perform tail call optimization", 943},
- {"Do not perform tail call optimization", 944},
- {"Use complex addressing modes", 945},
- {"Do not use complex addressing modes", 946},
- {"Align code to 8 byte boundary", 947},
- {"Do not align code to 8 byte boundary", 948},
- {"Enable compatibility with iC960 v2.0", 949},
- {"Enable compatibility with iC960 v3.0", 950},
- {"Enable compatibility with ic960 assembler", 951},
- {"Do not permit unaligned accesses", 952},
- {"Permit unaligned accesses", 953},
- {"Layout types like Intel's v1.3 gcc", 954},
- {"Do not layout types like Intel's v1.3 gcc", 955},
- {"Use 64 bit long doubles", 956},
- {"Enable linker relaxation", 957},
- {"Do not enable linker relaxation", 958},
- {"conflicting architectures defined - using C series", 959},
- {"conflicting architectures defined - using K series", 960},
- {"iC2.0 and iC3.0 are incompatible - using iC3.0", 961},
- {"The -mlong-double-64 option does not work yet.", 962},
- {"-msystem-v and -p are incompatible", 963},
- {"-msystem-v and -mthreads are incompatible", 964},
- {"bad value (%s) for -mmodel switch", 965},
- {"bad value (%s) for -msdata switch", 966},
- {"const objects cannot go in .sdata/.sbss", 967},
- {"invalid operand to %s code", 968},
- {"invalid operand to %p code", 969},
- {"invalid operand to %T/%B code", 970},
- {"invalid operand to %N code", 971},
- {"Display compile time statistics", 972},
- {"Align all loops to 32 byte boundary", 973},
- {"Only issue one instruction per cycle", 974},
- {"Prefer branches over conditional execution", 975},
- {"Code size: small, medium or large", 976},
- {"Small data area: none, sdata, use", 977},
- {"-malign-loops=%d is not between 1 and %d", 978},
- {"-malign-jumps=%d is not between 1 and %d", 979},
- {"-malign-functions=%d is not between 1 and %d", 980},
- {"-fPIC is not currently supported on the 68000 or 68010\n", 981},
- {"Internal gcc monitor: short-branch(%x)", 982},
- {"Internal gcc error: Can't express symbolic location", 983},
- {"argument #%d is a structure", 984},
- {"%R not followed by %B/C/D/E", 985},
- {"invalid %x/X value", 986},
- {"invalid %H value", 987},
- {"invalid %h value", 988},
- {"invalid %Q value", 989},
- {"invalid %q value", 990},
- {"invalid %o value", 991},
- {"invalid %p value", 992},
- {"invalid %s/S value", 993},
- {"invalid %P operand", 994},
- {"invalid %B value", 995},
- {"invalid %C value", 996},
- {"invalid %D value", 997},
- {"invalid %E value", 998},
- {"`%d' operand isn't a register", 999},
- {"invalid %r value", 1000},
- {"operand is r0", 1001},
- {"operand is const_double", 1002},
- {"invalid code", 1003},
- {"-mtrap-large-shift and -mhandle-large-shift are incompatible", 1004},
- {"Invalid option `-mshort-data-%s'", 1005},
- {"-mshort-data-%s is too large ", 1006},
- {"-mshort-data-%s and PIC are incompatible", 1007},
- {"-mips%d not supported", 1008},
- {"bad value (%s) for -mips switch", 1009},
- {"bad value (%s) for -mabi= switch", 1010},
- {"-mabi=%s does not support -mips%d", 1011},
- {"The -mabi=32 support does not work yet.", 1012},
- {"This target does not support the -mabi switch.", 1013},
- {"-mcpu=%s does not support -mips%d", 1014},
- {"-mips%d does not support 64 bit fp registers", 1015},
- {"-mips%d does not support 64 bit gp registers", 1016},
- {"-G is incompatible with PIC code which is the default", 1017},
- {"-membedded-pic and -mabicalls are incompatible", 1018},
- {"-G and -membedded-pic are incompatible", 1019},
- {"Invalid option `entry%s'", 1020},
- {"-mentry is only meaningful with -mips-16", 1021},
- {"internal error: %%) found without a %%( in assembler pattern", 1022},
- {"internal error: %%] found without a %%[ in assembler pattern", 1023},
- {"internal error: %%> found without a %%< in assembler pattern", 1024},
- {"internal error: %%} found without a %%{ in assembler pattern", 1025},
- {"PRINT_OPERAND: Unknown punctuation '%c'", 1026},
- {"PRINT_OPERAND null pointer", 1027},
- {"PRINT_OPERAND: letter %c was found & insn was not CONST_INT", 1028},
- {"PRINT_OPERAND_ADDRESS, null pointer", 1029},
+the Thumb.", 762},
+ {"interworking forces APCS-32 to be used", 763},
+ {"-mapcs-stack-check incompatible with -mno-apcs-frame", 764},
+ {"-fpic and -mapcs-reent are incompatible", 765},
+ {"APCS reentrant code not supported. Ignored", 766},
+ {"-g with -mno-apcs-frame may not give sensible debugging", 767},
+ {"Passing floating point arguments in fp regs not yet supported", 768},
+ {"Invalid floating point emulation option: -mfpe-%s", 769},
+ {"Structure size boundary can only be set to 8 or 32", 770},
+ {"-mpic-register= is useless without -fpic", 771},
+ {"Unable to use '%s' for PIC register", 772},
+ {"Unable to compute real location of stacked parameter", 773},
+ {"No low registers available for popping high registers", 774},
+ {"thumb_load_double_from_address: destination is not a register", 775},
+ {"thumb_load_double_from_address: source is not a computed memory address", 776},
+ {"thumb_load_double_from_address: base is not a register", 777},
+ {"thumb_load_double_from_address: Unhandled address calculation", 778},
+ {"Generate APCS conformant stack frames", 779},
+ {"Store function names in object code", 780},
+ {"Use the 32bit version of the APCS", 781},
+ {"Use the 26bit version of the APCS", 782},
+ {"Pass FP arguments in FP registers", 783},
+ {"Generate re-entrant, PIC code", 784},
+ {"The MMU will trap on unaligned accesses", 785},
+ {"Use library calls to perform FP operations", 786},
+ {"Use hardware floating point instructions", 787},
+ {"Assume target CPU is configured as big endian", 788},
+ {"Assume target CPU is configured as little endian", 789},
+ {"Assume big endian bytes, little endian words", 790},
+ {"Support calls between THUMB and ARM instructions sets", 791},
+ {"Generate a call to abort if a noreturn function returns", 792},
+ {"Do not move instructions into a function's prologue", 793},
+ {"Do not load the PIC register in function prologues", 794},
+ {"Generate call insns as indirect calls, if necessary", 795},
+ {"Compile for the Thumb not the ARM", 796},
+ {"Thumb: Generate (non-leaf) stack frames even if not needed", 797},
+ {"Thumb: Generate (leaf) stack frames even if not needed", 798},
+ {"Thumb: Assume non-static functions may be called from ARM code", 799},
+ {"Thumb: Assume function pointers may go to non-Thumb aware code", 800},
+ {"Specify the name of the target CPU", 801},
+ {"Specify the name of the target architecture", 802},
+ {"Specify the version of the floating point emulator", 803},
+ {"Specify the minimum bit alignment of structures", 804},
+ {"Specify the register to be used for PIC addressing", 805},
+ {"Do symbol renaming for BSD", 806},
+ {"Do symbol renaming for X/OPEN", 807},
+ {"Don't do symbol renaming", 808},
+ {"Generate code for the C400", 809},
+ {"Generate code for the C300", 810},
+ {"Generate code for c1", 811},
+ {"Generate code for c2", 812},
+ {"Generate code for c32", 813},
+ {"Generate code for c34", 814},
+ {"Use standard calling sequence, with arg count word", 815},
+ {"Place arg count in a nop instruction (faster than push)", 816},
+ {"Don't push arg count, depend on symbol table", 817},
+ {"Use data cache for volatile mem refs (default)", 818},
+ {"Don't use data cache for volatile mem refs", 819},
+ {"Bypass data cache for volatile mem refs", 820},
+ {"Use 64-bit longs", 821},
+ {"Use cc- and libc-compatible 32-bit longs", 822},
+ {"Invalid register class letter %c", 823},
+ {"ACCUM_HIGH_REGS class in limit_reload_class", 824},
+ {"YH_OR_ACCUM_HIGH_REGS found in limit_reload_class", 825},
+ {"YL found in limit_reload_class", 826},
+ {"Stack size > 32k", 827},
+ {"Invalid addressing mode", 828},
+ {"Bad register extension code", 829},
+ {"Invalid offset in ybase addressing", 830},
+ {"Invalid register in ybase addressing", 831},
+ {"inline float constants not supported on this host", 832},
+ {"Invalid shift operator in emit_1600_core_shift", 833},
+ {"Invalid mode for gen_tst_reg", 834},
+ {"Invalid mode for integer comparison in gen_compare_reg", 835},
+ {"Invalid register for compare", 836},
+ {"Profiling not implemented yet.", 837},
+ {"Trampolines not yet implemented", 838},
+ {"Generate code the unix assembler can handle", 839},
+ {"Generate code an embedded assembler can handle", 840},
+ {"Generate code for a mc68020", 841},
+ {"Use bitfield instructions", 842},
+ {"Generate code for a mc68000", 843},
+ {"Generate software FP code", 844},
+ {"Do not generate bitfield insns", 845},
+ {"Use 16bit integers", 846},
+ {"Use 32bit integers", 847},
+ {"Compile for Gmicro/300", 848},
+ {"Compile for Gmicro/200", 849},
+ {"Compile for Gmicro/100", 850},
+ {"Use floating point co-processor", 851},
+ {"Do not use floating point co-processor", 852},
+ {"Alternate calling convention", 853},
+ {"Use normal calling convention", 854},
+ {"Do not use bitfield instructions", 855},
+ {"Use alternative return sequence", 856},
+ {"Use normal return sequence", 857},
+ {"Always use string instruction", 858},
+ {"Use string instruction when appropriate", 859},
+ {"Only initialized variables can be placed into the 8-bit area.", 860},
+ {"Generate H8/S code", 861},
+ {"Do not generate H8/S code", 862},
+ {"Make integers 32 bits wide", 863},
+ {"Use registers for argument passing", 864},
+ {"Do not use registers for argument passing", 865},
+ {"Consider access to byte sized memory slow", 866},
+ {"Enable linker relaxing", 867},
+ {"Generate H8/300H code", 868},
+ {"Do not generate H8/300H code", 869},
+ {"Use H8/300 alignment rules", 870},
+ {"real name is too long - alias ignored", 871},
+ {"alias name is too long - alias ignored", 872},
+ {"junk at end of #pragma map", 873},
+ {"malformed #pragma map, ignored", 874},
+ {"Generate char instructions", 875},
+ {"Do not generate char instructions", 876},
+ {"Use the Cygwin interface", 877},
+ {"Use the Mingw32 interface", 878},
+ {"Create GUI application", 879},
+ {"Create console application", 880},
+ {"Generate code for a DLL", 881},
+ {"Ignore dllimport for functions", 882},
+ {"Use Mingw-specific thread support", 883},
+ {"-f%s ignored for target (all code is position independent)", 884},
+ {"Internal gcc abort from %s:%d", 885},
+ {"The local variable `insn' has the value:", 886},
+ {"Retain standard MXDB information", 887},
+ {"Retain legend information", 888},
+ {"Generate external legend information", 889},
+ {"Emit identifying info in .s file", 890},
+ {"Warn when a function arg is a structure", 891},
+ {"argument is a structure", 892},
+ {"bad value (%s) for -march= switch", 893},
+ {"bad value (%s) for -mcpu= switch", 894},
+ {"Register '%c' is unknown", 895},
+ {"Register '%c' already specified in allocation order", 896},
+ {"-mregparm=%d is not between 0 and %d", 897},
+ {"-malign-loops=%d is not between 0 and %d", 898},
+ {"-malign-jumps=%d is not between 0 and %d", 899},
+ {"-malign-functions=%d is not between 0 and %d", 900},
+ {"-mpreferred-stack-boundary=%d is not between 2 and 31", 901},
+ {"-mbranch-cost=%d is not between 0 and 5", 902},
+ {"floating constant misused", 903},
+ {"invalid UNSPEC as operand", 904},
+ {"invalid expression as operand", 905},
+ {"half-pic init called on systems that don't support it.", 906},
+ {"Same as -mcpu=i386", 907},
+ {"Same as -mcpu=i486", 908},
+ {"Same as -mcpu=pentium", 909},
+ {"Same as -mcpu=pentiumpro", 910},
+ {"Align some doubles on dword boundary", 911},
+ {"Align doubles on word boundary", 912},
+ {"Uninitialized locals in .bss", 913},
+ {"Uninitialized locals in .data", 914},
+ {"Use IEEE math for fp comparisons", 915},
+ {"Do not use IEEE math for fp comparisons", 916},
+ {"Return values of functions in FPU registers", 917},
+ {"Do not return values of functions in FPU registers", 918},
+ {"Do not generate sin, cos, sqrt for FPU", 919},
+ {"Generate sin, cos, sqrt for FPU", 920},
+ {"Omit the frame pointer in leaf functions", 921},
+ {"Enable stack probing", 922},
+ {"Emit Intel syntax assembler opcodes", 923},
+ {"Align destination of the string operations", 924},
+ {"Do not align destination of the string operations", 925},
+ {"Inline all known string operations", 926},
+ {"Do not inline all known string operations", 927},
+ {"Use push instructions to save outgoing arguments", 928},
+ {"Do not use push instructions to save outgoing arguments", 929},
+ {"Support MMX builtins", 930},
+ {"Do not support MMX builtins", 931},
+ {"Support MMX and SSE builtins", 932},
+ {"Do not support MMX and SSE builtins", 933},
+ {"Schedule code for given CPU", 934},
+ {"Generate code for given CPU", 935},
+ {"Control allocation order of integer registers", 936},
+ {"Number of registers used to pass integer arguments", 937},
+ {"Loop code aligned to this power of 2", 938},
+ {"Jump targets are aligned to this power of 2", 939},
+ {"Function starts are aligned to this power of 2", 940},
+ {"Attempt to keep stack aligned to this power of 2", 941},
+ {"Branches are this expensive (1-5, arbitrary units)", 942},
+ {"Profiling uses mcount", 943},
+ {"Emit half-PIC code", 944},
+ {"Emit ELF object code", 945},
+ {"Emit ROSE object code", 946},
+ {"Symbols have a leading underscore", 947},
+ {"Align to >word boundaries", 948},
+ {"Use mcount for profiling", 949},
+ {"Use mcount_ptr for profiling", 950},
+ {"%s causes a section type conflict", 951},
+ {"Generate COFF output", 952},
+ {"Generate ELF output", 953},
+ {"`%s' declared as both exported to and imported from a DLL.", 954},
+ {"initialized variable `%s' is marked dllimport", 955},
+ {"static variable `%s' is marked dllimport", 956},
+ {"Environment variable DJGPP not defined.", 957},
+ {"Environment variable DJGPP points to missing file '%s'.", 958},
+ {"Environment variable DJGPP points to corrupt file '%s'.", 959},
+ {"Generate code which uses the FPU", 960},
+ {"Do not generate code which uses the FPU", 961},
+ {"sorry, not implemented: #pragma align NAME=SIZE", 962},
+ {"malformed #pragma align - ignored", 963},
+ {"sorry, not implemented: #pragma noalign NAME", 964},
+ {"stack limit expression is not supported", 965},
+ {"Generate SA code", 966},
+ {"Generate SB code", 967},
+ {"Generate KA code", 968},
+ {"Generate KB code", 969},
+ {"Generate JA code", 970},
+ {"Generate JD code", 971},
+ {"Generate JF code", 972},
+ {"generate RP code", 973},
+ {"Generate MC code", 974},
+ {"Generate CA code", 975},
+ {"Generate CF code", 976},
+ {"Use alternate leaf function entries", 977},
+ {"Do not use alternate leaf function entries", 978},
+ {"Perform tail call optimization", 979},
+ {"Do not perform tail call optimization", 980},
+ {"Use complex addressing modes", 981},
+ {"Do not use complex addressing modes", 982},
+ {"Align code to 8 byte boundary", 983},
+ {"Do not align code to 8 byte boundary", 984},
+ {"Enable compatibility with iC960 v2.0", 985},
+ {"Enable compatibility with iC960 v3.0", 986},
+ {"Enable compatibility with ic960 assembler", 987},
+ {"Do not permit unaligned accesses", 988},
+ {"Permit unaligned accesses", 989},
+ {"Layout types like Intel's v1.3 gcc", 990},
+ {"Do not layout types like Intel's v1.3 gcc", 991},
+ {"Use 64 bit long doubles", 992},
+ {"Enable linker relaxation", 993},
+ {"Do not enable linker relaxation", 994},
+ {"conflicting architectures defined - using C series", 995},
+ {"conflicting architectures defined - using K series", 996},
+ {"iC2.0 and iC3.0 are incompatible - using iC3.0", 997},
+ {"The -mlong-double-64 option does not work yet.", 998},
+ {"-msystem-v and -p are incompatible", 999},
+ {"-msystem-v and -mthreads are incompatible", 1000},
+ {"bad value (%s) for -mmodel switch", 1001},
+ {"bad value (%s) for -msdata switch", 1002},
+ {"const objects cannot go in .sdata/.sbss", 1003},
+ {"invalid operand to %s code", 1004},
+ {"invalid operand to %p code", 1005},
+ {"invalid operand to %T/%B code", 1006},
+ {"invalid operand to %N code", 1007},
+ {"Display compile time statistics", 1008},
+ {"Align all loops to 32 byte boundary", 1009},
+ {"Only issue one instruction per cycle", 1010},
+ {"Prefer branches over conditional execution", 1011},
+ {"Code size: small, medium or large", 1012},
+ {"Small data area: none, sdata, use", 1013},
+ {"-malign-loops=%d is not between 1 and %d", 1014},
+ {"-malign-jumps=%d is not between 1 and %d", 1015},
+ {"-malign-functions=%d is not between 1 and %d", 1016},
+ {"-fPIC is not currently supported on the 68000 or 68010\n", 1017},
+ {"Internal gcc monitor: short-branch(%x)", 1018},
+ {"Internal gcc error: Can't express symbolic location", 1019},
+ {"argument #%d is a structure", 1020},
+ {"%R not followed by %B/C/D/E", 1021},
+ {"invalid %x/X value", 1022},
+ {"invalid %H value", 1023},
+ {"invalid %h value", 1024},
+ {"invalid %Q value", 1025},
+ {"invalid %q value", 1026},
+ {"invalid %o value", 1027},
+ {"invalid %p value", 1028},
+ {"invalid %s/S value", 1029},
+ {"invalid %P operand", 1030},
+ {"invalid %B value", 1031},
+ {"invalid %C value", 1032},
+ {"invalid %D value", 1033},
+ {"invalid %E value", 1034},
+ {"`%d' operand isn't a register", 1035},
+ {"invalid %r value", 1036},
+ {"operand is r0", 1037},
+ {"operand is const_double", 1038},
+ {"invalid code", 1039},
+ {"-mtrap-large-shift and -mhandle-large-shift are incompatible", 1040},
+ {"Invalid option `-mshort-data-%s'", 1041},
+ {"-mshort-data-%s is too large ", 1042},
+ {"-mshort-data-%s and PIC are incompatible", 1043},
+ {"-mips%d not supported", 1044},
+ {"bad value (%s) for -mips switch", 1045},
+ {"bad value (%s) for -mabi= switch", 1046},
+ {"-mabi=%s does not support -mips%d", 1047},
+ {"The -mabi=32 support does not work yet.", 1048},
+ {"This target does not support the -mabi switch.", 1049},
+ {"-mcpu=%s does not support -mips%d", 1050},
+ {"-mips%d does not support 64 bit fp registers", 1051},
+ {"-mips%d does not support 64 bit gp registers", 1052},
+ {"-G is incompatible with PIC code which is the default", 1053},
+ {"-membedded-pic and -mabicalls are incompatible", 1054},
+ {"-G and -membedded-pic are incompatible", 1055},
+ {"Invalid option `entry%s'", 1056},
+ {"-mentry is only meaningful with -mips-16", 1057},
+ {"internal error: %%) found without a %%( in assembler pattern", 1058},
+ {"internal error: %%] found without a %%[ in assembler pattern", 1059},
+ {"internal error: %%> found without a %%< in assembler pattern", 1060},
+ {"internal error: %%} found without a %%{ in assembler pattern", 1061},
+ {"PRINT_OPERAND: Unknown punctuation '%c'", 1062},
+ {"PRINT_OPERAND null pointer", 1063},
+ {"PRINT_OPERAND: letter %c was found & insn was not CONST_INT", 1064},
+ {"PRINT_OPERAND_ADDRESS, null pointer", 1065},
{"\
MIPS ECOFF format does not allow changing filenames within functions with \
-#line", 1030},
- {"gp_offset (%ld) or end_offset (%ld) is less than zero.", 1031},
- {"fp_offset (%ld) or end_offset (%ld) is less than zero.", 1032},
- {"can not handle inconsistent calls to `%s'", 1033},
- {"No default crt0.o", 1034},
- {"Use 64-bit int type", 1035},
- {"Use 64-bit long type", 1036},
- {"Use 32-bit long type", 1037},
- {"Optimize lui/addiu address loads", 1038},
- {"Don't optimize lui/addiu address loads", 1039},
- {"Use MIPS as", 1040},
- {"Use GNU as", 1041},
- {"Use symbolic register names", 1042},
- {"Don't use symbolic register names", 1043},
- {"Use GP relative sdata/sbss sections", 1044},
- {"Don't use GP relative sdata/sbss sections", 1045},
- {"Output compiler statistics", 1046},
- {"Don't output compiler statistics", 1047},
- {"Don't optimize block moves", 1048},
- {"Optimize block moves", 1049},
- {"Use mips-tfile asm postpass", 1050},
- {"Don't use mips-tfile asm postpass", 1051},
- {"Use hardware floating point", 1052},
- {"Use 64-bit FP registers", 1053},
- {"Use 32-bit FP registers", 1054},
- {"Use 64-bit general registers", 1055},
- {"Use 32-bit general registers", 1056},
- {"Use Irix PIC", 1057},
- {"Don't use Irix PIC", 1058},
- {"Use OSF PIC", 1059},
- {"Don't use OSF PIC", 1060},
- {"Use indirect calls", 1061},
- {"Don't use indirect calls", 1062},
- {"Use embedded PIC", 1063},
- {"Don't use embedded PIC", 1064},
- {"Use ROM instead of RAM", 1065},
- {"Don't use ROM instead of RAM", 1066},
- {"Put uninitialized constants in ROM (needs -membedded-data)", 1067},
- {"Don't put uninitialized constants in ROM", 1068},
- {"Use big-endian byte order", 1069},
- {"Use little-endian byte order", 1070},
- {"Use single (32-bit) FP only", 1071},
- {"Don't use single (32-bit) FP only", 1072},
- {"Use multiply accumulate", 1073},
- {"Don't use multiply accumulate", 1074},
- {"Work around early 4300 hardware bug", 1075},
- {"Don't work around early 4300 hardware bug", 1076},
- {"Optimize for 4650", 1077},
- {"Optimize for 3900", 1078},
- {"Trap on integer divide by zero", 1079},
- {"Don't trap on integer divide by zero", 1080},
- {"Trap on integer divide overflow", 1081},
- {"Don't trap on integer divide overflow", 1082},
- {"Specify CPU for scheduling purposes", 1083},
- {"Specify MIPS ISA", 1084},
- {"Use mips16 entry/exit psuedo ops", 1085},
- {"Don't use MIPS16 instructions", 1086},
- {"mips16 function profiling", 1087},
- {"Work around hardware multiply bug", 1088},
- {"Do not work around hardware multiply bug", 1089},
- {"optimization turned on", 1090},
- {"optimization turned off", 1091},
- {"optimization level restored", 1092},
- {"Don't use hardware fp", 1093},
- {"Alternative calling convention", 1094},
- {"Pass some arguments in registers", 1095},
- {"Pass all arguments on stack", 1096},
- {"Optimize for 32532 cpu", 1097},
- {"Optimize for 32332 cpu", 1098},
- {"Optimize for 32032", 1099},
- {"Register sb is zero. Use for absolute addressing", 1100},
- {"Do not use register sb", 1101},
- {"Do not use bitfield instructions", 1102},
- {"Generate code for high memory", 1103},
- {"Generate code for low memory", 1104},
- {"32381 fpu", 1105},
- {"Use multiply-accumulate fp instructions", 1106},
- {"Do not use multiply-accumulate fp instructions", 1107},
- {"\"Small register classes\" kludge", 1108},
- {"No \"Small register classes\" kludge", 1109},
+#line", 1066},
+ {"gp_offset (%ld) or end_offset (%ld) is less than zero.", 1067},
+ {"fp_offset (%ld) or end_offset (%ld) is less than zero.", 1068},
+ {"can not handle inconsistent calls to `%s'", 1069},
+ {"No default crt0.o", 1070},
+ {"Use 64-bit int type", 1071},
+ {"Use 64-bit long type", 1072},
+ {"Use 32-bit long type", 1073},
+ {"Optimize lui/addiu address loads", 1074},
+ {"Don't optimize lui/addiu address loads", 1075},
+ {"Use MIPS as", 1076},
+ {"Use GNU as", 1077},
+ {"Use symbolic register names", 1078},
+ {"Don't use symbolic register names", 1079},
+ {"Use GP relative sdata/sbss sections", 1080},
+ {"Don't use GP relative sdata/sbss sections", 1081},
+ {"Output compiler statistics", 1082},
+ {"Don't output compiler statistics", 1083},
+ {"Don't optimize block moves", 1084},
+ {"Optimize block moves", 1085},
+ {"Use mips-tfile asm postpass", 1086},
+ {"Don't use mips-tfile asm postpass", 1087},
+ {"Use hardware floating point", 1088},
+ {"Use 64-bit FP registers", 1089},
+ {"Use 32-bit FP registers", 1090},
+ {"Use 64-bit general registers", 1091},
+ {"Use 32-bit general registers", 1092},
+ {"Use Irix PIC", 1093},
+ {"Don't use Irix PIC", 1094},
+ {"Use OSF PIC", 1095},
+ {"Don't use OSF PIC", 1096},
+ {"Use indirect calls", 1097},
+ {"Don't use indirect calls", 1098},
+ {"Use embedded PIC", 1099},
+ {"Don't use embedded PIC", 1100},
+ {"Use ROM instead of RAM", 1101},
+ {"Don't use ROM instead of RAM", 1102},
+ {"Put uninitialized constants in ROM (needs -membedded-data)", 1103},
+ {"Don't put uninitialized constants in ROM", 1104},
+ {"Use big-endian byte order", 1105},
+ {"Use little-endian byte order", 1106},
+ {"Use single (32-bit) FP only", 1107},
+ {"Don't use single (32-bit) FP only", 1108},
+ {"Use multiply accumulate", 1109},
+ {"Don't use multiply accumulate", 1110},
+ {"Work around early 4300 hardware bug", 1111},
+ {"Don't work around early 4300 hardware bug", 1112},
+ {"Optimize for 4650", 1113},
+ {"Optimize for 3900", 1114},
+ {"Trap on integer divide by zero", 1115},
+ {"Don't trap on integer divide by zero", 1116},
+ {"Trap on integer divide overflow", 1117},
+ {"Don't trap on integer divide overflow", 1118},
+ {"Specify CPU for scheduling purposes", 1119},
+ {"Specify MIPS ISA", 1120},
+ {"Use mips16 entry/exit psuedo ops", 1121},
+ {"Don't use MIPS16 instructions", 1122},
+ {"mips16 function profiling", 1123},
+ {"Work around hardware multiply bug", 1124},
+ {"Do not work around hardware multiply bug", 1125},
+ {"Target the AM33 processor", 1126},
+ {"optimization turned on", 1127},
+ {"optimization turned off", 1128},
+ {"optimization level restored", 1129},
+ {"Don't use hardware fp", 1130},
+ {"Alternative calling convention", 1131},
+ {"Pass some arguments in registers", 1132},
+ {"Pass all arguments on stack", 1133},
+ {"Optimize for 32532 cpu", 1134},
+ {"Optimize for 32332 cpu", 1135},
+ {"Optimize for 32032", 1136},
+ {"Register sb is zero. Use for absolute addressing", 1137},
+ {"Do not use register sb", 1138},
+ {"Generate code for high memory", 1139},
+ {"Generate code for low memory", 1140},
+ {"32381 fpu", 1141},
+ {"Use multiply-accumulate fp instructions", 1142},
+ {"Do not use multiply-accumulate fp instructions", 1143},
+ {"\"Small register classes\" kludge", 1144},
+ {"No \"Small register classes\" kludge", 1145},
{"\
Unknown -mschedule= option (%s).\n\
-Valid options are 700, 7100, 7100LC, 7200, and 8000\n", 1110},
+Valid options are 700, 7100, 7100LC, 7200, and 8000\n", 1146},
{"\
Unknown -march= option (%s).\n\
-Valid options are 1.0, 1.1, and 2.0\n", 1111},
- {"PIC code generation is not supported in the portable runtime model\n", 1112},
- {"PIC code generation is not compatible with fast indirect calls\n", 1113},
- {"PIC code generation is not compatible with profiling\n", 1114},
- {"-g is only supported when using GAS on this processor,", 1115},
- {"-g option disabled.", 1116},
- {"Do not use hardware floating point", 1117},
- {"Return floating point results in ac0", 1118},
- {"Return floating point results in memory", 1119},
- {"Generate code for an 11/40", 1120},
- {"Generate code for an 11/45", 1121},
- {"Generate code for an 11/10", 1122},
- {"Use 32 bit int", 1123},
- {"Use 16 bit int", 1124},
- {"Use 32 bit float", 1125},
- {"Use 64 bit float", 1126},
- {"Target has split I&D", 1127},
- {"Target does not have split I&D", 1128},
- {"Use UNIX assembler syntax", 1129},
- {"Use DEC assembler syntax", 1130},
- {"invalid %%B value", 1131},
- {"invalid %%S value", 1132},
- {"invalid %%b value", 1133},
- {"invalid %%H value", 1134},
- {"invalid %%z value", 1135},
- {"invalid %%Z value", 1136},
- {"invalid %%k value", 1137},
- {"invalid %%j value", 1138},
- {"can't have varargs with -mfp-arg-in-fp-regs", 1139},
- {"Always pass floating-point arguments in memory", 1140},
- {"Don't always pass floating-point arguments in memory", 1141},
- {"Support message passing with the Parallel Environment", 1142},
- {"Compile for 64-bit pointers", 1143},
- {"Compile for 32-bit pointers", 1144},
- {"-maix64 and POWER architecture are incompatible.", 1145},
- {"-maix64 requires PowerPC64 architecture remain enabled.", 1146},
+Valid options are 1.0, 1.1, and 2.0\n", 1147},
+ {"PIC code generation is not supported in the portable runtime model\n", 1148},
+ {"PIC code generation is not compatible with fast indirect calls\n", 1149},
+ {"PIC code generation is not compatible with profiling\n", 1150},
+ {"-g is only supported when using GAS on this processor,", 1151},
+ {"-g option disabled.", 1152},
+ {"Do not use hardware floating point", 1153},
+ {"Return floating point results in ac0", 1154},
+ {"Return floating point results in memory", 1155},
+ {"Generate code for an 11/40", 1156},
+ {"Generate code for an 11/45", 1157},
+ {"Generate code for an 11/10", 1158},
+ {"Use 32 bit int", 1159},
+ {"Use 16 bit int", 1160},
+ {"Use 32 bit float", 1161},
+ {"Use 64 bit float", 1162},
+ {"Target has split I&D", 1163},
+ {"Target does not have split I&D", 1164},
+ {"Use UNIX assembler syntax", 1165},
+ {"Use DEC assembler syntax", 1166},
+ {"invalid %%B value", 1167},
+ {"invalid %%S value", 1168},
+ {"invalid %%b value", 1169},
+ {"invalid %%H value", 1170},
+ {"invalid %%z value", 1171},
+ {"invalid %%Z value", 1172},
+ {"invalid %%k value", 1173},
+ {"invalid %%j value", 1174},
+ {"can't have varargs with -mfp-arg-in-fp-regs", 1175},
+ {"Always pass floating-point arguments in memory", 1176},
+ {"Don't always pass floating-point arguments in memory", 1177},
+ {"Support message passing with the Parallel Environment", 1178},
+ {"Compile for 64-bit pointers", 1179},
+ {"Compile for 32-bit pointers", 1180},
+ {"-maix64 and POWER architecture are incompatible.", 1181},
+ {"-maix64 requires PowerPC64 architecture remain enabled.", 1182},
{"\
-maix64 required: 64-bit computation with 32-bit addressing not yet \
-supported.", 1147},
- {"-mmultiple is not supported on little endian systems", 1148},
- {"-mstring is not supported on little endian systems", 1149},
- {"-f%s ignored for AIX (all code is position independent)", 1150},
- {"Unknown -mdebug-%s switch", 1151},
- {"invalid %%f value", 1152},
- {"invalid %%F value", 1153},
- {"invalid %%G value", 1154},
- {"invalid %%j code", 1155},
- {"invalid %%J code", 1156},
- {"invalid %%K value", 1157},
- {"invalid %%p value", 1158},
- {"invalid %%q value", 1159},
- {"%%S computed all 1's mask", 1160},
- {"%%S computed all 0's mask", 1161},
- {"invalid %%u value", 1162},
- {"invalid %%v value", 1163},
- {"Use POWER instruction set", 1164},
- {"Use POWER2 instruction set", 1165},
- {"Do not use POWER2 instruction set", 1166},
- {"Do not use POWER instruction set", 1167},
- {"Use PowerPC instruction set", 1168},
- {"Do not use PowerPC instruction set", 1169},
- {"Use PowerPC General Purpose group optional instructions", 1170},
- {"Don't use PowerPC General Purpose group optional instructions", 1171},
- {"Use PowerPC Graphics group optional instructions", 1172},
- {"Don't use PowerPC Graphics group optional instructions", 1173},
- {"Use PowerPC-64 instruction set", 1174},
- {"Don't use PowerPC-64 instruction set", 1175},
- {"Use new mnemonics for PowerPC architecture", 1176},
- {"Use old mnemonics for PowerPC architecture", 1177},
- {"Put everything in the regular TOC", 1178},
- {"Place floating point constants in TOC", 1179},
- {"Don't place floating point constants in TOC", 1180},
- {"Place symbol+offset constants in TOC", 1181},
- {"Don't place symbol+offset constants in TOC", 1182},
- {"Place variable addresses in the regular TOC", 1183},
- {"Generate load/store multiple instructions", 1184},
- {"Do not generate load/store multiple instructions", 1185},
- {"Generate string instructions for block moves", 1186},
- {"Do not generate string instructions for block moves", 1187},
- {"Generate load/store with update instructions", 1188},
- {"Do not generate load/store with update instructions", 1189},
- {"Generate fused multiply/add instructions", 1190},
- {"Don't generate fused multiply/add instructions", 1191},
- {"Don't schedule the start and end of the procedure", 1192},
- {"Use features of and schedule code for given CPU", 1193},
- {"Enable debug output", 1194},
- {"RETURN_ADDRESS_OFFSET not supported", 1195},
- {"Select ABI calling convention.", 1196},
- {"Select method for sdata handling.", 1197},
- {"Align to the base type of the bitfield.", 1198},
- {"Don't align to the base type of the bitfield.", 1199},
- {"Don't assume that unaligned accesses are handled by the system", 1200},
- {"Assume that unaligned accesses are handled by the system", 1201},
- {"Produce code relocatable at runtime.", 1202},
- {"Don't produce code relocatable at runtime.", 1203},
- {"Produce little endian code.", 1204},
- {"Produce big endian code.", 1205},
- {"no description yet", 1206},
- {"Use EABI.", 1207},
- {"Don't use EABI.", 1208},
- {"Use alternate register names.", 1209},
- {"Don't use alternate register names.", 1210},
- {"Link with libsim.a, libc.a and sim-crt0.o.", 1211},
- {"Link with libads.a, libc.a and crt0.o.", 1212},
- {"Link with libyk.a, libc.a and crt0.o.", 1213},
- {"Link with libmvme.a, libc.a and crt0.o.", 1214},
- {"Set the PPC_EMB bit in the ELF flags header", 1215},
- {"Bad value for -mcall-%s", 1216},
- {"Bad value for -msdata=%s", 1217},
- {"-mrelocatable and -msdata=%s are incompatible.", 1218},
- {"-f%s and -msdata=%s are incompatible.", 1219},
- {"-msdata=%s and -mcall-%s are incompatible.", 1220},
- {"-mrelocatable and -mno-minimal-toc are incompatible.", 1221},
- {"-mrelocatable and -mcall-%s are incompatible.", 1222},
- {"-fPIC and -mcall-%s are incompatible.", 1223},
- {"-mcall-aixdesc must be big endian", 1224},
- {"Use 128 bit long doubles", 1225},
- {"Generate code for big endian", 1226},
- {"Generate code for little endian", 1227},
- {"%s is not supported by this configuration", 1228},
- {"-mptr%d not allowed on -m%d", 1229},
- {"-mlong-double-64 not allowed with -m64", 1230},
- {"bad value (%s) for -mcmodel= switch", 1231},
- {"-mcmodel= is not supported on 32 bit systems", 1232},
- {"profiling does not support code models other than medlow", 1233},
- {"Invalid %%Y operand", 1234},
- {"Invalid %%A operand", 1235},
- {"Invalid %%B operand", 1236},
- {"Invalid %%c operand", 1237},
- {"Invalid %%C operand", 1238},
- {"Invalid %%d operand", 1239},
- {"Invalid %%D operand", 1240},
- {"Invalid %%f operand", 1241},
- {"long long constant not a valid immediate operand", 1242},
- {"floating point constant not a valid immediate operand", 1243},
- {"%s and profiling conflict: disabling %s", 1244},
- {"Use FUNCTION_EPILOGUE", 1245},
- {"Do not use FUNCTION_EPILOGUE", 1246},
- {"Assume possible double misalignment", 1247},
- {"Assume all doubles are aligned", 1248},
- {"Pass -assert pure-text to linker", 1249},
- {"Do not pass -assert pure-text to linker", 1250},
- {"Use flat register window model", 1251},
- {"Do not use flat register window model", 1252},
- {"Use ABI reserved registers", 1253},
- {"Do not use ABI reserved registers", 1254},
- {"Use hardware quad fp instructions", 1255},
- {"Do not use hardware quad fp instructions", 1256},
- {"Compile for v8plus ABI", 1257},
- {"Do not compile for v8plus ABI", 1258},
- {"Utilize Visual Instruction Set", 1259},
- {"Do not utilize Visual Instruction Set", 1260},
- {"Optimize for Cypress processors", 1261},
- {"Optimize for SparcLite processors", 1262},
- {"Optimize for F930 processors", 1263},
- {"Optimize for F934 processors", 1264},
- {"Use V8 Sparc ISA", 1265},
- {"Optimize for SuperSparc processors", 1266},
- {"Pointers are 64-bit", 1267},
- {"Pointers are 32-bit", 1268},
- {"Use 32-bit ABI", 1269},
- {"Use 64-bit ABI", 1270},
- {"Use stack bias", 1271},
- {"Do not use stack bias", 1272},
- {"Use structs on stronger alignment for double-word copies", 1273},
- {"Do not use structs on stronger alignment for double-word copies", 1274},
- {"Optimize tail call instructions in assembler and linker", 1275},
- {"Do not optimize tail call instructions in assembler or linker", 1276},
- {"Use given Sparc code model", 1277},
- {"%s=%s is not numeric.", 1278},
- {"%s=%s is too large.", 1279},
- {"a data area attribute cannot be specified for local variables", 1280},
- {"data area of '%s' conflicts with previous declaration", 1281},
- {"Bogus JR construction: %d\n", 1282},
- {"Bad amount of stack space removal: %d", 1283},
- {"Bogus JARL construction: %d\n", 1284},
- {"#pragma GHS endXXXX found without previous startXXX", 1285},
- {"#pragma GHS endXXX does not match previous startXXX", 1286},
- {"Cannot set interrupt attribute: no current function", 1287},
- {"Cannot set interrupt attribute: no such identifier", 1288},
- {"Incomplete #pragma ghs", 1289},
- {"Nothing follows #pragma ghs", 1290},
- {"Unrecognised GHS pragma: '%s'\n", 1291},
- {"Extra text after valid #pragma: '%s'", 1292},
- {"Unrecognised section name '%s' in GHS section pragma", 1293},
- {"Missing '=' in GHS section pragma", 1294},
- {"Malformed GHS section pragma: found '%s' instead of a comma", 1295},
- {"Missing trailing \" in #pragma ghs", 1296},
- {"Support Green Hills ABI", 1297},
- {"Prohibit PC relative function calls", 1298},
- {"Reuse r30 on a per function basis", 1299},
- {"Use stubs for function prologues", 1300},
- {"Same as: -mep -mprolog-function", 1301},
- {"Enable backend debugging", 1302},
- {"Compile for the v850 processor", 1303},
- {"Use 4 byte entries in switch tables", 1304},
- {"Set the max size of data eligible for the TDA area", 1305},
- {"Set the max size of data eligible for the SDA area", 1306},
- {"Set the max size of data eligible for the ZDA area", 1307},
- {"cannot convert to a pointer type", 1308},
- {"pointer value used where a floating point value was expected", 1309},
- {"aggregate value used where a float was expected", 1310},
- {"conversion to incomplete type", 1311},
- {"can't convert between vector values of different size", 1312},
- {"aggregate value used where an integer was expected", 1313},
- {"pointer value used where a complex was expected", 1314},
- {"aggregate value used where a complex was expected", 1315},
- {"can't convert value to a vector", 1316},
- {"unable to call pointer to member function here", 1317},
- {"destructors take no parameters", 1318},
- {"ISO C++ forbids omitting the middle term of a ?: expression", 1319},
- {"internal inconsistency: binfo offset error for rtti", 1320},
- {"conflicting access specifications for field `%s', ignored", 1321},
- {"trying to finish struct, but kicked out due to previous parse errors.", 1322},
- {"language string `\"%s\"' not recognized", 1323},
- {"not enough type information", 1324},
- {"invalid operation on uninstantiated type", 1325},
- {"\
-object size exceeds built-in limit for virtual function table implementation", 1326},
+supported.", 1183},
+ {"-mmultiple is not supported on little endian systems", 1184},
+ {"-mstring is not supported on little endian systems", 1185},
+ {"-f%s ignored for AIX (all code is position independent)", 1186},
+ {"-ffunction-sections disabled on AIX when debugging", 1187},
+ {"-fdata-sections not supported on AIX", 1188},
+ {"Unknown -mdebug-%s switch", 1189},
+ {"invalid %%f value", 1190},
+ {"invalid %%F value", 1191},
+ {"invalid %%G value", 1192},
+ {"invalid %%j code", 1193},
+ {"invalid %%J code", 1194},
+ {"invalid %%K value", 1195},
+ {"invalid %%p value", 1196},
+ {"invalid %%q value", 1197},
+ {"%%S computed all 1's mask", 1198},
+ {"%%S computed all 0's mask", 1199},
+ {"invalid %%T value", 1200},
+ {"invalid %%u value", 1201},
+ {"invalid %%v value", 1202},
+ {"invalid %%W value", 1203},
+ {"Use POWER instruction set", 1204},
+ {"Use POWER2 instruction set", 1205},
+ {"Do not use POWER2 instruction set", 1206},
+ {"Do not use POWER instruction set", 1207},
+ {"Use PowerPC instruction set", 1208},
+ {"Do not use PowerPC instruction set", 1209},
+ {"Use PowerPC General Purpose group optional instructions", 1210},
+ {"Don't use PowerPC General Purpose group optional instructions", 1211},
+ {"Use PowerPC Graphics group optional instructions", 1212},
+ {"Don't use PowerPC Graphics group optional instructions", 1213},
+ {"Use PowerPC-64 instruction set", 1214},
+ {"Don't use PowerPC-64 instruction set", 1215},
+ {"Use new mnemonics for PowerPC architecture", 1216},
+ {"Use old mnemonics for PowerPC architecture", 1217},
+ {"Put everything in the regular TOC", 1218},
+ {"Place floating point constants in TOC", 1219},
+ {"Don't place floating point constants in TOC", 1220},
+ {"Place symbol+offset constants in TOC", 1221},
+ {"Don't place symbol+offset constants in TOC", 1222},
+ {"Place variable addresses in the regular TOC", 1223},
+ {"Generate load/store multiple instructions", 1224},
+ {"Do not generate load/store multiple instructions", 1225},
+ {"Generate string instructions for block moves", 1226},
+ {"Do not generate string instructions for block moves", 1227},
+ {"Generate load/store with update instructions", 1228},
+ {"Do not generate load/store with update instructions", 1229},
+ {"Generate fused multiply/add instructions", 1230},
+ {"Don't generate fused multiply/add instructions", 1231},
+ {"Don't schedule the start and end of the procedure", 1232},
+ {"Use features of and schedule code for given CPU", 1233},
+ {"Enable debug output", 1234},
+ {"RETURN_ADDRESS_OFFSET not supported", 1235},
+ {"Select ABI calling convention.", 1236},
+ {"Select method for sdata handling.", 1237},
+ {"Align to the base type of the bitfield.", 1238},
+ {"Don't align to the base type of the bitfield.", 1239},
+ {"Don't assume that unaligned accesses are handled by the system", 1240},
+ {"Assume that unaligned accesses are handled by the system", 1241},
+ {"Produce code relocatable at runtime.", 1242},
+ {"Don't produce code relocatable at runtime.", 1243},
+ {"Produce little endian code.", 1244},
+ {"Produce big endian code.", 1245},
+ {"Use 128 bit long doubles", 1246},
+ {"no description yet", 1247},
+ {"Use EABI.", 1248},
+ {"Don't use EABI.", 1249},
+ {"Use alternate register names.", 1250},
+ {"Don't use alternate register names.", 1251},
+ {"Link with libsim.a, libc.a and sim-crt0.o.", 1252},
+ {"Link with libads.a, libc.a and crt0.o.", 1253},
+ {"Link with libyk.a, libc.a and crt0.o.", 1254},
+ {"Link with libmvme.a, libc.a and crt0.o.", 1255},
+ {"Set the PPC_EMB bit in the ELF flags header", 1256},
+ {"Bad value for -mcall-%s", 1257},
+ {"Bad value for -msdata=%s", 1258},
+ {"-mrelocatable and -msdata=%s are incompatible.", 1259},
+ {"-f%s and -msdata=%s are incompatible.", 1260},
+ {"-msdata=%s and -mcall-%s are incompatible.", 1261},
+ {"-mrelocatable and -mno-minimal-toc are incompatible.", 1262},
+ {"-mrelocatable and -mcall-%s are incompatible.", 1263},
+ {"-fPIC and -mcall-%s are incompatible.", 1264},
+ {"-mcall-aixdesc must be big endian", 1265},
+ {"Generate code for big endian", 1266},
+ {"Generate code for little endian", 1267},
+ {"%s is not supported by this configuration", 1268},
+ {"-mptr%d not allowed on -m%d", 1269},
+ {"-mlong-double-64 not allowed with -m64", 1270},
+ {"bad value (%s) for -mcmodel= switch", 1271},
+ {"-mcmodel= is not supported on 32 bit systems", 1272},
+ {"profiling does not support code models other than medlow", 1273},
+ {"Invalid %%Y operand", 1274},
+ {"Invalid %%A operand", 1275},
+ {"Invalid %%B operand", 1276},
+ {"Invalid %%c operand", 1277},
+ {"Invalid %%C operand", 1278},
+ {"Invalid %%d operand", 1279},
+ {"Invalid %%D operand", 1280},
+ {"Invalid %%f operand", 1281},
+ {"long long constant not a valid immediate operand", 1282},
+ {"floating point constant not a valid immediate operand", 1283},
+ {"%s and profiling conflict: disabling %s", 1284},
+ {"Use FUNCTION_EPILOGUE", 1285},
+ {"Do not use FUNCTION_EPILOGUE", 1286},
+ {"Assume possible double misalignment", 1287},
+ {"Assume all doubles are aligned", 1288},
+ {"Pass -assert pure-text to linker", 1289},
+ {"Do not pass -assert pure-text to linker", 1290},
+ {"Use flat register window model", 1291},
+ {"Do not use flat register window model", 1292},
+ {"Use ABI reserved registers", 1293},
+ {"Do not use ABI reserved registers", 1294},
+ {"Use hardware quad fp instructions", 1295},
+ {"Do not use hardware quad fp instructions", 1296},
+ {"Compile for v8plus ABI", 1297},
+ {"Do not compile for v8plus ABI", 1298},
+ {"Utilize Visual Instruction Set", 1299},
+ {"Do not utilize Visual Instruction Set", 1300},
+ {"Optimize for Cypress processors", 1301},
+ {"Optimize for SparcLite processors", 1302},
+ {"Optimize for F930 processors", 1303},
+ {"Optimize for F934 processors", 1304},
+ {"Use V8 Sparc ISA", 1305},
+ {"Optimize for SuperSparc processors", 1306},
+ {"Pointers are 64-bit", 1307},
+ {"Pointers are 32-bit", 1308},
+ {"Use 32-bit ABI", 1309},
+ {"Use 64-bit ABI", 1310},
+ {"Use stack bias", 1311},
+ {"Do not use stack bias", 1312},
+ {"Use structs on stronger alignment for double-word copies", 1313},
+ {"Do not use structs on stronger alignment for double-word copies", 1314},
+ {"Optimize tail call instructions in assembler and linker", 1315},
+ {"Do not optimize tail call instructions in assembler or linker", 1316},
+ {"Use given Sparc code model", 1317},
+ {"%s=%s is not numeric.", 1318},
+ {"%s=%s is too large.", 1319},
+ {"a data area attribute cannot be specified for local variables", 1320},
+ {"data area of '%s' conflicts with previous declaration", 1321},
+ {"Bogus JR construction: %d\n", 1322},
+ {"Bad amount of stack space removal: %d", 1323},
+ {"Bogus JARL construction: %d\n", 1324},
+ {"#pragma GHS endXXXX found without previous startXXX", 1325},
+ {"#pragma GHS endXXX does not match previous startXXX", 1326},
+ {"Cannot set interrupt attribute: no current function", 1327},
+ {"Cannot set interrupt attribute: no such identifier", 1328},
+ {"junk at end of #pragma ghs section", 1329},
+ {"unrecognised section name \"%s\"", 1330},
+ {"malformed #pragma ghs section", 1331},
+ {"junk at end of #pragma ghs interrupt", 1332},
+ {"junk at end of #pragma ghs starttda", 1333},
+ {"junk at end of #pragma ghs startsda", 1334},
+ {"junk at end of #pragma ghs startzda", 1335},
+ {"junk at end of #pragma ghs endtda", 1336},
+ {"junk at end of #pragma ghs endsda", 1337},
+ {"junk at end of #pragma ghs endzda", 1338},
+ {"Support Green Hills ABI", 1339},
+ {"Prohibit PC relative function calls", 1340},
+ {"Reuse r30 on a per function basis", 1341},
+ {"Use stubs for function prologues", 1342},
+ {"Same as: -mep -mprolog-function", 1343},
+ {"Enable backend debugging", 1344},
+ {"Compile for the v850 processor", 1345},
+ {"Use 4 byte entries in switch tables", 1346},
+ {"Set the max size of data eligible for the TDA area", 1347},
+ {"Set the max size of data eligible for the SDA area", 1348},
+ {"Set the max size of data eligible for the ZDA area", 1349},
+ {"cannot convert to a pointer type", 1350},
+ {"pointer value used where a floating point value was expected", 1351},
+ {"aggregate value used where a float was expected", 1352},
+ {"conversion to incomplete type", 1353},
+ {"can't convert between vector values of different size", 1354},
+ {"aggregate value used where an integer was expected", 1355},
+ {"pointer value used where a complex was expected", 1356},
+ {"aggregate value used where a complex was expected", 1357},
+ {"can't convert value to a vector", 1358},
+ {"unable to call pointer to member function here", 1359},
+ {"destructors take no parameters", 1360},
+ {"ISO C++ forbids omitting the middle term of a ?: expression", 1361},
+ {"internal inconsistency: binfo offset error for rtti", 1362},
+ {"conflicting access specifications for field `%s', ignored", 1363},
+ {"trying to finish struct, but kicked out due to previous parse errors.", 1364},
+ {"language string `\"%s\"' not recognized", 1365},
+ {"not enough type information", 1366},
+ {"invalid operation on uninstantiated type", 1367},
+ {"\
+object size exceeds built-in limit for virtual function table implementation", 1368},
{"\
object size exceeds normal limit for virtual function table implementation, \
-recompile all source and use -fhuge-objects", 1327},
- {"internal compiler error: debugging info corrupted", 1328},
- {"parse errors have confused me too much", 1329},
- {"declaration of `%s' shadows a member of `this'", 1330},
- {"label `%s' referenced outside of any function", 1331},
- {"jump to case label", 1332},
- {" enters try block", 1333},
- {" from here", 1334},
- {"where case label appears here", 1335},
- {"(enclose actions of previous case statements requiring", 1336},
- {"destructors in their own binding contours.)", 1337},
- {"virtual memory exhausted", 1338},
- {"the new ABI requires vtable thunks", 1339},
- {"an anonymous union cannot have function members", 1340},
- {"multiple types in one declaration", 1341},
- {"declaration does not declare anything", 1342},
- {"ISO C++ prohibits anonymous structs", 1343},
- {"assignment (not initialization) in declaration", 1344},
- {"invalid catch parameter", 1345},
- {"destructor for alien class `%s' cannot be a member", 1346},
- {"constructor for alien class `%s' cannot be a member", 1347},
- {"cannot declare `::main' to be a template", 1348},
- {"cannot declare `::main' to be inline", 1349},
- {"cannot declare `::main' to be static", 1350},
- {"overflow in array dimension", 1351},
- {"destructors must be member functions", 1352},
- {"`bool' is now a keyword", 1353},
- {"ISO C++ does not support `long long'", 1354},
- {"short, signed or unsigned invalid for `%s'", 1355},
- {"long and short specified together for `%s'", 1356},
- {"signed and unsigned given together for `%s'", 1357},
- {"storage class specifiers invalid in parameter declarations", 1358},
- {"typedef declaration invalid in parameter declaration", 1359},
- {"virtual outside class declaration", 1360},
- {"storage class specified for %s `%s'", 1361},
- {"storage class specifiers invalid in friend function declarations", 1362},
- {"destructor cannot be static member function", 1363},
- {"constructor cannot be static member function", 1364},
- {"constructors cannot be declared virtual", 1365},
- {"return value type specifier for constructor ignored", 1366},
- {"can't initialize friend function `%s'", 1367},
- {"virtual functions cannot be friends", 1368},
- {"friend declaration not in class definition", 1369},
- {"cannot declare %s to references", 1370},
- {"invalid type: `void &'", 1371},
- {"discarding `const' applied to a reference", 1372},
- {"discarding `volatile' applied to a reference", 1373},
- {"only declarations of constructors can be `explicit'", 1374},
- {"non-member `%s' cannot be declared `mutable'", 1375},
- {"non-object member `%s' cannot be declared `mutable'", 1376},
- {"function `%s' cannot be declared `mutable'", 1377},
- {"static `%s' cannot be declared `mutable'", 1378},
- {"const `%s' cannot be declared `mutable'", 1379},
- {"typedef declaration includes an initializer", 1380},
- {"trying to make class `%s' a friend of global scope", 1381},
- {"unnamed variable or field declared void", 1382},
- {"variable or field declared void", 1383},
- {"cannot use `::' in parameter declaration", 1384},
- {"declaration of `%s' as void", 1385},
- {"`%s' is neither function nor member function; cannot be declared friend", 1386},
- {"member functions are implicitly friends of their class", 1387},
- {"storage class `auto' invalid for function `%s'", 1388},
- {"storage class `register' invalid for function `%s'", 1389},
- {"\
-storage class `static' invalid for function `%s' declared out of global scope", 1390},
- {"\
-storage class `inline' invalid for function `%s' declared out of global scope", 1391},
- {"virtual non-class function `%s'", 1392},
- {"cannot declare static function inside another function", 1393},
+recompile all source and use -fhuge-objects", 1369},
+ {"internal compiler error: debugging info corrupted", 1370},
+ {"parse errors have confused me too much", 1371},
+ {"declaration of `%s' shadows a member of `this'", 1372},
+ {"label `%s' referenced outside of any function", 1373},
+ {"jump to case label", 1374},
+ {" enters try block", 1375},
+ {" from here", 1376},
+ {"`default' label not within a switch statement", 1377},
+ {"pointers are not permitted as case values", 1378},
+ {"ISO C++ forbids range expressions in switch statement", 1379},
+ {"empty range specified", 1380},
+ {"duplicate (or overlapping) case value", 1381},
+ {"where case label appears here", 1382},
+ {"\
+(enclose actions of previous case statements requiring destructors in their \
+own scope.)", 1383},
+ {"virtual memory exhausted", 1384},
+ {"the new ABI requires vtable thunks", 1385},
+ {"an anonymous union cannot have function members", 1386},
+ {"multiple types in one declaration", 1387},
+ {"declaration does not declare anything", 1388},
+ {"ISO C++ prohibits anonymous structs", 1389},
+ {"assignment (not initialization) in declaration", 1390},
+ {"invalid catch parameter", 1391},
+ {"cannot declare `::main' to be a template", 1392},
+ {"cannot declare `::main' to be inline", 1393},
+ {"cannot declare `::main' to be static", 1394},
+ {"`main' must return `int'", 1395},
+ {"overflow in array dimension", 1396},
+ {"destructors must be member functions", 1397},
+ {"`bool' is now a keyword", 1398},
+ {"ISO C++ does not support `long long'", 1399},
+ {"short, signed or unsigned invalid for `%s'", 1400},
+ {"long and short specified together for `%s'", 1401},
+ {"signed and unsigned given together for `%s'", 1402},
+ {"storage class specifiers invalid in parameter declarations", 1403},
+ {"typedef declaration invalid in parameter declaration", 1404},
+ {"virtual outside class declaration", 1405},
+ {"storage class specified for %s `%s'", 1406},
+ {"storage class specifiers invalid in friend function declarations", 1407},
+ {"destructor cannot be static member function", 1408},
+ {"constructor cannot be static member function", 1409},
+ {"constructors cannot be declared virtual", 1410},
+ {"return value type specifier for constructor ignored", 1411},
+ {"can't initialize friend function `%s'", 1412},
+ {"virtual functions cannot be friends", 1413},
+ {"friend declaration not in class definition", 1414},
+ {"cannot declare %s to references", 1415},
+ {"invalid type: `void &'", 1416},
+ {"discarding `const' applied to a reference", 1417},
+ {"discarding `volatile' applied to a reference", 1418},
+ {"only declarations of constructors can be `explicit'", 1419},
+ {"non-member `%s' cannot be declared `mutable'", 1420},
+ {"non-object member `%s' cannot be declared `mutable'", 1421},
+ {"function `%s' cannot be declared `mutable'", 1422},
+ {"static `%s' cannot be declared `mutable'", 1423},
+ {"const `%s' cannot be declared `mutable'", 1424},
+ {"typedef declaration includes an initializer", 1425},
+ {"unnamed variable or field declared void", 1426},
+ {"variable or field declared void", 1427},
+ {"cannot use `::' in parameter declaration", 1428},
+ {"declaration of `%s' as void", 1429},
+ {"`%s' is neither function nor member function; cannot be declared friend", 1430},
+ {"member functions are implicitly friends of their class", 1431},
+ {"storage class `auto' invalid for function `%s'", 1432},
+ {"storage class `register' invalid for function `%s'", 1433},
+ {"\
+storage class `static' invalid for function `%s' declared out of global scope", 1434},
+ {"\
+storage class `inline' invalid for function `%s' declared out of global scope", 1435},
+ {"virtual non-class function `%s'", 1436},
+ {"cannot declare static function inside another function", 1437},
{"\
invalid integer constant in parameter list, did you forget to give parameter \
-name?", 1394},
- {"parameter invalidly declared method type", 1395},
- {"parameter invalidly declared offset type", 1396},
- {"`void' in parameter list must be entire list", 1397},
- {"conversion to %s%s will never use a type conversion operator", 1398},
- {"return type for `main' changed to `int'", 1399},
- {"-f%s is no longer supported", 1400},
+name?", 1438},
+ {"parameter invalidly declared method type", 1439},
+ {"parameter invalidly declared offset type", 1440},
+ {"`void' in parameter list must be entire list", 1441},
+ {"conversion to %s%s will never use a type conversion operator", 1442},
+ {"return type for `main' changed to `int'", 1443},
+ {"no return statement in function returning non-void", 1444},
+ {"-f%s is no longer supported", 1445},
{"\
-fhandle-exceptions has been renamed to -fexceptions (and is now on by \
-default)", 1401},
- {"no file specified with -fdump-translation-unit", 1402},
- {"name missing for member function", 1403},
- {"`__alignof__' applied to a bit-field", 1404},
- {"parser may be lost: is there a '{' missing somewhere?", 1405},
- {"ambiguous conversion for array subscript", 1406},
- {"anachronistic use of array size in vector delete", 1407},
+default)", 1446},
+ {"no file specified with -fdump-translation-unit", 1447},
+ {"-Wno-strict-prototypes is not supported in C++", 1448},
+ {"name missing for member function", 1449},
+ {"`__alignof__' applied to a bit-field", 1450},
+ {"parser may be lost: is there a '{' missing somewhere?", 1451},
+ {"ambiguous conversion for array subscript", 1452},
+ {"anachronistic use of array size in vector delete", 1453},
{"\
cannot delete a function. Only pointer-to-objects are valid arguments to \
-`delete'", 1408},
- {"initializer invalid for static member with constructor", 1409},
- {"(you really want to initialize it separately)", 1410},
- {"field initializer is not constant", 1411},
- {"anonymous struct not inside named type", 1412},
- {"namespace-scope anonymous aggregates must be static", 1413},
- {"anonymous aggregate with no members", 1414},
- {"`operator new' must return type `void *'", 1415},
- {"`operator new' takes type `size_t' parameter", 1416},
- {"`operator new' takes type `size_t' as first parameter", 1417},
- {"`operator delete' must return type `void'", 1418},
- {"`operator delete' takes type `void *' as first parameter", 1419},
- {"second argument to `operator delete' must be of type `size_t'", 1420},
- {"too many arguments in declaration of `operator delete'", 1421},
- {"`...' invalid in specification of `operator delete'", 1422},
- {"too many initialization functions required", 1423},
- {"use of old-style cast", 1424},
- {"`%s' not supported by dump_type", 1425},
- {"`%s' not supported by dump_type_prefix", 1426},
- {"`%s' not supported by dump_type_suffix", 1427},
- {"`%s' not supported by dump_decl", 1428},
- {"`%s' not supported by dump_expr", 1429},
- {"call to Java `catch' or `throw', while `jthrowable' undefined", 1430},
- {"mixing C++ and Java `catch'es in single translation unit", 1431},
- {" in thrown expression", 1432},
- {"pointers are not permitted as case values", 1433},
- {"ISO C++ forbids range expressions in switch statement", 1434},
- {"duplicate (or overlapping) case value", 1435},
- {"empty range specified", 1436},
- {"`default' label within scope of cleanup or variable array", 1437},
- {"class `%s' is implicitly friends with itself", 1438},
- {" declares a non-template function", 1439},
- {"\
- (if this is not what you intended, make sure the function template has \
+`delete'", 1454},
+ {"initializer invalid for static member with constructor", 1455},
+ {"(an out of class initialization is required)", 1456},
+ {"field initializer is not constant", 1457},
+ {"anonymous struct not inside named type", 1458},
+ {"namespace-scope anonymous aggregates must be static", 1459},
+ {"anonymous aggregate with no members", 1460},
+ {"`operator new' must return type `void *'", 1461},
+ {"`operator new' takes type `size_t' parameter", 1462},
+ {"`operator new' takes type `size_t' as first parameter", 1463},
+ {"`operator delete' must return type `void'", 1464},
+ {"`operator delete' takes type `void *' as first parameter", 1465},
+ {"second argument to `operator delete' must be of type `size_t'", 1466},
+ {"too many arguments in declaration of `operator delete'", 1467},
+ {"`...' invalid in specification of `operator delete'", 1468},
+ {"too many initialization functions required", 1469},
+ {"use of old-style cast", 1470},
+ {"`%s' not supported by dump_type", 1471},
+ {"`%s' not supported by dump_type_prefix", 1472},
+ {"`%s' not supported by dump_type_suffix", 1473},
+ {"`%s' not supported by dump_decl", 1474},
+ {"`%s' not supported by dump_expr", 1475},
+ {"In %s `%s':", 1476},
+ {"call to Java `catch' or `throw', while `jthrowable' undefined", 1477},
+ {"mixing C++ and Java `catch'es in single translation unit", 1478},
+ {" in thrown expression", 1479},
+ {"\
+(if this is not what you intended, make sure the function template has \
already been declared and add <> after the function name here) \
--Wno-non-template-friend disables this warning.", 1440},
- {"argument to `%s' missing\n", 1441},
- {"initializer list treated as compound expression", 1442},
- {" will be re-ordered to match declaration order", 1443},
- {" will be re-ordered to match inheritance order", 1444},
- {"base class initializer specified, but no base class to initialize", 1445},
- {"initializer for unnamed base class ambiguous", 1446},
- {"no base class to initialize", 1447},
- {"bad array initializer", 1448},
- {"object missing in use of pointer-to-member construct", 1449},
- {"at this point in file", 1450},
- {"new of array type fails to specify size", 1451},
- {"size in array new must have integral type", 1452},
- {"zero size array reserves no space", 1453},
- {"new cannot be applied to a reference type", 1454},
- {"new cannot be applied to a function type", 1455},
- {"call to Java constructor, while `jclass' undefined", 1456},
- {"invalid type `void' for new", 1457},
- {"call to Java constructor, while `%s' undefined", 1458},
- {"initializer list being treated as compound expression", 1459},
- {"initializer list appears where operand should be used", 1460},
- {"initialization of array from dissimilar array type", 1461},
- {"initializer ends prematurely", 1462},
- {"cannot initialize multi-dimensional array with initializer", 1463},
- {"unknown array size in delete", 1464},
- {"type to vector delete is neither pointer or array type", 1465},
- {"type name expected before `*'", 1466},
- {"cannot declare references to references", 1467},
- {"cannot declare pointers to references", 1468},
- {"type name expected before `&'", 1469},
- {"parse error at end of saved function text", 1470},
- {"end of file encountered inside string constant", 1471},
- {"end of file encountered inside character constant", 1472},
- {"ISO C++ forbids newline in string constant", 1473},
- {"parse error in method specification", 1474},
- {"function body for constructor missing", 1475},
- {"semicolon missing after %s declaration", 1476},
- {"\
-carriage return in source file (we only warn about the first carriage return)", 1477},
- {"badly nested C headers from preprocessor", 1478},
- {"invalid #pragma vtable", 1479},
- {"trailing characters ignored", 1480},
- {"invalid #pragma unit", 1481},
- {"invalid `#pragma interface'", 1482},
- {"garbage after `#pragma interface' ignored", 1483},
- {"invalid `#pragma implementation'", 1484},
- {"garbage after `#pragma implementation' ignored", 1485},
- {"non hex digit '%c' in universal-character-name", 1486},
- {"universal-character-name on EBCDIC target", 1487},
- {"\
-universal-character-name designates `%c', part of the basic source character \
-set", 1488},
- {"invalid universal-character-name", 1489},
- {"universal-character-name `\\U%08x' not valid in identifier", 1490},
- {"universal-character-name `\\u%04x' not valid in identifier", 1491},
- {"non-ISO-standard escape sequence, `\\%c'", 1492},
- {"%s at end of saved text", 1493},
+-Wno-non-template-friend disables this warning.", 1480},
+ {"argument to `%s' missing\n", 1481},
+ {"initializer list treated as compound expression", 1482},
+ {" will be re-ordered to match declaration order", 1483},
+ {" will be re-ordered to match inheritance order", 1484},
+ {"base class initializer specified, but no base class to initialize", 1485},
+ {"initializer for unnamed base class ambiguous", 1486},
+ {"no base class to initialize", 1487},
+ {"object missing in use of pointer-to-member construct", 1488},
+ {"at this point in file", 1489},
+ {"new of array type fails to specify size", 1490},
+ {"size in array new must have integral type", 1491},
+ {"zero size array reserves no space", 1492},
+ {"new cannot be applied to a reference type", 1493},
+ {"new cannot be applied to a function type", 1494},
+ {"call to Java constructor, while `jclass' undefined", 1495},
+ {"invalid type `void' for new", 1496},
+ {"call to Java constructor, while `%s' undefined", 1497},
+ {"initializer list being treated as compound expression", 1498},
+ {"initializer list appears where operand should be used", 1499},
+ {"initialization of array from dissimilar array type", 1500},
+ {"initializer ends prematurely", 1501},
+ {"cannot initialize multi-dimensional array with initializer", 1502},
+ {"unknown array size in delete", 1503},
+ {"type to vector delete is neither pointer or array type", 1504},
+ {"type name expected before `*'", 1505},
+ {"cannot declare references to references", 1506},
+ {"cannot declare pointers to references", 1507},
+ {"type name expected before `&'", 1508},
+ {"semicolon missing after %s declaration", 1509},
+ {"junk at end of #pragma %s", 1510},
+ {"invalid #pragma %s", 1511},
+ {"#pragma implementation for %s appears after file is included", 1512},
{"\
(Each undeclared identifier is reported only once for each function it \
-appears in.)", 1494},
- {"name lookup of `%s' changed", 1495},
- {"name lookup of `%s' changed for new ISO `for' scoping", 1496},
- {"ISO C++ forbids imaginary numeric constants", 1497},
- {"universal characters in identifiers", 1498},
- {"identifier name `%s' conflicts with GNU C++ internal naming strategy", 1499},
- {"ISO C++ forbids long long integer constants", 1500},
- {"complex integer constant is too wide for `__complex int'", 1501},
- {"ISO C++ forbids newline in character constant", 1502},
- {"malformatted character constant", 1503},
- {"use of `operator %s' is not standard C++", 1504},
- {"conversion of %s as template parameter", 1505},
- {"methods cannot be converted to function pointers", 1506},
- {"ambiguous request for method pointer `%s'", 1507},
- {"request for member `%s' is ambiguous in multiple inheritance lattice", 1508},
- {"invalid default template argument", 1509},
- {"no base or member initializers given following ':'", 1510},
- {"base initializers not allowed for non-member functions", 1511},
- {"only constructors take base initializers", 1512},
- {"anachronistic old style base class initializer", 1513},
- {"`>>' should be `> >' in template class name", 1514},
- {"ISO C++ forbids an empty condition for `%s'", 1515},
- {"ISO C++ forbids `&&'", 1516},
- {"ISO C++ forbids initialization of new expression with `='", 1517},
- {"ISO C++ forbids constructor-expressions", 1518},
- {"ISO C++ forbids braced-groups within expressions", 1519},
- {"sigof type specifier", 1520},
- {"`sigof' applied to non-aggregate expression", 1521},
- {"`sigof' applied to non-aggregate type", 1522},
- {"storage class specifier `%s' not allowed after struct or class", 1523},
- {"type specifier `%s' not allowed after struct or class", 1524},
- {"type qualifier `%s' not allowed after struct or class", 1525},
- {"no body nor ';' separates two class, struct or union declarations", 1526},
- {"multiple access specifiers", 1527},
- {"multiple `virtual' specifiers", 1528},
- {"missing ';' before right brace", 1529},
- {"ISO C++ forbids array dimensions with parenthesized type in new", 1530},
- {"ISO C++ forbids label declarations", 1531},
- {"ISO C++ forbids computed gotos", 1532},
- {"label must be followed by statement", 1533},
- {"ISO C++ forbids compound statements inside for initializations", 1534},
- {"possibly missing ')'", 1535},
- {"type specifier omitted for parameter", 1536},
- {" a template type parameter must begin with `class' or `typename'", 1537},
- {"creating array with size zero", 1538},
- {"use of `%s' in template", 1539},
- {"incomplete type unification", 1540},
- {"use of `%s' in template type unification", 1541},
- {"-frepo must be used with -c", 1542},
- {"mysterious repository information in %s", 1543},
- {"can't create repository information file `%s'", 1544},
- {"taking dynamic typeid of object with -fno-rtti", 1545},
- {"cannot use typeid with -fno-rtti", 1546},
- {"must #include <typeinfo> before using typeid", 1547},
- {"adjusting pointers for covariant returns", 1548},
- {"recoverable compiler error, fixups for virtual function", 1549},
- {"keyword 'export' not implemented and will be ignored", 1550},
- {"non-lvalue in %s", 1551},
- {"`com_interface' only supported with -fvtable-thunks", 1552},
- {"`com_interface' attribute can only be applied to class definitions", 1553},
- {"requested init_priority is not an integer constant", 1554},
+appears in.)", 1513},
+ {"name lookup of `%s' changed", 1514},
+ {"name lookup of `%s' changed for new ISO `for' scoping", 1515},
+ {"conversion of %s as template parameter", 1516},
+ {"methods cannot be converted to function pointers", 1517},
+ {"ambiguous request for method pointer `%s'", 1518},
+ {"request for member `%s' is ambiguous in multiple inheritance lattice", 1519},
+ {"invalid default template argument", 1520},
+ {"no base or member initializers given following ':'", 1521},
+ {"base initializers not allowed for non-member functions", 1522},
+ {"only constructors take base initializers", 1523},
+ {"anachronistic old style base class initializer", 1524},
+ {"`>>' should be `> >' in template class name", 1525},
+ {"ISO C++ forbids an empty condition for `%s'", 1526},
+ {"ISO C++ forbids `&&'", 1527},
+ {"ISO C++ forbids initialization of new expression with `='", 1528},
+ {"ISO C++ forbids constructor-expressions", 1529},
+ {"ISO C++ forbids braced-groups within expressions", 1530},
+ {"sigof type specifier", 1531},
+ {"`sigof' applied to non-aggregate expression", 1532},
+ {"`sigof' applied to non-aggregate type", 1533},
+ {"storage class specifier `%s' not allowed after struct or class", 1534},
+ {"type specifier `%s' not allowed after struct or class", 1535},
+ {"type qualifier `%s' not allowed after struct or class", 1536},
+ {"no body nor ';' separates two class, struct or union declarations", 1537},
+ {"multiple access specifiers", 1538},
+ {"multiple `virtual' specifiers", 1539},
+ {"missing ';' before right brace", 1540},
+ {"ISO C++ forbids array dimensions with parenthesized type in new", 1541},
+ {"ISO C++ forbids label declarations", 1542},
+ {"ISO C++ forbids computed gotos", 1543},
+ {"label must be followed by statement", 1544},
+ {"ISO C++ forbids compound statements inside for initializations", 1545},
+ {"possibly missing ')'", 1546},
+ {"type specifier omitted for parameter", 1547},
+ {" a template type parameter must begin with `class' or `typename'", 1548},
+ {"creating array with size zero", 1549},
+ {"use of `%s' in template", 1550},
+ {"incomplete type unification", 1551},
+ {"use of `%s' in template type unification", 1552},
+ {"-frepo must be used with -c", 1553},
+ {"mysterious repository information in %s", 1554},
+ {"can't create repository information file `%s'", 1555},
+ {"taking dynamic typeid of object with -fno-rtti", 1556},
+ {"cannot use typeid with -fno-rtti", 1557},
+ {"must #include <typeinfo> before using typeid", 1558},
+ {"adjusting pointers for covariant returns", 1559},
+ {"recoverable compiler error, fixups for virtual function", 1560},
+ {"identifier name `%s' conflicts with GNU C++ internal naming strategy", 1561},
+ {"syntax error before '#' token", 1562},
+ {"syntax error before '\\' token", 1563},
+ {"keyword 'export' not implemented and will be ignored", 1564},
+ {"parse error at end of saved function text", 1565},
+ {"parse error in method specification", 1566},
+ {"function body for constructor missing", 1567},
+ {"non-lvalue in %s", 1568},
+ {"`com_interface' only supported with -fvtable-thunks", 1569},
+ {"`com_interface' attribute can only be applied to class definitions", 1570},
+ {"requested init_priority is not an integer constant", 1571},
{"\
can only use init_priority attribute on file-scope definitions of objects of \
-class type", 1555},
- {"requested init_priority is out of range", 1556},
- {"requested init_priority is reserved for internal use", 1557},
- {"\
-ISO C++ forbids %s between pointer of type `void *' and pointer-to-function", 1558},
- {"ISO C++ forbids applying `sizeof' to a function type", 1559},
- {"ISO C++ forbids applying `sizeof' to a member function", 1560},
- {"\
-ISO C++ forbids applying `sizeof' to type `void' which is an incomplete type", 1561},
- {"sizeof applied to a bit-field", 1562},
- {"ISO C++ forbids applying `sizeof' to an expression of function type", 1563},
- {"invalid reference to NULL ptr, use ptr-to-member instead", 1564},
- {"invalid use of `%s' on pointer to member", 1565},
- {"invalid type argument", 1566},
- {"ISO C++ forbids subscripting non-lvalue array", 1567},
- {"subscripting array declared `register'", 1568},
- {"pointer to member function called, but not in class scope", 1569},
+class type", 1572},
+ {"requested init_priority is out of range", 1573},
+ {"requested init_priority is reserved for internal use", 1574},
+ {"\
+ISO C++ forbids %s between pointer of type `void *' and pointer-to-function", 1575},
+ {"ISO C++ forbids applying `sizeof' to a function type", 1576},
+ {"ISO C++ forbids applying `sizeof' to a member function", 1577},
+ {"\
+ISO C++ forbids applying `sizeof' to type `void' which is an incomplete type", 1578},
+ {"sizeof applied to a bit-field", 1579},
+ {"ISO C++ forbids applying `sizeof' to an expression of function type", 1580},
+ {"invalid reference to NULL ptr, use ptr-to-member instead", 1581},
+ {"invalid use of `%s' on pointer to member", 1582},
+ {"invalid type argument", 1583},
+ {"ISO C++ forbids subscripting non-lvalue array", 1584},
+ {"subscripting array declared `register'", 1585},
+ {"pointer to member function called, but not in class scope", 1586},
{"\
invalid call to member function needing `this' in static member function \
-scope", 1570},
- {"ISO C++ forbids calling `::main' from within program", 1571},
- {"parameter type of called function is incomplete", 1572},
- {"%s rotate count is negative", 1573},
- {"%s rotate count >= width of type", 1574},
- {"ISO C++ forbids comparison of `void *' with function pointer", 1575},
- {"ISO C++ forbids conversion of a pointer to member to `void *'", 1576},
- {"ISO C++ forbids comparison between pointer and integer", 1577},
- {"comparison between a signed and an unsigned integer expressions", 1578},
- {"ISO C++ forbids using pointer of type `void *' in pointer arithmetic", 1579},
- {"ISO C++ forbids using a pointer-to-function in pointer arithmetic", 1580},
- {"\
-ISO C++ forbids using a pointer to member function in pointer arithmetic", 1581},
- {"ISO C++ forbids using pointer to a member in pointer arithmetic", 1582},
- {"ISO C++ forbids using pointer of type `void *' in subtraction", 1583},
- {"ISO C++ forbids using pointer to a function in subtraction", 1584},
- {"ISO C++ forbids using pointer to a method in subtraction", 1585},
- {"ISO C++ forbids using pointer to a member in subtraction", 1586},
- {"invalid use of a pointer to an incomplete type in pointer arithmetic", 1587},
- {"taking address of temporary", 1588},
- {"ISO C++ forbids %sing an enum", 1589},
- {"cast to non-reference type used as lvalue", 1590},
- {"ISO C++ forbids taking address of function `::main'", 1591},
- {"ISO C++ forbids taking the address of a cast to a non-lvalue expression", 1592},
- {"unary `&'", 1593},
- {"cannot take the address of `this', which is an ravlue expression", 1594},
- {"\
-ISO C++ forbids casting between pointer-to-function and pointer-to-object", 1595},
- {"ISO C++ forbids casting to an array type", 1596},
- {"ISO C++ forbids cast to non-reference type used as lvalue", 1597},
- {"ISO C++ forbids assignment of arrays", 1598},
- {"return value from function receives multiple initializations", 1599},
- {" in pointer to member function conversion", 1600},
- {" in pointer to member conversion", 1601},
- {"returning reference to temporary", 1602},
- {"reference to non-lvalue returned", 1603},
- {"returning a value from a destructor", 1604},
- {"cannot return from a handler of a function-try-block of a constructor", 1605},
- {"returning a value from a constructor", 1606},
+scope", 1587},
+ {"ISO C++ forbids calling `::main' from within program", 1588},
+ {"parameter type of called function is incomplete", 1589},
+ {"%s rotate count is negative", 1590},
+ {"%s rotate count >= width of type", 1591},
+ {"ISO C++ forbids comparison between pointer and integer", 1592},
+ {"comparison between signed and unsigned integer expressions", 1593},
+ {"ISO C++ forbids using pointer of type `void *' in pointer arithmetic", 1594},
+ {"ISO C++ forbids using a pointer-to-function in pointer arithmetic", 1595},
+ {"\
+ISO C++ forbids using a pointer to member function in pointer arithmetic", 1596},
+ {"ISO C++ forbids using pointer to a member in pointer arithmetic", 1597},
+ {"ISO C++ forbids using pointer of type `void *' in subtraction", 1598},
+ {"ISO C++ forbids using pointer to a function in subtraction", 1599},
+ {"ISO C++ forbids using pointer to a method in subtraction", 1600},
+ {"ISO C++ forbids using pointer to a member in subtraction", 1601},
+ {"invalid use of a pointer to an incomplete type in pointer arithmetic", 1602},
+ {"taking address of temporary", 1603},
+ {"ISO C++ forbids %sing an enum", 1604},
+ {"cast to non-reference type used as lvalue", 1605},
+ {"ISO C++ forbids taking address of function `::main'", 1606},
+ {"ISO C++ forbids taking the address of a cast to a non-lvalue expression", 1607},
+ {"unary `&'", 1608},
+ {"cannot take the address of `this', which is an ravlue expression", 1609},
+ {"\
+ISO C++ forbids casting between pointer-to-function and pointer-to-object", 1610},
+ {"ISO C++ forbids casting to an array type", 1611},
+ {"ISO C++ forbids cast to non-reference type used as lvalue", 1612},
+ {"ISO C++ forbids assignment of arrays", 1613},
+ {"return value from function receives multiple initializations", 1614},
+ {" in pointer to member function conversion", 1615},
+ {" in pointer to member conversion", 1616},
+ {"returning reference to temporary", 1617},
+ {"reference to non-lvalue returned", 1618},
+ {"returning a value from a destructor", 1619},
+ {"cannot return from a handler of a function-try-block of a constructor", 1620},
+ {"returning a value from a constructor", 1621},
{"\
return-statement with no value, in function declared with a non-void return \
-type", 1607},
- {"\
-return-statement with a value, in function declared with a void return type", 1608},
- {" since the following virtual functions are abstract:", 1609},
- {"confused by earlier errors, bailing out", 1610},
- {"Internal compiler error.", 1611},
- {"Internal compiler error %d.", 1612},
- {"Please submit a full bug report.", 1613},
- {"See %s for instructions.", 1614},
- {"due to the presence of a constructor", 1615},
- {"comma expression used to initialize return value", 1616},
- {"cannot initialize arrays using this syntax", 1617},
- {"ANSI C++ forbids non-constant aggregate initializer expressions", 1618},
- {"initializing array with parameter list", 1619},
- {"initializer for scalar variable requires one element", 1620},
- {"aggregate has a partly bracketed initializer", 1621},
- {"non-trivial labeled initializers", 1622},
- {"non-empty initializer for array of empty elements", 1623},
- {"initializer list for object of class with virtual base classes", 1624},
- {"initializer list for object of class with base classes", 1625},
- {"initializer list for object using virtual functions", 1626},
- {"index value instead of field name in union initializer", 1627},
- {"excess elements in aggregate initializer", 1628},
- {"circular pointer delegation detected", 1629},
- {"result of `operator->()' yields non-pointer result", 1630},
- {"base operand of `->' is not a pointer", 1631},
- {"duplicate label `%s' in switch statement", 1632},
- {"duplicate label (%d) in switch statement", 1633},
- {"case value out of range for enum %s", 1634},
- {"range values `%s' and `%s' reversed", 1635},
- {"range values reversed", 1636},
- {"ISO C++ forbids defining types within %s", 1637},
- {"Can't create cross-reference file `%s'", 1638},
- {"Internal gcc abort.", 1639},
- {"In file included from %s:%u", 1640},
+type", 1622},
+ {"\
+return-statement with a value, in function declared with a void return type", 1623},
+ {" since the following virtual functions are abstract:", 1624},
+ {"Internal error #%d.", 1625},
+ {"due to the presence of a constructor", 1626},
+ {"comma expression used to initialize return value", 1627},
+ {"cannot initialize arrays using this syntax", 1628},
+ {"ANSI C++ forbids non-constant aggregate initializer expressions", 1629},
+ {"initializing array with parameter list", 1630},
+ {"initializer for scalar variable requires one element", 1631},
+ {"aggregate has a partly bracketed initializer", 1632},
+ {"non-trivial labeled initializers", 1633},
+ {"non-empty initializer for array of empty elements", 1634},
+ {"initializer list for object of class with virtual base classes", 1635},
+ {"initializer list for object of class with base classes", 1636},
+ {"initializer list for object using virtual functions", 1637},
+ {"index value instead of field name in union initializer", 1638},
+ {"excess elements in aggregate initializer", 1639},
+ {"circular pointer delegation detected", 1640},
+ {"result of `operator->()' yields non-pointer result", 1641},
+ {"base operand of `->' is not a pointer", 1642},
+ {"ISO C++ forbids defining types within %s", 1643},
+ {"Can't create cross-reference file `%s'", 1644},
+ {"Internal gcc abort.", 1645},
+ {"In file included from %s:%u", 1646},
{"\
,\n\
- from %s:%u", 1641},
- {"<command line>: ", 1642},
- {"warning: ", 1643},
- {"internal error: ", 1644},
- {"bad is_error(%d) in v_message", 1645},
- {"%s: %s", 1646},
- {"floating point numbers are not allowed in #if expressions", 1647},
- {"invalid number in #if expression", 1648},
- {"too many 'l' suffixes in integer constant", 1649},
- {"too many 'u' suffixes in integer constant", 1650},
- {"integer constant contains digits beyond the radix", 1651},
- {"integer constant out of range", 1652},
- {"integer constant is so large that it is unsigned", 1653},
- {"'defined' without an identifier", 1654},
- {"string constants are not allowed in #if expressions", 1655},
- {"'%.*s' is not defined", 1656},
- {"'%.*s' is not allowed in #if expressions", 1657},
- {"non-ANSI-standard escape sequence, '\\%c'", 1658},
- {"octal escape sequence out of range", 1659},
- {"hex escape sequence out of range", 1660},
- {"integer overflow in preprocessor expression", 1661},
- {"comma operator in operand of #if", 1662},
- {"included file `%s' exists but is not readable", 1663},
- {"node for '%s' exists, open failed, error '%s', value %lx\n", 1664},
- {"cpp_make_system_header: bad flag %d\n", 1665},
- {"cpp_make_system_header called on non-file buffer", 1666},
+ from %s:%u", 1647},
+ {"internal error: ", 1648},
+ {"warning: ", 1649},
+ {"%s: %s", 1650},
+ {"traditional C rejects the `U' suffix", 1651},
+ {"integer constant contains digits beyond the radix", 1652},
+ {"integer constant out of range", 1653},
+ {"integer constant is so large that it is unsigned", 1654},
+ {"invalid suffix '%.*s' on integer constant", 1655},
+ {"\"%s\" is not defined", 1656},
+ {"octal escape sequence out of range", 1657},
+ {"hex escape sequence out of range", 1658},
+ {"integer overflow in preprocessor expression", 1659},
+ {"impossible operator type %s", 1660},
+ {"comma operator in operand of #if", 1661},
+ {"included file \"%s\" exists but is not readable", 1662},
+ {"node for '%s' exists, open failed, error '%s', value %lx\n", 1663},
+ {"cpp_make_system_header: bad flag %d\n", 1664},
+ {"cpp_make_system_header called on non-file buffer", 1665},
+ {"Multiple include guards may be useful for:\n", 1666},
{"No include path in which to find %s", 1667},
{"%s is too large", 1668},
{"%s is shorter than expected\n", 1669},
{"%s is a block device", 1670},
{"%s is a directory", 1671},
- {"macro argument \"%s\" would be stringified in traditional C", 1672},
- {"macro argument \"%s\" is stringified", 1673},
- {"`##' at start of macro definition", 1674},
- {"`##' at end of macro definition", 1675},
- {"empty object-like macro went through full #define", 1676},
- {"# is not followed by a macro argument name", 1677},
- {"`#' is not followed by a macro argument name", 1678},
- {"first token = %d not %d in collect_formal_parameters", 1679},
- {"impossible token in macro argument list", 1680},
- {"illegal token in macro argument list", 1681},
- {"another parameter follows \"...\"", 1682},
- {"missing right paren in macro argument list", 1683},
- {"collect_params: argc=%d argslen=0", 1684},
- {"duplicate macro argument name \"%s\"", 1685},
- {"C99 does not permit use of __VA_ARGS__ as a macro argument name", 1686},
- {"C89 does not permit varargs macros", 1687},
- {"ISO C does not permit named varargs macros", 1688},
- {"collect_params: impossible token type %d", 1689},
- {"The C standard requires whitespace after #define %s", 1690},
- {"\"%s\" redefined", 1691},
- {"this is the location of the previous definition", 1692},
- {"attempt to use poisoned `%s'.", 1693},
- {"invalid special hash type", 1694},
- {"macroexpand: unexpected token %d (wanted LPAREN)", 1695},
- {"unterminated macro call", 1696},
- {"arguments given to macro `%s'", 1697},
- {"macro `%s' used without args", 1698},
- {"macro `%s' used with just one arg", 1699},
- {"macro `%s' used with only %d args", 1700},
- {"macro `%s' used with too many (%d) args", 1701},
- {"invalid hash type %d in dump_definition", 1702},
- {"ignoring nonexistent directory `%s'\n", 1703},
- {"%s: Not a directory", 1704},
- {"ignoring duplicate directory `%s'\n", 1705},
- {"-MG must be specified with one of -M or -MM", 1706},
- {"-lang-chill and -trigraphs are mutually exclusive", 1707},
- {"#include \"...\" search starts here:\n", 1708},
- {"#include <...> search starts here:\n", 1709},
- {"End of search list.\n", 1710},
- {"buffers still stacked in cpp_finish", 1711},
- {"I/O error on output", 1712},
- {"Argument missing after %s", 1713},
- {"Assertion missing after %s", 1714},
- {"Directory name missing after %s", 1715},
- {"File name missing after %s", 1716},
- {"Macro name missing after %s", 1717},
- {"Path name missing after %s", 1718},
- {"Number missing after %s", 1719},
- {"Too many arguments. Type %s --help for usage info", 1720},
- {"GNU CPP version %s (cpplib)\n", 1721},
- {"Output filename specified twice", 1722},
- {"-I- specified twice", 1723},
- {"Usage: %s [switches] input output\n", 1724},
+ {"ignoring nonexistent directory \"%s\"\n", 1672},
+ {"%s: Not a directory", 1673},
+ {"ignoring duplicate directory \"%s\"\n", 1674},
+ {"-MG must be specified with one of -M or -MM", 1675},
+ {"#include \"...\" search starts here:\n", 1676},
+ {"#include <...> search starts here:\n", 1677},
+ {"End of search list.\n", 1678},
+ {"buffers still stacked in cpp_finish", 1679},
+ {"I/O error on output", 1680},
+ {"Argument missing after %s", 1681},
+ {"Assertion missing after %s", 1682},
+ {"Directory name missing after %s", 1683},
+ {"File name missing after %s", 1684},
+ {"Macro name missing after %s", 1685},
+ {"Path name missing after %s", 1686},
+ {"Number missing after %s", 1687},
+ {"Too many arguments. Type %s --help for usage info", 1688},
+ {"GNU CPP version %s (cpplib)\n", 1689},
+ {"Output filename specified twice", 1690},
+ {"-I- specified twice", 1691},
+ {"Usage: %s [switches] input output\n", 1692},
{"\
Switches:\n\
-include <file> Include the contents of <file> before other \
@@ -1816,7 +1783,8 @@ files\n\
-iwithprefix <dir> Add <dir> to the end of the system include path\n\
-iwithprefixbefore <dir> Add <dir> to the end of the main include path\n\
-isystem <dir> Add <dir> to the start of the system include \
-path\n\
+path\n", 1693},
+ {"\
-idirafter <dir> Add <dir> to the end of the system include path\n\
-I <dir> Add <dir> to the end of the main include path\n\
-I- Fine-grained include path control; see info \
@@ -1826,20 +1794,20 @@ docs\n\
used)\n\
-nostdinc++ Do not search system include directories for \
C++\n\
- -o <file> Put output into <file>\n\
- -pedantic Issue all warnings demanded by strict ANSI C\n\
+ -o <file> Put output into <file>\n", 1694},
+ {"\
+ -pedantic Issue all warnings demanded by strict ISO C\n\
-pedantic-errors Issue -pedantic warnings as errors instead\n\
- -traditional Follow K&R pre-processor behaviour\n\
- -trigraphs Support ANSI C trigraphs\n\
+ -trigraphs Support ISO C trigraphs\n\
-lang-c Assume that the input sources are in C\n\
- -lang-c89 Assume that the input sources are in C89\n\
+ -lang-c89 Assume that the input sources are in C89\n", 1695},
+ {"\
-lang-c++ Assume that the input sources are in C++\n\
-lang-objc Assume that the input sources are in ObjectiveC\n\
-lang-objc++ Assume that the input sources are in \
ObjectiveC++\n\
- -lang-asm Assume that the input sources are in assembler\n\
- -lang-fortran\t\t Assume that the input sources are in Fortran\n\
- -lang-chill Assume that the input sources are in Chill\n\
+ -lang-asm Assume that the input sources are in assembler\n", 1696},
+ {"\
-std=<std name> Specify the conformance standard; one of:\n\
gnu89, gnu99, c89, c99, iso9899:1990,\n\
iso9899:199409, iso9899:1999\n\
@@ -1847,34 +1815,38 @@ ObjectiveC++\n\
-w Inhibit warning messages\n\
-Wtrigraphs Warn if trigraphs are encountered\n\
-Wno-trigraphs Do not warn about trigraphs\n\
- -Wcomment{s} Warn if one comment starts inside another\n\
+ -Wcomment{s} Warn if one comment starts inside another\n", 1697},
+ {"\
-Wno-comment{s} Do not warn about comments\n\
- -Wtraditional Warn if a macro argument is/would be turned \
-into\n\
- a string if -traditional is specified\n\
- -Wno-traditional Do not warn about stringification\n\
+ -Wtraditional Warn about features not present in traditional \
+C\n\
+ -Wno-traditional Do not warn about traditional C\n\
-Wundef Warn if an undefined macro is used by #if\n\
-Wno-undef Do not warn about testing undefined macros\n\
- -Wimport Warn about the use of the #import directive\n\
+ -Wimport Warn about the use of the #import directive\n", 1698},
+ {"\
-Wno-import Do not warn about the use of #import\n\
-Werror Treat all warnings as errors\n\
-Wno-error Do not treat warnings as errors\n\
-Wall Enable all preprocessor warnings\n\
-M Generate make dependencies\n\
- -MM As -M, but ignore system header files\n\
+ -MM As -M, but ignore system header files\n", 1699},
+ {"\
-MD As -M, but put output in a .d file\n\
-MMD As -MD, but ignore system header files\n\
-MG Treat missing header file as generated files\n\
-g3 Include #define and #undef directives in the \
output\n\
-D<macro> Define a <macro> with string '1' as its value\n\
- -D<macro>=<val> Define a <macro> with <val> as its value\n\
+ -D<macro>=<val> Define a <macro> with <val> as its value\n", 1700},
+ {"\
-A<question> (<answer>) Assert the <answer> to <question>\n\
-A-<question> (<answer>) Disable the <answer> to <question>\n\
-U<macro> Undefine <macro> \n\
-v Display the version number\n\
-H Print the name of header files as they are used\n\
- -C Do not discard comments\n\
+ -C Do not discard comments\n", 1701},
+ {"\
-dM Display a list of macro definitions active at \
end\n\
-dD Preserve macro definitions in output\n\
@@ -1882,558 +1854,766 @@ end\n\
-dI Include #include directives in the output\n\
-ftabstop=<number> Distance between tab stops for column reporting\n\
-P Do not generate #line directives\n\
- -$ Do not allow '$' in identifiers\n\
+ -$ Do not allow '$' in identifiers\n", 1702},
+ {"\
-remap Remap file names when including files.\n\
--version Display version information\n\
- -h or --help Display this information\n", 1725},
- {"macro or `#include' recursion too deep", 1726},
- {"mark active in cpp_pop_buffer", 1727},
- {"length < 0 in cpp_expand_to_buffer", 1728},
- {"'/*' within comment", 1729},
- {"unterminated comment", 1730},
- {"backslash-newline within line comment", 1731},
- {"C++ style comments are not allowed in traditional C", 1732},
- {"C++ style comments are not allowed in ISO C89", 1733},
- {"(this will be reported only once per input file)", 1734},
- {"embedded null character ignored", 1735},
- {"embedded null characters ignored", 1736},
- {"%s in preprocessing directive", 1737},
- {"unterminated string or character constant", 1738},
- {"possible real start of unterminated constant", 1739},
- {"unterminated character constant", 1740},
- {"string constant runs past end of line", 1741},
- {"\\r escape inside string constant", 1742},
- {"null character in string or character constant", 1743},
- {"null characters in string or character constant", 1744},
- {"missing '>' in `#include <FILENAME>'", 1745},
- {"unrecognized escape \\r%c", 1746},
- {"function macro %s must be used with arguments in traditional C", 1747},
- {"vertical tab in preprocessing directive", 1748},
- {"form feed in preprocessing directive", 1749},
- {"trigraph ??%c converted to %c", 1750},
- {"trigraph ??%c ignored", 1751},
- {"no newline at end of file", 1752},
- {"'$' character in identifier", 1753},
- {"multi-line string constant", 1754},
- {"missing terminating %c character", 1755},
- {"possible start of unterminated string literal", 1756},
- {"null characters preserved", 1757},
- {"null character preserved", 1758},
- {"comment start split across lines", 1759},
- {"multi-line comment", 1760},
- {"comment start '/*' split across lines", 1761},
- {"comment end '*/' split across lines", 1762},
- {"backslash and newline separated by space", 1763},
- {"Unspellable token", 1764},
- {"handle_directive called on macro buffer", 1765},
- {"# followed by integer", 1766},
- {"invalid preprocessing directive #%.*s", 1767},
- {"ignoring #%s because of its indented #", 1768},
- {"#%s may not be used inside a macro argument", 1769},
- {"ISO C does not allow #%s", 1770},
- {"traditional C ignores #%s with the # indented", 1771},
- {"suggest hiding #%s from traditional C with an indented #", 1772},
- {"#define must be followed by an identifier", 1773},
- {"\"defined\" is not a legal macro name", 1774},
- {"redefining poisoned `%.*s'", 1775},
- {"#%s expects \"FILENAME\" or <FILENAME>", 1776},
- {"junk at end of #%s", 1777},
- {"empty file name in #%s", 1778},
- {"#import is obsolete, use an #ifndef wrapper in the header file", 1779},
- {"#include_next in primary source file", 1780},
- {"invalid format #line", 1781},
- {"token after #line is not an integer", 1782},
- {"line number out of range in #line", 1783},
- {"garbage at end of #line", 1784},
- {"second token after #line is not a string", 1785},
- {"token after #undef is not an identifier", 1786},
- {"junk on line after #undef", 1787},
- {"cannot undefine poisoned \"%s\"", 1788},
- {"undefining `%s'", 1789},
- {"#error %.*s", 1790},
- {"#warning %.*s", 1791},
- {"malformed #pragma directive", 1792},
- {"#pragma once is obsolete", 1793},
- {"#pragma once outside include file", 1794},
- {"malformed #pragma implementation", 1795},
- {"#pragma implementation for %s appears after file is included", 1796},
- {"invalid #pragma poison directive", 1797},
- {"poisoning existing macro `%s'", 1798},
- {"#pragma system_header outside include file", 1799},
- {"#%s with no argument", 1800},
- {"#%s with invalid argument", 1801},
- {"garbage at end of #%s", 1802},
- {"attempt to use poisoned `%s'", 1803},
- {"#else without #if", 1804},
- {"#else after #else", 1805},
- {"the conditional began here", 1806},
- {"#elif without #if", 1807},
- {"#elif after #else", 1808},
- {"#endif without #if", 1809},
- {"ISO C forbids text after #%s", 1810},
- {"unterminated #%s", 1811},
- {"Invalid option %s", 1812},
- {"`%s' is not a legal option to the preprocessor", 1813},
- {"too many input files", 1814},
- {";; Processing block from %d to %d, %d sets.\n", 1815},
- {"%s:%d: warning: ", 1816},
- {"%s:%d: ", 1817},
- {"%s: warning: ", 1818},
- {"%s: ", 1819},
- {"%.*s", 1820},
- {"sorry, not implemented: ", 1821},
- {"%s: warnings being treated as errors\n", 1822},
- {"%s: %s: I/O error\n", 1823},
- {" %s", 1824},
- {"At top level:\n", 1825},
- {"In method `%s':\n", 1826},
- {"In function `%s':\n", 1827},
- {"In file included from %s:%d", 1828},
+ -h or --help Display this information\n", 1703},
+ {"missing terminating > character", 1704},
+ {"trigraph ??%c converted to %c", 1705},
+ {"trigraph ??%c ignored", 1706},
+ {"'/*' within comment", 1707},
+ {"embedded null character ignored", 1708},
+ {"%s in preprocessing directive", 1709},
+ {"'$' character in identifier", 1710},
+ {"multi-line string constant", 1711},
+ {"missing terminating %c character", 1712},
+ {"possible start of unterminated string literal", 1713},
+ {"null characters preserved", 1714},
+ {"null character preserved", 1715},
+ {"C++ style comments are not allowed in ISO C89", 1716},
+ {"(this will be reported only once per input file)", 1717},
+ {"comment start split across lines", 1718},
+ {"multi-line comment", 1719},
+ {"comment start '/*' split across lines", 1720},
+ {"unterminated comment", 1721},
+ {"comment end '*/' split across lines", 1722},
+ {"backslash-newline at end of file", 1723},
+ {"backslash and newline separated by space", 1724},
+ {"K+R C ignores #\\n with the # indented", 1725},
+ {"no newline at end of file", 1726},
+ {"invalid preprocessing directive #%s", 1727},
+ {"invalid preprocessing directive", 1728},
+ {"Unspellable token %s", 1729},
+ {"function macro %s must be used with arguments in traditional C", 1730},
+ {"unterminated argument list for macro \"%s\"", 1731},
+ {"ISO C99 requires rest arguments to be used", 1732},
+ {"not enough arguments for macro \"%s\"", 1733},
+ {"too many arguments for macro \"%s\"", 1734},
+ {"pasting would not give a valid preprocessing token", 1735},
+ {"invalid string literal, ignoring final '\\'", 1736},
+ {"two tokens pushed in a row", 1737},
+ {"directive begins with %s?!", 1738},
+ {"macros nested too deep invoking '%s'", 1739},
+ {"#%s may not be used inside a macro argument", 1740},
+ {"attempt to use poisoned \"%s\"", 1741},
+ {"invalid special hash type", 1742},
+ {"<command line>", 1743},
+ {"traditional C ignores #%s with the # indented", 1744},
+ {"suggest hiding #%s from traditional C with an indented #", 1745},
+ {"ISO C does not allow #%s", 1746},
+ {"# followed by integer", 1747},
+ {"\"defined\" cannot be used as a macro name", 1748},
+ {"\"%s\" cannot be used as a macro name in C++", 1749},
+ {"macro names must be identifiers", 1750},
+ {"\"%s\" cannot be used as a macro name", 1751},
+ {"junk on line after #undef", 1752},
+ {"undefining \"%s\"", 1753},
+ {"#%s expects \"FILENAME\" or <FILENAME>", 1754},
+ {"empty file name in #%s", 1755},
+ {"junk at end of #%s", 1756},
+ {"#import is obsolete, use an #ifndef wrapper in the header file", 1757},
+ {"#include_next in primary source file", 1758},
+ {"invalid format #line", 1759},
+ {"token after #line is not a positive integer", 1760},
+ {"line number out of range", 1761},
+ {"second token after #line is not a string", 1762},
+ {"garbage at end of #line", 1763},
+ {"invalid #ident", 1764},
+ {"unknown #pragma namespace %s", 1765},
+ {"#pragma once is obsolete", 1766},
+ {"#pragma once outside include file", 1767},
+ {"invalid #pragma poison directive", 1768},
+ {"poisoning existing macro \"%s\"", 1769},
+ {"#pragma system_header outside include file", 1770},
+ {"cannot find source %c%s%c", 1771},
+ {"current file is older than %c%.*s%c", 1772},
+ {"#%s with no argument", 1773},
+ {"#%s with invalid argument", 1774},
+ {"garbage at end of #%s", 1775},
+ {"attempt to use poisoned identifier \"%s\"", 1776},
+ {"#else without #if", 1777},
+ {"#else after #else", 1778},
+ {"the conditional began here", 1779},
+ {"#elif without #if", 1780},
+ {"#elif after #else", 1781},
+ {"#endif without #if", 1782},
+ {"ISO C forbids text after #%s", 1783},
+ {"unterminated #%s", 1784},
+ {"assertion without predicate", 1785},
+ {"predicate must be an identifier", 1786},
+ {"missing '(' after predicate", 1787},
+ {"missing ')' to complete answer", 1788},
+ {"predicate's answer is empty", 1789},
+ {"junk at end of assertion", 1790},
+ {"\"%s\" re-asserted", 1791},
+ {"<builtin>", 1792},
+ {"#include nested too deep", 1793},
+ {"buffer pushed with contexts stacked", 1794},
+ {"Invalid option %s", 1795},
+ {"malformed #pragma implementation", 1796},
+ {"\"%s\" is not a valid option to the preprocessor", 1797},
+ {"too many input files", 1798},
+ {";; Processing block from %d to %d, %d sets.\n", 1799},
+ {"%s:%d: warning: ", 1800},
+ {"%s:%d: ", 1801},
+ {"%s: warning: ", 1802},
+ {"%s: ", 1803},
+ {"((anonymous))", 1804},
+ {"sorry, not implemented: ", 1805},
+ {"In method `%s':", 1806},
+ {"In function `%s':", 1807},
+ {"Unrecognizable insn:", 1808},
+ {"Insn does not satisfy its constraints:", 1809},
{"\
-,\n\
- from %s:%d", 1829},
- {"Unrecognizable insn:", 1830},
- {"Insn does not satisfy its constraints:", 1831},
- {"DW_LOC_OP %s not implememnted yet.\n", 1832},
- {"internal regno botch: regno = %d\n", 1833},
+Internal compiler error in %s, at %s:%d\n\
+Please submit a full bug report.\n\
+See %s for instructions.", 1810},
+ {"DW_LOC_OP %s not implememnted yet.\n", 1811},
+ {"internal regno botch: regno = %d\n", 1812},
+ {"getpwd", 1813},
{"\
-Unable to access real part of complex value in a hard register on this target", 1834},
+Unable to access real part of complex value in a hard register on this target", 1814},
{"\
Unable to access imaginary part of complex value in a hard register on this \
-target", 1835},
- {"ICE: emit_insn used where emit_jump_insn needed:\n", 1836},
- {"additional handler after ...", 1837},
- {"Cannot duplicate non-existant exception region.", 1838},
- {"exception handling disabled, use -fexceptions to enable", 1839},
- {"Never issued previous false_label", 1840},
- {"Counted %d copies of EH region %d in list.\n", 1841},
- {"Duplicate call to __builtin_eh_return", 1842},
- {"function uses __builtin_eh_return", 1843},
- {"stack limits not supported on this target", 1844},
- {"function using short complex types cannot be inline", 1845},
- {"unsupported wide integer operation", 1846},
- {"prior parameter's size depends on `%s'", 1847},
- {"returned value in block_exit_expr", 1848},
- {"invalid `asm': %s", 1849},
- {"output_operand: %s", 1850},
- {"operand number missing after %-letter", 1851},
- {"operand number out of range", 1852},
- {"invalid %%-code", 1853},
- {"`%l' operand isn't a label", 1854},
- {"ICE: would have deleted prologue/epilogue insn", 1855},
- {"Head insn %d for block %d not found in the insn stream.", 1856},
- {"Insn %d is in multiple basic blocks (%d and %d)", 1857},
- {"End insn %d for block %d not found in the insn stream.", 1858},
- {"Basic block %i edge lists are corrupted", 1859},
- {"Basic block %d pred edge is corrupted", 1860},
- {"NOTE_INSN_BASIC_BLOCK is missing for block %d", 1861},
- {"NOTE_INSN_BASIC_BLOCK is missing for block %d\n", 1862},
- {"NOTE_INSN_BASIC_BLOCK %d in the middle of basic block %d", 1863},
- {"In basic block %d:", 1864},
- {"Basic blocks not numbered consecutively", 1865},
- {"number of bb notes in insn chain (%d) != n_basic_blocks (%d)", 1866},
- {"comparison is always %d due to width of bitfield", 1867},
- {"comparison is always %d", 1868},
- {"`or' of unmatched not-equal tests is always 1", 1869},
- {"`and' of mutually exclusive equal-tests is always 0", 1870},
- {"`%s' might be used uninitialized in this function", 1871},
- {"variable `%s' might be clobbered by `longjmp' or `vfork'", 1872},
- {"argument `%s' might be clobbered by `longjmp' or `vfork'", 1873},
- {"function returns an aggregate", 1874},
- {"unused parameter `%s'", 1875},
- {"Ambiguous abbreviation %s", 1876},
- {"Incomplete `%s' option", 1877},
- {"Missing argument to `%s' option", 1878},
- {"Extraneous argument to `%s' option", 1879},
- {"Using builtin specs.\n", 1880},
+target", 1815},
+ {"ICE: emit_insn used where emit_jump_insn needed:\n", 1816},
+ {"additional handler after ...", 1817},
+ {"Cannot duplicate non-existant exception region.", 1818},
+ {"exception handling disabled, use -fexceptions to enable", 1819},
+ {"Never issued previous false_label", 1820},
+ {"Counted %d copies of EH region %d in list.\n", 1821},
+ {"Duplicate call to __builtin_eh_return", 1822},
+ {"function uses __builtin_eh_return", 1823},
+ {"stack limits not supported on this target", 1824},
+ {"function using short complex types cannot be inline", 1825},
+ {"unsupported wide integer operation", 1826},
+ {"prior parameter's size depends on `%s'", 1827},
+ {"returned value in block_exit_expr", 1828},
+ {"invalid `asm': %s", 1829},
+ {"output_operand: %s", 1830},
+ {"operand number missing after %-letter", 1831},
+ {"operand number out of range", 1832},
+ {"invalid %%-code", 1833},
+ {"`%l' operand isn't a label", 1834},
+ {"ICE: would have deleted prologue/epilogue insn", 1835},
+ {"End insn %d for block %d not found in the insn stream.", 1836},
+ {"Insn %d is in multiple basic blocks (%d and %d)", 1837},
+ {"Head insn %d for block %d not found in the insn stream.", 1838},
+ {"Basic block %i edge lists are corrupted", 1839},
+ {"Basic block %d pred edge is corrupted", 1840},
+ {"NOTE_INSN_BASIC_BLOCK is missing for block %d", 1841},
+ {"NOTE_INSN_BASIC_BLOCK is missing for block %d\n", 1842},
+ {"NOTE_INSN_BASIC_BLOCK %d in the middle of basic block %d", 1843},
+ {"In basic block %d:", 1844},
+ {"Basic blocks not numbered consecutively", 1845},
+ {"number of bb notes in insn chain (%d) != n_basic_blocks (%d)", 1846},
+ {"comparison is always %d due to width of bitfield", 1847},
+ {"comparison is always %d", 1848},
+ {"`or' of unmatched not-equal tests is always 1", 1849},
+ {"`and' of mutually exclusive equal-tests is always 0", 1850},
+ {"`%s' might be used uninitialized in this function", 1851},
+ {"variable `%s' might be clobbered by `longjmp' or `vfork'", 1852},
+ {"argument `%s' might be clobbered by `longjmp' or `vfork'", 1853},
+ {"function returns an aggregate", 1854},
+ {"unused parameter `%s'", 1855},
+ {"Ambiguous abbreviation %s", 1856},
+ {"Incomplete `%s' option", 1857},
+ {"Missing argument to `%s' option", 1858},
+ {"Extraneous argument to `%s' option", 1859},
+ {"Using builtin specs.\n", 1860},
{"\
Setting spec %s to '%s'\n\
-\n", 1881},
- {"Reading specs from %s\n", 1882},
- {"specs %%include syntax malformed after %ld characters", 1883},
- {"Could not find specs file %s\n", 1884},
- {"specs %%rename syntax malformed after %ld characters", 1885},
- {"specs %s spec was not found to be renamed", 1886},
- {"rename spec %s to %s\n", 1887},
+\n", 1861},
+ {"Reading specs from %s\n", 1862},
+ {"specs %%include syntax malformed after %ld characters", 1863},
+ {"Could not find specs file %s\n", 1864},
+ {"specs %%rename syntax malformed after %ld characters", 1865},
+ {"specs %s spec was not found to be renamed", 1866},
+ {"rename spec %s to %s\n", 1867},
{"\
spec is '%s'\n\
-\n", 1888},
- {"specs unknown %% command after %ld characters", 1889},
- {"specs file malformed after %ld characters", 1890},
- {"spec file has no spec for linking", 1891},
- {"file path prefix `%s%s' never used", 1892},
- {"file path prefix `%s' never used", 1893},
- {"-pipe not supported", 1894},
+\n", 1868},
+ {"specs unknown %% command after %ld characters", 1869},
+ {"specs file malformed after %ld characters", 1870},
+ {"spec file has no spec for linking", 1871},
+ {"-pipe not supported", 1872},
{"\
\n\
-Go ahead? (y or n) ", 1895},
- {"Internal compiler error: program %s got fatal signal %d", 1896},
- {"# %s %.2f %.2f\n", 1897},
- {"argument to `-Xlinker' is missing", 1898},
- {"argument to `-specs' is missing", 1899},
- {"argument to `-specs=' is missing", 1900},
- {"argument to `-b' is missing", 1901},
- {"argument to `-B' is missing", 1902},
- {"argument to `-V' is missing", 1903},
- {"invalid version number format", 1904},
- {"cannot specify -o with -c or -S and multiple compilations", 1905},
- {"Warning: -pipe ignored since -save-temps specified", 1906},
- {"Warning: -pipe ignored since -time specified", 1907},
- {"argument to `-x' is missing", 1908},
- {"argument to `-%s' is missing", 1909},
- {"Warning: `-x %s' after last input file has no effect", 1910},
- {"Invalid specification! Bug in cc.", 1911},
- {"Spec failure: '%%*' has not been initialised by pattern match", 1912},
- {"Warning: use of obsolete %%[ operator in specs", 1913},
- {"Processing spec %c%s%c, which is '%s'\n", 1914},
- {"Spec failure: Unrecognised spec option '%c'", 1915},
- {"unrecognized option `-%s'", 1916},
- {"gcc version %s\n", 1917},
- {"gcc driver version %s executing gcc version %s\n", 1918},
- {"No input files", 1919},
- {"%s: %s compiler not installed on this system", 1920},
- {"%s: linker input file unused since linking not done", 1921},
- {"language %s not recognized", 1922},
- {"Internal gcov abort.\n", 1923},
- {"gcov [-b] [-v] [-n] [-l] [-f] [-o OBJDIR] file\n", 1924},
- {"Could not open basic block file %s.\n", 1925},
- {"Could not open data file %s.\n", 1926},
- {"Assuming that all execution counts are zero.\n", 1927},
- {"Could not open program flow graph file %s.\n", 1928},
- {"No executable code associated with file %s.\n", 1929},
- {".da file contents exhausted too early\n", 1930},
- {".da file contents not exhausted\n", 1931},
- {"%6.2f%% of %d source lines executed in function %s\n", 1932},
- {"No executable source lines in function %s\n", 1933},
- {"%6.2f%% of %d branches executed in function %s\n", 1934},
- {"%6.2f%% of %d branches taken at least once in function %s\n", 1935},
- {"No branches in function %s\n", 1936},
- {"%6.2f%% of %d calls executed in function %s\n", 1937},
- {"No calls in function %s\n", 1938},
- {"didn't use all bb entries of graph, function %s\n", 1939},
- {"block_num = %ld, num_blocks = %d\n", 1940},
- {"ERROR: too many basic blocks in .bb file %s\n", 1941},
- {"%6.2f%% of %d source lines executed in file %s\n", 1942},
- {"No executable source lines in file %s\n", 1943},
- {"%6.2f%% of %d branches executed in file %s\n", 1944},
- {"%6.2f%% of %d branches taken at least once in file %s\n", 1945},
- {"No branches in file %s\n", 1946},
- {"%6.2f%% of %d calls executed in file %s\n", 1947},
- {"No calls in file %s\n", 1948},
- {"Could not open source file %s.\n", 1949},
- {"Could not open output file %s.\n", 1950},
- {"Creating %s.\n", 1951},
- {"call %d never executed\n", 1952},
- {"call %d returns = %d\n", 1953},
- {"call %d returns = %d%%\n", 1954},
- {"branch %d never executed\n", 1955},
- {"branch %d taken = %d\n", 1956},
- {"branch %d taken = %d%%\n", 1957},
- {"Unexpected EOF while reading source file %s.\n", 1958},
- {"%s: option `%s' is ambiguous\n", 1959},
- {"%s: option `--%s' doesn't allow an argument\n", 1960},
- {"%s: option `%c%s' doesn't allow an argument\n", 1961},
- {"%s: option `%s' requires an argument\n", 1962},
- {"%s: unrecognized option `--%s'\n", 1963},
- {"%s: unrecognized option `%c%s'\n", 1964},
- {"%s: illegal option -- %c\n", 1965},
- {"%s: invalid option -- %c\n", 1966},
- {"%s: option requires an argument -- %c\n", 1967},
- {"%s: option `-W %s' is ambiguous\n", 1968},
- {"%s: option `-W %s' doesn't allow an argument\n", 1969},
- {"varargs function cannot be inline", 1970},
- {"function using alloca cannot be inline", 1971},
- {"function using setjmp cannot be inline", 1972},
- {"function with nested functions cannot be inline", 1973},
- {"function with label addresses used in initializers cannot inline", 1974},
- {"function too large to be inline", 1975},
- {"no prototype, and parameter address used; cannot be inline", 1976},
- {"inline functions not supported for this return value type", 1977},
- {"function with varying-size return value cannot be inline", 1978},
- {"function with varying-size parameter cannot be inline", 1979},
- {"function with transparent unit parameter cannot be inline", 1980},
- {"function with computed jump cannot inline", 1981},
- {"function with nonlocal goto cannot be inline", 1982},
- {"function with complex parameters cannot be inline", 1983},
- {"function with target specific attribute(s) cannot be inlined", 1984},
- {"Objective-C text in C source file", 1985},
- {"object does not conform to the `%s' protocol", 1986},
- {"class `%s' does not implement the `%s' protocol", 1987},
- {"`%s' cannot be statically allocated", 1988},
- {"statically allocated objects not supported", 1989},
- {"Unexpected type for `id' (%s)", 1990},
- {"Undefined type `id', please import <objc/objc.h>", 1991},
- {"Cannot find protocol declaration for `%s'", 1992},
- {"Cannot find interface declaration for `%s'", 1993},
- {"Cannot find class `%s'", 1994},
- {"Class `%s' already exists", 1995},
- {"Cannot find interface declaration for `%s', superclass of `%s'", 1996},
- {"Circular inheritance in interface declaration for `%s'", 1997},
- {"inconsistent instance variable specification", 1998},
- {"multiple declarations for method `%s'", 1999},
- {"invalid receiver type `%s'", 2000},
- {"`%s' does not respond to `%s'", 2001},
- {"no super class declared in interface for `%s'", 2002},
- {"cannot find class (factory) method.", 2003},
- {"return type for `%s' defaults to id", 2004},
- {"method `%s' not implemented by protocol.", 2005},
- {"return type defaults to id", 2006},
- {"cannot find method.", 2007},
- {"instance variable `%s' accessed in class method", 2008},
- {"duplicate definition of class method `%s'.", 2009},
- {"duplicate declaration of class method `%s'.", 2010},
- {"duplicate definition of instance method `%s'.", 2011},
- {"duplicate declaration of instance method `%s'.", 2012},
- {"duplicate interface declaration for category `%s(%s)'", 2013},
- {"instance variable `%s' is declared private", 2014},
- {"instance variable `%s' is declared %s", 2015},
- {"static access to object of type `id'", 2016},
- {"incomplete implementation of class `%s'", 2017},
- {"incomplete implementation of category `%s'", 2018},
- {"method definition for `%c%s' not found", 2019},
- {"%s `%s' does not fully implement the `%s' protocol", 2020},
- {"reimplementation of class `%s'", 2021},
- {"conflicting super class name `%s'", 2022},
- {"duplicate interface declaration for class `%s'", 2023},
- {"duplicate declaration for protocol `%s'", 2024},
- {"[super ...] must appear in a method context", 2025},
- {"potential selector conflict for method `%s'", 2026},
- {"`@end' must appear in an implementation context", 2027},
- {"method definition not in class context", 2028},
- {"Arc profiling: some edge counts were bad.", 2029},
- {"file %s not found, execution counts assumed to be zero.", 2030},
- {"%s: internal abort\n", 2031},
- {"%s: error writing file `%s': %s\n", 2032},
- {"%s: usage '%s [ -VqfnkN ] [ -i <istring> ] [ filename ... ]'\n", 2033},
- {"%s: usage '%s [ -VqfnkNlgC ] [ -B <dirname> ] [ filename ... ]'\n", 2034},
- {"%s: warning: no read access for file `%s'\n", 2035},
- {"%s: warning: no write access for file `%s'\n", 2036},
- {"%s: warning: no write access for dir containing `%s'\n", 2037},
- {"%s: invalid file name: %s\n", 2038},
- {"%s: %s: can't get status: %s\n", 2039},
+Go ahead? (y or n) ", 1873},
+ {"\
+Internal error: %s (program %s)\n\
+Please submit a full bug report.\n\
+See %s for instructions.", 1874},
+ {"# %s %.2f %.2f\n", 1875},
+ {"Usage: %s [options] file...\n", 1876},
+ {"Options:\n", 1877},
+ {" -pass-exit-codes Exit with highest error code from a phase\n", 1878},
+ {" --help Display this information\n", 1879},
+ {" (Use '-v --help' to display command line options of sub-processes)\n", 1880},
+ {" -dumpspecs Display all of the built in spec strings\n", 1881},
+ {" -dumpversion Display the version of the compiler\n", 1882},
+ {" -dumpmachine Display the compiler's target processor\n", 1883},
+ {"\
+ -print-search-dirs Display the directories in the compiler's search \
+path\n", 1884},
+ {"\
+ -print-libgcc-file-name Display the name of the compiler's companion \
+library\n", 1885},
+ {" -print-file-name=<lib> Display the full path to library <lib>\n", 1886},
+ {"\
+ -print-prog-name=<prog> Display the full path to compiler component \
+<prog>\n", 1887},
+ {"\
+ -print-multi-directory Display the root directory for versions of \
+libgcc\n", 1888},
+ {"\
+ -print-multi-lib Display the mapping between command line options \
+and\n\
+ multiple library search directories\n", 1889},
+ {"\
+ -Wa,<options> Pass comma-separated <options> on to the \
+assembler\n", 1890},
+ {"\
+ -Wp,<options> Pass comma-separated <options> on to the \
+preprocessor\n", 1891},
+ {"\
+ -Wl,<options> Pass comma-separated <options> on to the linker\n", 1892},
+ {" -Xlinker <arg> Pass <arg> on to the linker\n", 1893},
+ {" -save-temps Do not delete intermediate files\n", 1894},
+ {" -pipe Use pipes rather than intermediate files\n", 1895},
+ {" -time Time the execution of each subprocess\n", 1896},
+ {"\
+ -specs=<file> Override builtin specs with the contents of \
+<file>\n", 1897},
+ {"\
+ -std=<standard> Assume that the input sources are for <standard>\n", 1898},
+ {"\
+ -B <directory> Add <directory> to the compiler's search paths\n", 1899},
+ {" -b <machine> Run gcc for target <machine>, if installed\n", 1900},
+ {"\
+ -V <version> Run gcc version number <version>, if installed\n", 1901},
+ {"\
+ -v Display the programs invoked by the compiler\n", 1902},
+ {"\
+ -E Preprocess only; do not compile, assemble or \
+link\n", 1903},
+ {" -S Compile only; do not assemble or link\n", 1904},
+ {" -c Compile and assemble, but do not link\n", 1905},
+ {" -o <file> Place the output into <file>\n", 1906},
+ {"\
+ -x <language> Specify the language of the following input \
+files\n\
+ Permissable languages include: c c++ assembler \
+none\n\
+ 'none' means revert to the default behaviour of\n\
+ guessing the language based on the file's \
+extension\n", 1907},
+ {"\
+\n\
+Options starting with -g, -f, -m, -O or -W are automatically passed on to\n\
+the various sub-processes invoked by %s. In order to pass other options\n\
+on to these processes the -W<letter> options must be used.\n", 1908},
+ {"argument to `-Xlinker' is missing", 1909},
+ {"argument to `-specs' is missing", 1910},
+ {"argument to `-specs=' is missing", 1911},
+ {"argument to `-b' is missing", 1912},
+ {"argument to `-B' is missing", 1913},
+ {"argument to `-V' is missing", 1914},
+ {"invalid version number format", 1915},
+ {"cannot specify -o with -c or -S and multiple compilations", 1916},
+ {"Warning: -pipe ignored since -save-temps specified", 1917},
+ {"Warning: -pipe ignored since -time specified", 1918},
+ {"argument to `-x' is missing", 1919},
+ {"argument to `-%s' is missing", 1920},
+ {"Warning: `-x %s' after last input file has no effect", 1921},
+ {"Invalid specification! Bug in cc.", 1922},
+ {"Spec failure: '%%*' has not been initialised by pattern match", 1923},
+ {"Warning: use of obsolete %%[ operator in specs", 1924},
+ {"Processing spec %c%s%c, which is '%s'\n", 1925},
+ {"Spec failure: Unrecognised spec option '%c'", 1926},
+ {"unrecognized option `-%s'", 1927},
+ {"install: %s%s\n", 1928},
+ {"programs: %s\n", 1929},
+ {"libraries: %s\n", 1930},
+ {"\
+\n\
+For bug reporting instructions, please see:\n", 1931},
+ {"gcc version %s\n", 1932},
+ {"gcc driver version %s executing gcc version %s\n", 1933},
+ {"No input files", 1934},
+ {"%s: %s compiler not installed on this system", 1935},
+ {"%s: linker input file unused since linking not done", 1936},
+ {"language %s not recognized", 1937},
+ {"Internal gcov abort.\n", 1938},
+ {"gcov [-b] [-v] [-n] [-l] [-f] [-o OBJDIR] file\n", 1939},
+ {"Could not open basic block file %s.\n", 1940},
+ {"Could not open data file %s.\n", 1941},
+ {"Assuming that all execution counts are zero.\n", 1942},
+ {"Could not open program flow graph file %s.\n", 1943},
+ {"No executable code associated with file %s.\n", 1944},
+ {".da file contents exhausted too early\n", 1945},
+ {".da file contents not exhausted\n", 1946},
+ {"%6.2f%% of %d source lines executed in function %s\n", 1947},
+ {"No executable source lines in function %s\n", 1948},
+ {"%6.2f%% of %d branches executed in function %s\n", 1949},
+ {"%6.2f%% of %d branches taken at least once in function %s\n", 1950},
+ {"No branches in function %s\n", 1951},
+ {"%6.2f%% of %d calls executed in function %s\n", 1952},
+ {"No calls in function %s\n", 1953},
+ {"didn't use all bb entries of graph, function %s\n", 1954},
+ {"block_num = %ld, num_blocks = %d\n", 1955},
+ {"ERROR: too many basic blocks in .bb file %s\n", 1956},
+ {"%6.2f%% of %d source lines executed in file %s\n", 1957},
+ {"No executable source lines in file %s\n", 1958},
+ {"%6.2f%% of %d branches executed in file %s\n", 1959},
+ {"%6.2f%% of %d branches taken at least once in file %s\n", 1960},
+ {"No branches in file %s\n", 1961},
+ {"%6.2f%% of %d calls executed in file %s\n", 1962},
+ {"No calls in file %s\n", 1963},
+ {"Could not open source file %s.\n", 1964},
+ {"Could not open output file %s.\n", 1965},
+ {"Creating %s.\n", 1966},
+ {"call %d never executed\n", 1967},
+ {"call %d returns = %d\n", 1968},
+ {"call %d returns = %d%%\n", 1969},
+ {"branch %d never executed\n", 1970},
+ {"branch %d taken = %d\n", 1971},
+ {"branch %d taken = %d%%\n", 1972},
+ {"Unexpected EOF while reading source file %s.\n", 1973},
+ {"%s: option `%s' is ambiguous\n", 1974},
+ {"%s: option `--%s' doesn't allow an argument\n", 1975},
+ {"%s: option `%c%s' doesn't allow an argument\n", 1976},
+ {"%s: option `%s' requires an argument\n", 1977},
+ {"%s: unrecognized option `--%s'\n", 1978},
+ {"%s: unrecognized option `%c%s'\n", 1979},
+ {"%s: illegal option -- %c\n", 1980},
+ {"%s: invalid option -- %c\n", 1981},
+ {"%s: option requires an argument -- %c\n", 1982},
+ {"%s: option `-W %s' is ambiguous\n", 1983},
+ {"%s: option `-W %s' doesn't allow an argument\n", 1984},
+ {"fix_sched_param: unknown param: %s", 1985},
+ {"no memory", 1986},
+ {"varargs function cannot be inline", 1987},
+ {"function using alloca cannot be inline", 1988},
+ {"function using setjmp cannot be inline", 1989},
+ {"function with nested functions cannot be inline", 1990},
+ {"function with label addresses used in initializers cannot inline", 1991},
+ {"function too large to be inline", 1992},
+ {"no prototype, and parameter address used; cannot be inline", 1993},
+ {"inline functions not supported for this return value type", 1994},
+ {"function with varying-size return value cannot be inline", 1995},
+ {"function with varying-size parameter cannot be inline", 1996},
+ {"function with transparent unit parameter cannot be inline", 1997},
+ {"function with computed jump cannot inline", 1998},
+ {"function with nonlocal goto cannot be inline", 1999},
+ {"function with complex parameters cannot be inline", 2000},
+ {"function with target specific attribute(s) cannot be inlined", 2001},
+ {"Objective-C text in C source file", 2002},
+ {"no class name specified as argument to -fconstant-string-class", 2003},
+ {"object does not conform to the `%s' protocol", 2004},
+ {"class `%s' does not implement the `%s' protocol", 2005},
+ {"`%s' cannot be statically allocated", 2006},
+ {"statically allocated objects not supported", 2007},
+ {"Unexpected type for `id' (%s)", 2008},
+ {"Undefined type `id', please import <objc/objc.h>", 2009},
+ {"Cannot find protocol declaration for `%s'", 2010},
+ {"Cannot find interface declaration for `%s'", 2011},
+ {"Cannot find class `%s'", 2012},
+ {"Class `%s' already exists", 2013},
+ {"Cannot find interface declaration for `%s', superclass of `%s'", 2014},
+ {"Circular inheritance in interface declaration for `%s'", 2015},
+ {"inconsistent instance variable specification", 2016},
+ {"multiple declarations for method `%s'", 2017},
+ {"invalid receiver type `%s'", 2018},
+ {"`%s' does not respond to `%s'", 2019},
+ {"no super class declared in interface for `%s'", 2020},
+ {"cannot find class (factory) method.", 2021},
+ {"return type for `%s' defaults to id", 2022},
+ {"method `%s' not implemented by protocol.", 2023},
+ {"return type defaults to id", 2024},
+ {"cannot find method.", 2025},
+ {"instance variable `%s' accessed in class method", 2026},
+ {"duplicate definition of class method `%s'.", 2027},
+ {"duplicate declaration of class method `%s'.", 2028},
+ {"duplicate definition of instance method `%s'.", 2029},
+ {"duplicate declaration of instance method `%s'.", 2030},
+ {"duplicate interface declaration for category `%s(%s)'", 2031},
+ {"instance variable `%s' is declared private", 2032},
+ {"instance variable `%s' is declared %s", 2033},
+ {"static access to object of type `id'", 2034},
+ {"incomplete implementation of class `%s'", 2035},
+ {"incomplete implementation of category `%s'", 2036},
+ {"method definition for `%c%s' not found", 2037},
+ {"%s `%s' does not fully implement the `%s' protocol", 2038},
+ {"reimplementation of class `%s'", 2039},
+ {"conflicting super class name `%s'", 2040},
+ {"duplicate interface declaration for class `%s'", 2041},
+ {"duplicate declaration for protocol `%s'", 2042},
+ {"[super ...] must appear in a method context", 2043},
+ {"potential selector conflict for method `%s'", 2044},
+ {"`@end' must appear in an implementation context", 2045},
+ {"method definition not in class context", 2046},
+ {"Arc profiling: some edge counts were bad.", 2047},
+ {"file %s not found, execution counts assumed to be zero.", 2048},
+ {"%s: internal abort\n", 2049},
+ {"%s: error writing file `%s': %s\n", 2050},
+ {"%s: usage '%s [ -VqfnkN ] [ -i <istring> ] [ filename ... ]'\n", 2051},
+ {"%s: usage '%s [ -VqfnkNlgC ] [ -B <dirname> ] [ filename ... ]'\n", 2052},
+ {"%s: warning: no read access for file `%s'\n", 2053},
+ {"%s: warning: no write access for file `%s'\n", 2054},
+ {"%s: warning: no write access for dir containing `%s'\n", 2055},
+ {"%s: invalid file name: %s\n", 2056},
+ {"%s: %s: can't get status: %s\n", 2057},
+ {"\
+\n\
+%s: fatal error: aux info file corrupted at line %d\n", 2058},
+ {"%s:%d: declaration of function `%s' takes different forms\n", 2059},
+ {"%s: compiling `%s'\n", 2060},
+ {"%s: wait: %s\n", 2061},
+ {"%s: subprocess got fatal signal %d\n", 2062},
+ {"%s: %s exited with status %d\n", 2063},
+ {"%s: warning: missing SYSCALLS file `%s'\n", 2064},
+ {"%s: can't read aux info file `%s': %s\n", 2065},
+ {"%s: can't get status of aux info file `%s': %s\n", 2066},
+ {"%s: can't open aux info file `%s' for reading: %s\n", 2067},
+ {"%s: error reading aux info file `%s': %s\n", 2068},
+ {"%s: error closing aux info file `%s': %s\n", 2069},
+ {"%s: can't delete aux info file `%s': %s\n", 2070},
+ {"%s: can't delete file `%s': %s\n", 2071},
+ {"%s: warning: can't rename file `%s' to `%s': %s\n", 2072},
+ {"%s: conflicting extern definitions of '%s'\n", 2073},
+ {"%s: declarations of '%s' will not be converted\n", 2074},
+ {"%s: conflict list for '%s' follows:\n", 2075},
+ {"%s: warning: using formals list from %s(%d) for function `%s'\n", 2076},
+ {"%s: %d: `%s' used but missing from SYSCALLS\n", 2077},
+ {"%s: %d: warning: no extern definition for `%s'\n", 2078},
+ {"%s: warning: no static definition for `%s' in file `%s'\n", 2079},
+ {"%s: multiple static defs of `%s' in file `%s'\n", 2080},
+ {"%s: %d: warning: source too confusing\n", 2081},
+ {"%s: %d: warning: varargs function declaration not converted\n", 2082},
+ {"%s: declaration of function `%s' not converted\n", 2083},
+ {"%s: warning: too many parameter lists in declaration of `%s'\n", 2084},
{"\
\n\
-%s: fatal error: aux info file corrupted at line %d\n", 2040},
- {"%s:%d: declaration of function `%s' takes different forms\n", 2041},
- {"%s: compiling `%s'\n", 2042},
- {"%s: wait: %s\n", 2043},
- {"%s: subprocess got fatal signal %d\n", 2044},
- {"%s: %s exited with status %d\n", 2045},
- {"%s: warning: missing SYSCALLS file `%s'\n", 2046},
- {"%s: can't read aux info file `%s': %s\n", 2047},
- {"%s: can't get status of aux info file `%s': %s\n", 2048},
- {"%s: can't open aux info file `%s' for reading: %s\n", 2049},
- {"%s: error reading aux info file `%s': %s\n", 2050},
- {"%s: error closing aux info file `%s': %s\n", 2051},
- {"%s: can't delete aux info file `%s': %s\n", 2052},
- {"%s: can't delete file `%s': %s\n", 2053},
- {"%s: warning: can't rename file `%s' to `%s': %s\n", 2054},
- {"%s: conflicting extern definitions of '%s'\n", 2055},
- {"%s: declarations of '%s' will not be converted\n", 2056},
- {"%s: conflict list for '%s' follows:\n", 2057},
- {"%s: warning: using formals list from %s(%d) for function `%s'\n", 2058},
- {"%s: %d: `%s' used but missing from SYSCALLS\n", 2059},
- {"%s: %d: warning: no extern definition for `%s'\n", 2060},
- {"%s: warning: no static definition for `%s' in file `%s'\n", 2061},
- {"%s: multiple static defs of `%s' in file `%s'\n", 2062},
- {"%s: %d: warning: source too confusing\n", 2063},
- {"%s: %d: warning: varargs function declaration not converted\n", 2064},
- {"%s: declaration of function `%s' not converted\n", 2065},
- {"%s: warning: too many parameter lists in declaration of `%s'\n", 2066},
+%s: warning: too few parameter lists in declaration of `%s'\n", 2085},
+ {"%s: %d: warning: found `%s' but expected `%s'\n", 2086},
+ {"%s: local declaration for function `%s' not inserted\n", 2087},
{"\
\n\
-%s: warning: too few parameter lists in declaration of `%s'\n", 2067},
- {"%s: %d: warning: found `%s' but expected `%s'\n", 2068},
- {"%s: local declaration for function `%s' not inserted\n", 2069},
+%s: %d: warning: can't add declaration of `%s' into macro call\n", 2088},
+ {"%s: global declarations for file `%s' not inserted\n", 2089},
+ {"%s: definition of function `%s' not converted\n", 2090},
+ {"%s: %d: warning: definition of %s not converted\n", 2091},
+ {"%s: found definition of `%s' at %s(%d)\n", 2092},
+ {"%s: %d: warning: `%s' excluded by preprocessing\n", 2093},
+ {"%s: function definition not converted\n", 2094},
+ {"%s: `%s' not converted\n", 2095},
+ {"%s: would convert file `%s'\n", 2096},
+ {"%s: converting file `%s'\n", 2097},
+ {"%s: can't get status for file `%s': %s\n", 2098},
+ {"%s: can't open file `%s' for reading: %s\n", 2099},
{"\
\n\
-%s: %d: warning: can't add declaration of `%s' into macro call\n", 2070},
- {"%s: global declarations for file `%s' not inserted\n", 2071},
- {"%s: definition of function `%s' not converted\n", 2072},
- {"%s: %d: warning: definition of %s not converted\n", 2073},
- {"%s: found definition of `%s' at %s(%d)\n", 2074},
- {"%s: %d: warning: `%s' excluded by preprocessing\n", 2075},
- {"%s: function definition not converted\n", 2076},
- {"%s: `%s' not converted\n", 2077},
- {"%s: would convert file `%s'\n", 2078},
- {"%s: converting file `%s'\n", 2079},
- {"%s: can't get status for file `%s': %s\n", 2080},
- {"%s: can't open file `%s' for reading: %s\n", 2081},
+%s: error reading input file `%s': %s\n", 2100},
+ {"%s: can't create/open clean file `%s': %s\n", 2101},
+ {"%s: warning: file `%s' already saved in `%s'\n", 2102},
+ {"%s: can't link file `%s' to `%s': %s\n", 2103},
+ {"%s: can't create/open output file `%s': %s\n", 2104},
+ {"%s: can't change mode of file `%s': %s\n", 2105},
+ {"%s: cannot get working directory: %s\n", 2106},
+ {"%s: input file names must have .c suffixes: %s\n", 2107},
+ {"conversion from NaN to int", 2108},
+ {"conversion from NaN to unsigned int", 2109},
+ {"floating point overflow", 2110},
+ {"overflow on truncation to integer", 2111},
+ {"overflow on truncation to unsigned integer", 2112},
+ {"%s: argument domain error", 2113},
+ {"%s: function singularity", 2114},
+ {"%s: overflow range error", 2115},
+ {"%s: underflow range error", 2116},
+ {"%s: total loss of precision", 2117},
+ {"%s: partial loss of precision", 2118},
+ {"%s: NaN - producing operation", 2119},
+ {"Output constraint %d must specify a single register", 2120},
+ {"Output regs must be grouped at top of stack", 2121},
+ {"Implicitly popped regs must be grouped at top of stack", 2122},
+ {"Output operand %d must use `&' constraint", 2123},
+ {"can't use '%s' as a %s register", 2124},
+ {"unknown register name: %s", 2125},
+ {"global register variable follows a function definition", 2126},
+ {"register used for two global register variables", 2127},
+ {"call-clobbered register used for global register variable", 2128},
+ {"cannot reload integer constant operand in `asm'", 2129},
+ {"impossible register constraint in `asm'", 2130},
+ {"`&' constraint used with no register class", 2131},
+ {"inconsistent operand constraints in an `asm'", 2132},
+ {"frame size too large for reliable stack checking", 2133},
+ {"try reducing the number of local variables", 2134},
+ {"Can't find a register in class `%s' while reloading `asm'.", 2135},
+ {"Unable to find a register to spill in class `%s'.", 2136},
+ {"`asm' operand requires impossible reload", 2137},
+ {"`asm' operand constraint incompatible with operand size", 2138},
+ {"output operand is constant in `asm'", 2139},
+ {"RTL check: access of elt %d of `%s' with last elt %d", 2140},
+ {"RTL check: expected elt %d type '%c', have '%c' (rtx %s)", 2141},
+ {"RTL check: expected elt %d type '%c' or '%c', have '%c' (rtx %s)", 2142},
+ {"RTL check: expected code `%s', have `%s'", 2143},
+ {"RTL check: expected code `%s' or `%s', have `%s'", 2144},
+ {"RTL check: access of elt %d of vector with last elt %d", 2145},
+ {"jump to `%s' invalidly jumps into binding contour", 2146},
+ {"label `%s' used before containing binding contour", 2147},
+ {"`asm' cannot be used in function where memory usage is checked", 2148},
+ {"`asm' cannot be used with `-fcheck-memory-usage'", 2149},
+ {"unknown register name `%s' in `asm'", 2150},
+ {"too many alternatives in `asm'", 2151},
+ {"operand constraints for `asm' differ in number of alternatives", 2152},
+ {"output operand constraint lacks `='", 2153},
+ {"output constraint `%c' for operand %d is not at the beginning", 2154},
+ {"output operand constraint %d contains `+'", 2155},
+ {"operand constraint contains '+' or '=' at illegal position.", 2156},
+ {"`%%' constraint used with last operand", 2157},
+ {"matching constraint not valid in output operand", 2158},
+ {"invalid punctuation `%c' in constraint", 2159},
+ {"output number %d not directly addressable", 2160},
+ {"more than %d operands in `asm'", 2161},
+ {"hard register `%s' listed as input operand to `asm'", 2162},
+ {"input operand constraint contains `%c'", 2163},
+ {"matching constraint references invalid operand number", 2164},
+ {"asm operand %d probably doesn't match constraints", 2165},
+ {"unused variable `%s'", 2166},
+ {"enumeration value `%s' not handled in switch", 2167},
+ {"case value `%ld' not in enumerated type", 2168},
+ {"case value `%ld' not in enumerated type `%s'", 2169},
+ {"type size can't be explicitly evaluated", 2170},
+ {"variable-size type declared outside of any function", 2171},
+ {"size of `%s' is %d bytes", 2172},
+ {"size of `%s' is larger than %d bytes", 2173},
+ {"packed attribute causes inefficient alignment for `%s'", 2174},
+ {"packed attribute is unnecessary for `%s'", 2175},
+ {"padding struct to align `%s'", 2176},
+ {"padding struct size to alignment boundary", 2177},
+ {"packed attribute causes inefficient alignment", 2178},
+ {"packed attribute is unnecessary", 2179},
{"\
\n\
-%s: error reading input file `%s': %s\n", 2082},
- {"%s: can't create/open clean file `%s': %s\n", 2083},
- {"%s: warning: file `%s' already saved in `%s'\n", 2084},
- {"%s: can't link file `%s' to `%s': %s\n", 2085},
- {"%s: can't create/open output file `%s': %s\n", 2086},
- {"%s: can't change mode of file `%s': %s\n", 2087},
- {"%s: cannot get working directory: %s\n", 2088},
- {"%s: input file names must have .c suffixes: %s\n", 2089},
- {"conversion from NaN to int", 2090},
- {"conversion from NaN to unsigned int", 2091},
- {"floating point overflow", 2092},
- {"overflow on truncation to integer", 2093},
- {"overflow on truncation to unsigned integer", 2094},
- {"%s: argument domain error", 2095},
- {"%s: function singularity", 2096},
- {"%s: overflow range error", 2097},
- {"%s: underflow range error", 2098},
- {"%s: total loss of precision", 2099},
- {"%s: partial loss of precision", 2100},
- {"%s: NaN - producing operation", 2101},
- {"Output constraint %d must specify a single register", 2102},
- {"Output regs must be grouped at top of stack", 2103},
- {"Implicitly popped regs must be grouped at top of stack", 2104},
- {"Output operand %d must use `&' constraint", 2105},
- {"can't use '%s' as a %s register", 2106},
- {"unknown register name: %s", 2107},
- {"global register variable follows a function definition", 2108},
- {"register used for two global register variables", 2109},
- {"call-clobbered register used for global register variable", 2110},
- {"cannot reload integer constant operand in `asm'", 2111},
- {"impossible register constraint in `asm'", 2112},
- {"`&' constraint used with no register class", 2113},
- {"inconsistent operand constraints in an `asm'", 2114},
- {"frame size too large for reliable stack checking", 2115},
- {"try reducing the number of local variables", 2116},
- {"Can't find a register in class `%s' while reloading `asm'.", 2117},
- {"Unable to find a register to spill in class `%s'.", 2118},
- {"`asm' operand requires impossible reload", 2119},
- {"`asm' operand constraint incompatible with operand size", 2120},
- {"output operand is constant in `asm'", 2121},
- {"RTL check: access of elt %d of `%s' with last elt %d", 2122},
- {"RTL check: expected elt %d type '%c', have '%c' (rtx %s)", 2123},
- {"RTL check: expected elt %d type '%c' or '%c', have '%c' (rtx %s)", 2124},
- {"RTL check: expected code `%s', have `%s'", 2125},
- {"RTL check: expected code `%s' or `%s', have `%s'", 2126},
- {"RTL check: access of elt %d of vector with last elt %d", 2127},
- {"\
-Internal compiler error in `%s', at %s:%d\n\
+Execution times (seconds)\n", 2180},
+ {" TOTAL :", 2181},
+ {"time in %s: %ld.%06ld (%ld%%)\n", 2182},
+ {"collect: reading %s\n", 2183},
+ {"collect: recompiling %s\n", 2184},
+ {"collect: tweaking %s in %s\n", 2185},
+ {"collect: relinking\n", 2186},
+ {"ld returned %d exit status", 2187},
+ {"Invalid option `%s'", 2188},
+ {"\
+Internal error: %s.\n\
Please submit a full bug report.\n\
-See %s for instructions.", 2128},
- {"jump to `%s' invalidly jumps into binding contour", 2129},
- {"label `%s' used before containing binding contour", 2130},
- {"`asm' cannot be used in function where memory usage is checked", 2131},
- {"`asm' cannot be used with `-fcheck-memory-usage'", 2132},
- {"unknown register name `%s' in `asm'", 2133},
- {"too many alternatives in `asm'", 2134},
- {"operand constraints for `asm' differ in number of alternatives", 2135},
- {"output operand constraint lacks `='", 2136},
- {"output constraint `%c' for operand %d is not at the beginning", 2137},
- {"output operand constraint %d contains `+'", 2138},
- {"operand constraint contains '+' or '=' at illegal position.", 2139},
- {"`%%' constraint used with last operand", 2140},
- {"matching constraint not valid in output operand", 2141},
- {"output number %d not directly addressable", 2142},
- {"more than %d operands in `asm'", 2143},
- {"hard register `%s' listed as input operand to `asm'", 2144},
- {"input operand constraint contains `%c'", 2145},
- {"matching constraint references invalid operand number", 2146},
- {"asm operand %d probably doesn't match constraints", 2147},
- {"unused variable `%s'", 2148},
- {"enumeration value `%s' not handled in switch", 2149},
- {"case value `%ld' not in enumerated type", 2150},
- {"case value `%ld' not in enumerated type `%s'", 2151},
- {"type size can't be explicitly evaluated", 2152},
- {"variable-size type declared outside of any function", 2153},
- {"size of `%s' is %d bytes", 2154},
- {"size of `%s' is larger than %d bytes", 2155},
- {"packed attribute causes inefficient alignment for `%s'", 2156},
- {"packed attribute is unnecessary for `%s'", 2157},
- {"padding struct to align `%s'", 2158},
- {"padding struct size to alignment boundary", 2159},
- {"packed attribute causes inefficient alignment", 2160},
- {"packed attribute is unnecessary", 2161},
- {"Invalid option `%s'", 2162},
- {"output pipe has been closed", 2163},
- {"`%s' used but never defined", 2164},
- {"`%s' declared `static' but never defined", 2165},
- {"`%s' defined but not used", 2166},
- {"-ffunction-sections not supported for this target.", 2167},
- {"-fdata-sections not supported for this target.", 2168},
- {"-ffunction-sections disabled; it makes profiling impossible.", 2169},
- {"-ffunction-sections may affect debugging on some targets.", 2170},
- {"Errors detected in input file (your bison.simple is out of date)\n", 2171},
- {"invalid register name `%s' for register variable", 2172},
- {"unrecognized gcc debugging option: %c", 2173},
- {"unrecognized register name `%s'", 2174},
- {"Unrecognized option `%s'", 2175},
- {"use -gdwarf -g%d for DWARF v1, level %d", 2176},
- {"use -gdwarf-2 for DWARF v2", 2177},
- {"ignoring option `%s' due to invalid debug level specification", 2178},
- {"`%s': unknown or unsupported -g option", 2179},
- {"`%s' ignored, conflicts with `-g%s'", 2180},
- {"`-a' option (basic block profile) not supported", 2181},
- {"`-ax' option (jump profiling) not supported", 2182},
- {"Ignoring command line option '%s'", 2183},
- {"(It is valid for %s but not the selected language)", 2184},
- {"-Wuninitialized is not supported without -O", 2185},
- {"`-ax' and `-a' are conflicting options. `-a' ignored.", 2186},
- {"instruction scheduling not supported on this target machine", 2187},
- {"this target machine does not have delayed branches", 2188},
- {"-f%sleading-underscore not supported on this target machine", 2189},
- {"Data size %ld.\n", 2190},
+See %s for instructions.", 2189},
+ {"`%s' used but never defined", 2190},
+ {"`%s' declared `static' but never defined", 2191},
+ {"`%s' defined but not used", 2192},
+ {"-ffunction-sections not supported for this target.", 2193},
+ {"-fdata-sections not supported for this target.", 2194},
+ {"-ffunction-sections disabled; it makes profiling impossible.", 2195},
+ {"-ffunction-sections may affect debugging on some targets.", 2196},
+ {"Errors detected in input file (your bison.simple is out of date)\n", 2197},
+ {"invalid register name `%s' for register variable", 2198},
+ {"Usage: %s input [switches]\n", 2199},
+ {"Switches:\n", 2200},
+ {"\
+ -ffixed-<register> Mark <register> as being unavailable to the \
+compiler\n", 2201},
+ {"\
+ -fcall-used-<register> Mark <register> as being corrupted by function \
+calls\n", 2202},
+ {"\
+ -fcall-saved-<register> Mark <register> as being preserved across \
+functions\n", 2203},
+ {"\
+ -finline-limit=<number> Limits the size of inlined functions to <number>\n", 2204},
+ {"\
+ -fmessage-length=<number> Limits diagnostics messages lengths to <number> \
+characters per line. 0 suppresses line-wrapping\n", 2205},
+ {"\
+ -fdiagnostics-show-location=[once | every-line] Indicates how often source \
+location information should be emitted, as prefix, at the beginning of \
+diagnostics when line-wrapping\n", 2206},
+ {" -O[number] Set optimisation level to [number]\n", 2207},
+ {" -Os Optimise for space rather than speed\n", 2208},
+ {"\
+ -pedantic Issue warnings needed by strict compliance to ISO \
+C\n", 2209},
+ {"\
+ -pedantic-errors Like -pedantic except that errors are produced\n", 2210},
+ {" -w Suppress warnings\n", 2211},
+ {" -W Enable extra warnings\n", 2212},
+ {" -Wunused Enable unused warnings\n", 2213},
+ {"\
+ -Wid-clash-<num> Warn if 2 identifiers have the same first <num> \
+chars\n", 2214},
+ {"\
+ -Wlarger-than-<number> Warn if an object is larger than <number> bytes\n", 2215},
+ {" -p Enable function profiling\n", 2216},
+ {" -a Enable block profiling \n", 2217},
+ {" -ax Enable jump profiling \n", 2218},
+ {" -o <file> Place output into <file> \n", 2219},
+ {"\
+ -G <number> Put global and static data smaller than <number>\n\
+ bytes into a special section (on some targets)\n", 2220},
+ {" -aux-info <file> Emit declaration info into <file>.X\n", 2221},
+ {"\
+ -quiet Do not display functions compiled or elapsed time\n", 2222},
+ {" -version Display the compiler's version\n", 2223},
+ {"\
+ -d[letters] Enable dumps from specific passes of the compiler\n", 2224},
+ {"\
+ -dumpbase <file> Base name to be used for dumps from specific \
+passes\n", 2225},
+ {" -fsched-verbose=<number> Set the verbosity level of the scheduler\n", 2226},
+ {" --help Display this information\n", 2227},
+ {"\
+\n\
+Language specific options:\n", 2228},
+ {" %-23.23s [undocumented]\n", 2229},
+ {"\
+\n\
+There are undocumented %s specific options as well.\n", 2230},
+ {"\
+\n\
+ Options for %s:\n", 2231},
+ {"\
+\n\
+Target specific options:\n", 2232},
+ {" -m%-21.21s [undocumented]\n", 2233},
+ {"\
+\n\
+There are undocumented target specific options as well.\n", 2234},
+ {" They exist, but they are not documented.\n", 2235},
+ {"unrecognized gcc debugging option: %c", 2236},
+ {"unrecognized register name `%s'", 2237},
+ {"Unrecognized option `%s'", 2238},
+ {"use -gdwarf -g%d for DWARF v1, level %d", 2239},
+ {"use -gdwarf-2 for DWARF v2", 2240},
+ {"ignoring option `%s' due to invalid debug level specification", 2241},
+ {"`%s': unknown or unsupported -g option", 2242},
+ {"`%s' ignored, conflicts with `-g%s'", 2243},
+ {"`-a' option (basic block profile) not supported", 2244},
+ {"`-ax' option (jump profiling) not supported", 2245},
+ {"Ignoring command line option '%s'", 2246},
+ {"(It is valid for %s but not the selected language)", 2247},
+ {"-Wuninitialized is not supported without -O", 2248},
+ {"`-ax' and `-a' are conflicting options. `-a' ignored.", 2249},
+ {"instruction scheduling not supported on this target machine", 2250},
+ {"this target machine does not have delayed branches", 2251},
+ {"-f%sleading-underscore not supported on this target machine", 2252},
+ {"Data size %ld.\n", 2253},
{"\
%s%s%s version %s (%s) compiled by GNU C version %s.\n\
-%s%s%s version %s (%s) compiled by CC.\n", 2191},
- {"options passed: ", 2192},
- {"options enabled: ", 2193},
- {"`%s' and `%s' identical in first %d characters", 2194},
- {"arrays of functions are not meaningful", 2195},
- {"function return type cannot be function", 2196},
- {"invalid initializer for bit string", 2197},
- {"Tree check: expected %s, have %s", 2198},
- {"Tree check: expected class '%c', have '%c' (%s)", 2199},
- {"register name not specified for `%s'", 2200},
- {"invalid register name for `%s'", 2201},
- {"register name given for non-register variable `%s'", 2202},
- {"data type of `%s' isn't suitable for a register", 2203},
- {"register number for `%s' isn't suitable for data type", 2204},
- {"global register variable has initial value", 2205},
- {"volatile register variables don't work as you might wish", 2206},
- {"size of variable `%s' is too large", 2207},
- {"\
-alignment of `%s' is greater than maximum object file alignment. Using %d.", 2208},
- {"requested alignment for %s is greater than implemented alignment of %d.", 2209},
- {"floating point trap outputting a constant", 2210},
- {"initializer for integer value is too complicated", 2211},
- {"initializer for floating value is not a floating constant", 2212},
- {"unknown set constructor type", 2213},
- {"invalid initial value for member `%s'", 2214},
- {"weak declaration of `%s' must be public", 2215},
- {"weak declaration of `%s' must precede definition", 2216},
- {"only weak aliases are supported in this configuration", 2217},
- {"alias definitions not supported in this configuration; ignored", 2218},
- {"Unknown stab %s: : 0x%x\n", 2219},
- {"may not use both -EB and -EL", 2220},
- {"-mapcs-26 and -mapcs-32 may not be used together", 2221},
- {"-msoft-float and -mhard_float may not be used together", 2222},
- {"-mbig-endian and -mlittle-endian may not be used together", 2223},
- {"-mbsd and -pedantic incompatible", 2224},
- {"-mbsd and -mxopen incompatible", 2225},
- {"-mxopen and -pedantic incompatible", 2226},
- {"A -ifile option requires a -map option", 2227},
- {"`-p' not supported; use `-pg' and gprof(1)", 2228},
- {"-static not valid with -mcoff", 2229},
- {"-shared not valid with -mcoff", 2230},
- {"-symbolic not valid with -mcoff", 2231},
- {"-fpic is not valid with -mcoff", 2232},
- {"-fPIC is not valid with -mcoff", 2233},
- {"-fpic not valid with -mcoff", 2234},
- {"-fPIC not valid with -mcoff", 2235},
- {"-p option not supported: use -pg instead", 2236},
- {"-pipe is not supported.", 2237},
- {"may not use both -mfp64 and -msingle-float", 2238},
- {"may not use both -mfp64 and -m4650", 2239},
- {"-mhard-float not supported.", 2240},
- {"-msingle-float and -msoft-float can not both be specified.", 2241},
- {"-p profiling is no longer supported. Use -pg instead.", 2242},
- {"profiling not supported with -mg\n", 2243},
- {"GNU C++ does not support -C without using -E", 2244},
- {"-pg and -fomit-frame-pointer are incompatible", 2245},
- {"GNU C does not support -C without using -E", 2246},
- {"-E required when input is from standard input", 2247},
- {"Compilation of header file requested", 2248},
+%s%s%s version %s (%s) compiled by CC.\n", 2254},
+ {"options passed: ", 2255},
+ {"options enabled: ", 2256},
+ {"macro or #include recursion too deep", 2257},
+ {"Usage: %s [switches] input output", 2258},
+ {"-traditional is not supported in C++", 2259},
+ {"-traditional and -ansi are mutually exclusive", 2260},
+ {"Filename missing after -i option", 2261},
+ {"Filename missing after -o option", 2262},
+ {"Macro name missing after -D option", 2263},
+ {"Macro name missing after -U option", 2264},
+ {"-pedantic and -traditional are mutually exclusive", 2265},
+ {"-trigraphs and -traditional are mutually exclusive", 2266},
+ {"Directory name missing after -I option", 2267},
+ {"`/*' within comment", 2268},
+ {"unterminated #%s conditional", 2269},
+ {"not in any file?!", 2270},
+ {"`defined' must be followed by ident or (ident)", 2271},
+ {"cccp error: invalid special hash type", 2272},
+ {"#include expects \"fname\" or <fname>", 2273},
+ {"nonexistent file <%.*s> omitted from dependency output", 2274},
+ {"invalid macro name", 2275},
+ {"invalid macro name `%s'", 2276},
+ {"defining `defined' as a macro", 2277},
+ {"parameter name starts with a digit in #define", 2278},
+ {"badly punctuated parameter list in #define", 2279},
+ {"unterminated parameter list in #define", 2280},
+ {"\"%.*s\" redefined", 2281},
+ {"# operator should be followed by a macro argument name", 2282},
+ {"invalid format #line command", 2283},
+ {"undefining `defined'", 2284},
+ {"undefining `%s'", 2285},
+ {"#elif not within a conditional", 2286},
+ {"#%s not within a conditional", 2287},
+ {"#else or #elif after #else", 2288},
+ {"#else not within a conditional", 2289},
+ {"unbalanced #endif", 2290},
+ {"unterminated string or character constant", 2291},
+ {"arguments given to macro `%s'", 2292},
+ {"no args to macro `%s'", 2293},
+ {"only 1 arg to macro `%s'", 2294},
+ {"only %d args to macro `%s'", 2295},
+ {"too many (%d) args to macro `%s'", 2296},
+ {"\
+Internal error in %s, at tradcpp.c:%d\n\
+Please submit a full bug report.\n\
+See %s for instructions.", 2297},
+ {"`%s' and `%s' identical in first %d characters", 2298},
+ {"arrays of functions are not meaningful", 2299},
+ {"function return type cannot be function", 2300},
+ {"invalid initializer for bit string", 2301},
+ {"Tree check: expected %s, have %s", 2302},
+ {"Tree check: expected class '%c', have '%c' (%s)", 2303},
+ {"register name not specified for `%s'", 2304},
+ {"invalid register name for `%s'", 2305},
+ {"data type of `%s' isn't suitable for a register", 2306},
+ {"register specified for `%s' isn't suitable for data type", 2307},
+ {"global register variable has initial value", 2308},
+ {"volatile register variables don't work as you might wish", 2309},
+ {"register name given for non-register variable `%s'", 2310},
+ {"size of variable `%s' is too large", 2311},
+ {"\
+alignment of `%s' is greater than maximum object file alignment. Using %d.", 2312},
+ {"requested alignment for %s is greater than implemented alignment of %d.", 2313},
+ {"floating point trap outputting a constant", 2314},
+ {"initializer for integer value is too complicated", 2315},
+ {"initializer for floating value is not a floating constant", 2316},
+ {"unknown set constructor type", 2317},
+ {"invalid initial value for member `%s'", 2318},
+ {"weak declaration of `%s' must be public", 2319},
+ {"weak declaration of `%s' must precede definition", 2320},
+ {"only weak aliases are supported in this configuration", 2321},
+ {"alias definitions not supported in this configuration; ignored", 2322},
+ {"Virtual array %s[%lu]: element %lu out of bounds", 2323},
+ {"Unknown stab %s: : 0x%x\n", 2324},
+ {"may not use both -EB and -EL", 2325},
+ {"-mapcs-26 and -mapcs-32 may not be used together", 2326},
+ {"-msoft-float and -mhard_float may not be used together", 2327},
+ {"-mbig-endian and -mlittle-endian may not be used together", 2328},
+ {"Incompatible interworking options", 2329},
+ {"-mbsd and -pedantic incompatible", 2330},
+ {"-mbsd and -mxopen incompatible", 2331},
+ {"-mxopen and -pedantic incompatible", 2332},
+ {"A -ifile option requires a -map option", 2333},
+ {"`-p' not supported; use `-pg' and gprof(1)", 2334},
+ {"-static not valid with -mcoff", 2335},
+ {"-shared not valid with -mcoff", 2336},
+ {"-symbolic not valid with -mcoff", 2337},
+ {"-fpic is not valid with -mcoff", 2338},
+ {"-fPIC is not valid with -mcoff", 2339},
+ {"-fpic not valid with -mcoff", 2340},
+ {"-fPIC not valid with -mcoff", 2341},
+ {"-p option not supported: use -pg instead", 2342},
+ {"-pipe is not supported.", 2343},
+ {"may not use both -mfp64 and -msingle-float", 2344},
+ {"may not use both -mfp64 and -m4650", 2345},
+ {"-mhard-float not supported.", 2346},
+ {"-msingle-float and -msoft-float can not both be specified.", 2347},
+ {"-p profiling is no longer supported. Use -pg instead.", 2348},
+ {"profiling not supported with -mg\n", 2349},
+ {"GNU C does not support -C without using -E", 2350},
+ {"-pg and -fomit-frame-pointer are incompatible", 2351},
+ {"-E required when input is from standard input", 2352},
+ {"Compilation of header file requested", 2353},
};
-int _msg_tbl_length = 2248;
+int _msg_tbl_length = 2353;
diff --git a/gcc/po/gcc.pot b/gcc/po/gcc.pot
index 5dcf68060d5..baa68f8b0e7 100644
--- a/gcc/po/gcc.pot
+++ b/gcc/po/gcc.pot
@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2000-06-27 21:20+0200\n"
+"POT-Creation-Date: 2000-09-12 04:07+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -14,406 +14,554 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: ENCODING\n"
-#: c-common.c:535
+#: builtins.c:239
+msgid "offset outside bounds of constant string"
+msgstr ""
+
+#. ??? We used to try and build up a call to the out of line function,
+#. guessing about what registers needed saving etc. This became much
+#. harder with __builtin_va_start, since we don't have a tree for a
+#. call to __builtin_saveregs to fall back on. There was exactly one
+#. port (i860) that used this code, and I'm unconvinced it could actually
+#. handle the general case. So we no longer try to handle anything
+#. weird and make the backend absorb the evil.
+#: builtins.c:1803
+msgid "__builtin_saveregs not supported by this target"
+msgstr ""
+
+#: builtins.c:1846
+msgid "argument of `__builtin_args_info' must be constant"
+msgstr ""
+
+#: builtins.c:1852
+msgid "argument of `__builtin_args_info' out of range"
+msgstr ""
+
+#: builtins.c:1858
+msgid "missing argument in `__builtin_args_info'"
+msgstr ""
+
+#: builtins.c:1889
+msgid "`va_start' used in function with fixed args"
+msgstr ""
+
+#: builtins.c:1908
+msgid "second parameter of `va_start' not last named argument"
+msgstr ""
+
+#. Evidently an out of date version of <stdarg.h>; can't validate
+#. va_start's second argument, but can still work as intended.
+#: builtins.c:1913
+msgid "`__builtin_next_arg' called without an argument"
+msgstr ""
+
+#: builtins.c:2006
+msgid "too many arguments to function `va_start'"
+msgstr ""
+
+#: builtins.c:2092
+msgid "first argument to `va_arg' not of type `va_list'"
+msgstr ""
+
+#: builtins.c:2120
+#, c-format
+msgid "`%s' is promoted to `%s' when passed through `...'"
+msgstr ""
+
+#: builtins.c:2124
+#, c-format
+msgid "(so you should pass `%s' not `%s' to `va_arg')"
+msgstr ""
+
+#: builtins.c:2233
+msgid "invalid arg to `__builtin_frame_address'"
+msgstr ""
+
+#: builtins.c:2235
+msgid "invalid arg to `__builtin_return_address'"
+msgstr ""
+
+#: builtins.c:2248
+msgid "unsupported arg to `__builtin_frame_address'"
+msgstr ""
+
+#: builtins.c:2250
+msgid "unsupported arg to `__builtin_return_address'"
+msgstr ""
+
+#: builtins.c:2332
+msgid "second arg to `__builtin_expect' must be a constant"
+msgstr ""
+
+#: builtins.c:2581
+msgid "__builtin_longjmp second argument must be 1"
+msgstr ""
+
+#: builtins.c:2595
+msgid "__builtin_trap not supported by this target"
+msgstr ""
+
+#. just do library call, if unknown builtin
+#: builtins.c:2633
+#, c-format
+msgid "built-in function `%s' not currently supported"
+msgstr ""
+
+#: c-common.c:387
+#, c-format
+msgid ""
+"string length `%d' is greater than the minimum length `%d' ISO C%d is "
+"required to support"
+msgstr ""
+
+#: c-common.c:552
#, c-format
msgid "`%s' attribute directive ignored"
msgstr ""
-#: c-common.c:543
+#: c-common.c:560
#, c-format
msgid "`%s' attribute does not apply to types"
msgstr ""
-#: c-common.c:550
+#: c-common.c:567
#, c-format
msgid "wrong number of arguments specified for `%s' attribute"
msgstr ""
-#: c-common.c:566 c-common.c:573 c-common.c:580 c-common.c:593 c-common.c:601
-#: c-common.c:616 c-common.c:629 c-common.c:637 c-common.c:653 c-common.c:665
-#: c-common.c:677 c-common.c:682 c-common.c:1002 c-common.c:1154
+#: c-common.c:583 c-common.c:590 c-common.c:597 c-common.c:610 c-common.c:618
+#: c-common.c:633 c-common.c:646 c-common.c:654 c-common.c:670 c-common.c:682
+#: c-common.c:694 c-common.c:699 c-common.c:1033 c-common.c:1185
#, c-format
msgid "`%s' attribute ignored"
msgstr ""
-#: c-common.c:715
+#: c-common.c:732
#, c-format
msgid "unknown machine mode `%s'"
msgstr ""
-#: c-common.c:718
+#: c-common.c:735
#, c-format
msgid "no data type for mode `%s'"
msgstr ""
-#: c-common.c:738
+#: c-common.c:755
msgid "section attribute cannot be specified for local variables"
msgstr ""
-#: c-common.c:745
+#: c-common.c:762
#, c-format
msgid "section of `%s' conflicts with previous declaration"
msgstr ""
-#: c-common.c:751
+#: c-common.c:768
#, c-format
msgid "section attribute not allowed for `%s'"
msgstr ""
-#: c-common.c:754
+#: c-common.c:771
msgid "section attributes are not supported for this target"
msgstr ""
-#: c-common.c:773
+#: c-common.c:790
msgid "requested alignment is not a constant"
msgstr ""
-#: c-common.c:778
+#: c-common.c:795
msgid "requested alignment is not a power of 2"
msgstr ""
-#: c-common.c:780
+#: c-common.c:797
msgid "requested alignment is too large"
msgstr ""
-#: c-common.c:789
+#: c-common.c:820
#, c-format
msgid "alignment may not be specified for `%s'"
msgstr ""
-#: c-common.c:812 c-common.c:918
+#: c-common.c:843 c-common.c:949
#, c-format
msgid "argument format specified for non-function `%s'"
msgstr ""
-#: c-common.c:818
+#: c-common.c:849
msgid "unrecognized format specifier"
msgstr ""
-#: c-common.c:834
+#: c-common.c:865
#, c-format
msgid "`%s' is an unrecognized format function type"
msgstr ""
-#: c-common.c:856 c-common.c:932
+#: c-common.c:887 c-common.c:963
msgid "format string has invalid operand number"
msgstr ""
-#: c-common.c:864
+#: c-common.c:895
msgid "format string arg follows the args to be formatted"
msgstr ""
-#: c-common.c:883 c-common.c:953
+#: c-common.c:914 c-common.c:984
msgid "format string arg not a string type"
msgstr ""
-#: c-common.c:896
+#: c-common.c:927
msgid "args to be formatted is not '...'"
msgstr ""
-#: c-common.c:962
+#: c-common.c:993
msgid "function does not return string type"
msgstr ""
-#: c-common.c:980
+#: c-common.c:1011
#, c-format
msgid "`%s' defined both normally and as an alias"
msgstr ""
-#: c-common.c:988
+#: c-common.c:1019
msgid "alias arg not a string"
msgstr ""
-#: c-common.c:1009 c-common.c:1026 c-common.c:1043
+#: c-common.c:1040 c-common.c:1057 c-common.c:1074
#, c-format
msgid "`%s' attribute applies only to functions"
msgstr ""
-#: c-common.c:1015 c-common.c:1032 c-common.c:1049
+#: c-common.c:1046 c-common.c:1063 c-common.c:1080
#, c-format
msgid "can't set `%s' attribute after definition"
msgstr ""
-#: c-common.c:1409
+#: c-common.c:1632
msgid "too few arguments for format"
msgstr ""
-#: c-common.c:1518
+#: c-common.c:1730 c-common.c:1751
+msgid "missing $ operand number in format"
+msgstr ""
+
+#: c-common.c:1760
+#, ycp-format
+msgid "ISO C does not support %%n$ operand number formats"
+msgstr ""
+
+#: c-common.c:1766
+msgid "operand number out of range in format"
+msgstr ""
+
+#: c-common.c:1818
+#, c-format
+msgid "format argument %d unused before used argument %d in $-style format"
+msgstr ""
+
+#: c-common.c:1822
+msgid "unused arguments in $-style format"
+msgstr ""
+
+#: c-common.c:1912
msgid "null format string"
msgstr ""
-#: c-common.c:1529 c-common.c:1541
+#: c-common.c:1923 c-common.c:1935
msgid "format not a string literal, argument types not checked"
msgstr ""
-#: c-common.c:1547
+#: c-common.c:1941
msgid "zero-length format string"
msgstr ""
-#: c-common.c:1550
+#: c-common.c:1944
msgid "unterminated format string"
msgstr ""
-#: c-common.c:1569
+#: c-common.c:1967
msgid "embedded `\\0' in format"
msgstr ""
-#: c-common.c:1571
+#: c-common.c:1970
msgid "too many arguments for format"
msgstr ""
-#: c-common.c:1578
+#: c-common.c:1979
#, ycp-format
msgid "spurious trailing `%%' in format"
msgstr ""
-#: c-common.c:1601
+#: c-common.c:2019
+msgid "zero width in scanf format"
+msgstr ""
+
+#: c-common.c:2026
#, c-format
-msgid "ANSI C does not support the strftime `%c' flag"
+msgid "ISO C does not support the strftime `%c' flag"
msgstr ""
-#: c-common.c:1605 c-common.c:1669
+#: c-common.c:2030 c-common.c:2083
#, c-format
msgid "repeated `%c' flag in format"
msgstr ""
-#: c-common.c:1622
-msgid "ANSI C does not support strftime format width"
+#: c-common.c:2047
+msgid "ISO C does not support strftime format width"
msgstr ""
-#: c-common.c:1630
+#: c-common.c:2055
msgid "multiple E/O modifiers in format"
msgstr ""
-#: c-common.c:1660
-msgid "operand number out of range in format"
-msgstr ""
-
-#: c-common.c:1681
+#: c-common.c:2095
msgid "use of both ` ' and `+' flags in format"
msgstr ""
-#: c-common.c:1686
+#: c-common.c:2100
msgid "use of both `0' and `-' flags in format"
msgstr ""
-#: c-common.c:1712 c-common.c:1746
-#, c-format
-msgid "field width is not type int (arg %d)"
+#: c-common.c:2102
+msgid "ISO C does not support the `'' format flag"
msgstr ""
-#: c-common.c:1728
-msgid "`.' not followed by `*' or digit in format"
+#: c-common.c:2104
+msgid "ISO C does not support the `I' format flag"
msgstr ""
-#: c-common.c:1768 c-common.c:1775
+#: c-common.c:2144
#, c-format
-msgid "ANSI C does not support the `%c' length modifier"
+msgid "field width is not type int (arg %d)"
msgstr ""
-#: c-common.c:1784
-msgid "ANSI C does not support the `ll' length modifier"
+#: c-common.c:2193
+#, c-format
+msgid "field precision is not type int (arg %d)"
msgstr ""
-#: c-common.c:1790
-msgid "ANSI C does not support the `hh' length modifier"
+#: c-common.c:2239
+#, c-format
+msgid "ISO C does not support the `%s' %s length modifier"
msgstr ""
-#: c-common.c:1803
+#: c-common.c:2243
#, c-format
-msgid "use of `*' and `%c' together in format"
+msgid "ISO C89 does not support the `%s' %s length modifier"
msgstr ""
-#: c-common.c:1809
-msgid "conversion lacks type at end of format"
+#: c-common.c:2258
+#, c-format
+msgid "use of `*' and `%s' together in format"
msgstr ""
-#: c-common.c:1815 c-common.c:1820
-#, c-format
-msgid "ANSI C does not support the `%c' format"
+#: c-common.c:2264
+msgid "conversion lacks type at end of format"
msgstr ""
-#: c-common.c:1842
+#: c-common.c:2275
#, c-format
msgid "unknown conversion type character `%c' in format"
msgstr ""
-#: c-common.c:1845
+#: c-common.c:2278
#, c-format
msgid "unknown conversion type character 0x%x in format"
msgstr ""
-#: c-common.c:1852
-msgid "ANSI C does not support `%%%c'"
+#: c-common.c:2285
+msgid "ISO C does not support the `%%%c' %s format"
+msgstr ""
+
+#: c-common.c:2289
+msgid "ISO C89 does not support the `%%%c' %s format"
+msgstr ""
+
+#: c-common.c:2294
+msgid "ISO C does not support `%%O%c'"
+msgstr ""
+
+#: c-common.c:2296
+msgid "ISO C89 does not support `%%O%c'"
msgstr ""
-#: c-common.c:1855
-msgid "ANSI C does not support `%%O%c'"
+#: c-common.c:2299
+msgid "ISO C89 does not support `%%E%c'"
msgstr ""
-#: c-common.c:1858
+#: c-common.c:2302
#, c-format
msgid "width used with `%c' format"
msgstr ""
-#: c-common.c:1860
-msgid "`%%%c' yields only last 2 digits of year"
+#: c-common.c:2305
+msgid "`%%%c' yields only last 2 digits of year in some locales"
msgstr ""
-#: c-common.c:1862
-msgid "`%%%c' yields only last 2 digits of year in some locales"
+#: c-common.c:2308
+msgid "`%%%c' yields only last 2 digits of year"
msgstr ""
-#: c-common.c:1865
+#: c-common.c:2310
#, c-format
msgid "precision used with `%c' format"
msgstr ""
-#: c-common.c:1868
+#: c-common.c:2313
#, c-format
msgid "`a' flag used with `%c' format"
msgstr ""
-#: c-common.c:1874
-msgid "ANSI C does not support the `a' flag"
+#: c-common.c:2319
+msgid "ISO C does not support the `a' flag"
msgstr ""
#. The end of the format string was reached.
-#: c-common.c:1888
+#: c-common.c:2333
#, ycp-format
msgid "no closing `]' for `%%[' format"
msgstr ""
-#: c-common.c:1893
+#: c-common.c:2338
#, c-format
msgid "suppression of `%c' conversion in format"
msgstr ""
-#: c-common.c:1899
+#: c-common.c:2344
#, c-format
msgid "flag `%c' used with type `%c'"
msgstr ""
-#: c-common.c:1908
+#: c-common.c:2353
#, c-format
msgid "`0' flag ignored with precision specifier and `%c' format"
msgstr ""
-#: c-common.c:1921
+#: c-common.c:2360
#, c-format
-msgid "use of `%c' length character with `%c' type character"
+msgid "use of `%s' length modifier with `%c' type character"
+msgstr ""
+
+#: c-common.c:2370
+msgid "ISO C does not support the `%%%s%c' %s format"
+msgstr ""
+
+#: c-common.c:2374
+msgid "ISO C89 does not support the `%%%s%c' %s format"
msgstr ""
-#: c-common.c:1960
+#: c-common.c:2428
#, c-format
-msgid "format argument is not a pointer (arg %d)"
+msgid "writing into constant object (arg %d)"
msgstr ""
-#: c-common.c:1962
+#: c-common.c:2439
#, c-format
-msgid "format argument is not a pointer to a pointer (arg %d)"
+msgid "extra type qualifiers in format argument (arg %d)"
msgstr ""
-#: c-common.c:1979
+#: c-common.c:2447
#, c-format
-msgid "writing into constant object (arg %d)"
+msgid "format argument is not a pointer (arg %d)"
msgstr ""
-#: c-common.c:2039
+#: c-common.c:2449
+#, c-format
+msgid "format argument is not a pointer to a pointer (arg %d)"
+msgstr ""
+
+#: c-common.c:2539
#, c-format
msgid "%s format, %s arg (arg %d)"
msgstr ""
-#: c-common.c:2057
+#: c-common.c:2558
msgid "overflow in constant expression"
msgstr ""
-#: c-common.c:2078
+#: c-common.c:2579
msgid "integer overflow in expression"
msgstr ""
-#: c-common.c:2087
+#: c-common.c:2588
msgid "floating point overflow in expression"
msgstr ""
#. This detects cases like converting -129 or 256 to unsigned char.
-#: c-common.c:2108
+#: c-common.c:2609
msgid "large integer implicitly truncated to unsigned type"
msgstr ""
-#: c-common.c:2110
+#: c-common.c:2611
msgid "negative integer implicitly converted to unsigned type"
msgstr ""
-#: c-common.c:2143
+#: c-common.c:2644
msgid "overflow in implicit constant conversion"
msgstr ""
-#: c-common.c:2164
+#: c-common.c:2665
msgid "expression statement has incomplete type"
msgstr ""
-#: c-common.c:2184
+#: c-common.c:2697
msgid "case label does not reduce to an integer constant"
msgstr ""
-#: c-common.c:2454
+#: c-common.c:2967
msgid "invalid truth-value expression"
msgstr ""
-#: c-common.c:2505
+#: c-common.c:3018
#, c-format
msgid "invalid operands to binary %s"
msgstr ""
-#: c-common.c:2740 c-common.c:2749
+#: c-common.c:3253 c-common.c:3262
msgid "comparison is always false due to limited range of data type"
msgstr ""
-#: c-common.c:2742 c-common.c:2751
+#: c-common.c:3255 c-common.c:3264
msgid "comparison is always true due to limited range of data type"
msgstr ""
-#: c-common.c:2817
+#: c-common.c:3330
msgid "comparison of unsigned expression >= 0 is always true"
msgstr ""
-#: c-common.c:2826
+#: c-common.c:3339
msgid "comparison of unsigned expression < 0 is always false"
msgstr ""
-#: c-common.c:2877
+#: c-common.c:3390
msgid "struct type value used where scalar is required"
msgstr ""
-#: c-common.c:2881
+#: c-common.c:3394
msgid "union type value used where scalar is required"
msgstr ""
-#: c-common.c:2885
+#: c-common.c:3398
msgid "array type value used where scalar is required"
msgstr ""
-#: c-common.c:3000
+#: c-common.c:3513
msgid "suggest parentheses around assignment used as truth value"
msgstr ""
-#: c-common.c:3223 c-common.c:3255
+#: c-common.c:3638 c-common.c:3670
msgid "invalid use of `restrict'"
msgstr ""
-#: c-common.c:3952 c-typeck.c:1747
+#: c-common.c:4372 c-typeck.c:1741
#, c-format
msgid "too few arguments to function `%s'"
msgstr ""
-#: c-common.c:3958 c-typeck.c:1606
+#: c-common.c:4378 c-typeck.c:1600
#, c-format
msgid "too many arguments to function `%s'"
msgstr ""
-#: c-convert.c:78 c-typeck.c:941 c-typeck.c:4048 cp/typeck.c:1725
-#: cp/typeck.c:6481
+#: c-convert.c:78 c-typeck.c:940 c-typeck.c:4037 cp/typeck.c:1729
+#: cp/typeck.c:6431
msgid "void value not ignored as it ought to be"
msgstr ""
@@ -421,2224 +569,2175 @@ msgstr ""
msgid "conversion to non-scalar type requested"
msgstr ""
-#: c-decl.c:567
+#: c-decl.c:606
#, c-format
msgid "unknown C standard `%s'"
msgstr ""
-#: c-decl.c:828
+#: c-decl.c:875
#, c-format
msgid "array `%s' assumed to have one element"
msgstr ""
-#: c-decl.c:1005
+#: c-decl.c:1051
#, c-format
msgid "`struct %s' incomplete in scope ending here"
msgstr ""
-#: c-decl.c:1008
+#: c-decl.c:1054
#, c-format
msgid "`union %s' incomplete in scope ending here"
msgstr ""
-#: c-decl.c:1011
+#: c-decl.c:1057
#, c-format
msgid "`enum %s' incomplete in scope ending here"
msgstr ""
-#: c-decl.c:1125 c-decl.c:1286
+#: c-decl.c:1171 c-decl.c:1331
#, c-format
msgid "label `%s' used but not defined"
msgstr ""
-#: c-decl.c:1131 c-decl.c:1293
+#: c-decl.c:1177 c-decl.c:1338
#, c-format
msgid "label `%s' defined but not used"
msgstr ""
-#: c-decl.c:1415 c-decl.c:1468
+#: c-decl.c:1460 c-decl.c:1513
#, c-format
msgid "shadowing built-in function `%s'"
msgstr ""
-#: c-decl.c:1417
+#: c-decl.c:1462
#, c-format
msgid "shadowing library function `%s'"
msgstr ""
-#: c-decl.c:1423
+#: c-decl.c:1468
#, c-format
msgid "library function `%s' declared as non-function"
msgstr ""
-#: c-decl.c:1427 c-decl.c:1430
+#: c-decl.c:1472 c-decl.c:1475
#, c-format
msgid "built-in function `%s' declared as non-function"
msgstr ""
-#: c-decl.c:1434 objc/objc-act.c:2507 objc/objc-act.c:6178
+#: c-decl.c:1479 objc/objc-act.c:2490 objc/objc-act.c:6161
#, c-format
msgid "`%s' redeclared as different kind of symbol"
msgstr ""
-#: c-decl.c:1435 c-decl.c:1613 c-decl.c:1759 objc/objc-act.c:2509
-#: objc/objc-act.c:6180 objc/objc-act.c:6235
+#: c-decl.c:1480 c-decl.c:1658 c-decl.c:1805 objc/objc-act.c:2492
+#: objc/objc-act.c:6163 objc/objc-act.c:6218
#, c-format
msgid "previous declaration of `%s'"
msgstr ""
#. If types don't match for a built-in, throw away the built-in.
-#: c-decl.c:1517
+#: c-decl.c:1562
#, c-format
msgid "conflicting types for built-in function `%s'"
msgstr ""
-#: c-decl.c:1560 c-decl.c:1579
+#: c-decl.c:1605 c-decl.c:1624
#, c-format
msgid "conflicting types for `%s'"
msgstr ""
-#: c-decl.c:1602
+#: c-decl.c:1647
msgid ""
"A parameter list with an ellipsis can't match an empty parameter name list "
"declaration."
msgstr ""
-#: c-decl.c:1608
+#: c-decl.c:1653
msgid ""
"An argument type that has a default promotion can't match an empty parameter "
"name list declaration."
msgstr ""
-#: c-decl.c:1623 c-decl.c:1645
+#: c-decl.c:1668 c-decl.c:1690
#, c-format
msgid "redefinition of `%s'"
msgstr ""
-#: c-decl.c:1626
+#: c-decl.c:1671
#, c-format
msgid "redeclaration of `%s'"
msgstr ""
-#: c-decl.c:1629
+#: c-decl.c:1674
#, c-format
msgid "conflicting declarations of `%s'"
msgstr ""
-#: c-decl.c:1638 c-decl.c:1650
+#: c-decl.c:1683 c-decl.c:1695
#, c-format
msgid "`%s' previously defined here"
msgstr ""
-#: c-decl.c:1639 c-decl.c:1651
+#: c-decl.c:1684 c-decl.c:1696
#, c-format
msgid "`%s' previously declared here"
msgstr ""
-#: c-decl.c:1672
+#: c-decl.c:1717
#, c-format
msgid "prototype for `%s' follows"
msgstr ""
-#: c-decl.c:1673 c-decl.c:1680 c-decl.c:1696
+#: c-decl.c:1718 c-decl.c:1726 c-decl.c:1742
msgid "non-prototype definition here"
msgstr ""
-#: c-decl.c:1679
+#: c-decl.c:1725
#, c-format
msgid "prototype for `%s' follows and number of arguments doesn't match"
msgstr ""
-#: c-decl.c:1694
+#: c-decl.c:1740
#, c-format
msgid "prototype for `%s' follows and argument %d doesn't match"
msgstr ""
-#: c-decl.c:1711
+#: c-decl.c:1757
#, c-format
msgid "`%s' declared inline after being called"
msgstr ""
-#: c-decl.c:1716
+#: c-decl.c:1762
#, c-format
msgid "`%s' declared inline after its definition"
msgstr ""
-#: c-decl.c:1723
+#: c-decl.c:1769
#, c-format
msgid "static declaration for `%s' follows non-static"
msgstr ""
-#: c-decl.c:1731
+#: c-decl.c:1777
#, c-format
msgid "non-static declaration for `%s' follows static"
msgstr ""
-#: c-decl.c:1738
+#: c-decl.c:1784
#, c-format
msgid "const declaration for `%s' follows non-const"
msgstr ""
-#: c-decl.c:1745
+#: c-decl.c:1791
#, c-format
msgid "type qualifiers for `%s' conflict with previous decl"
msgstr ""
-#: c-decl.c:1758
+#: c-decl.c:1804
#, c-format
msgid "redundant redeclaration of `%s' in same scope"
msgstr ""
-#: c-decl.c:2027
+#: c-decl.c:2074
#, c-format
msgid "nested extern declaration of `%s'"
msgstr ""
-#: c-decl.c:2052
+#: c-decl.c:2099
#, c-format
msgid "`%s' used prior to declaration"
msgstr ""
-#: c-decl.c:2073 c-decl.c:2288
+#: c-decl.c:2120 c-decl.c:2335
#, c-format
msgid "`%s' was declared implicitly `extern' and later `static'"
msgstr ""
-#: c-decl.c:2183
+#: c-decl.c:2230
msgid "type mismatch with previous external decl"
msgstr ""
-#: c-decl.c:2184
+#: c-decl.c:2231
#, c-format
msgid "previous external decl of `%s'"
msgstr ""
-#: c-decl.c:2197
+#: c-decl.c:2244
msgid "type mismatch with previous implicit declaration"
msgstr ""
-#: c-decl.c:2199
+#: c-decl.c:2246
#, c-format
msgid "previous implicit declaration of `%s'"
msgstr ""
-#: c-decl.c:2216
+#: c-decl.c:2263
#, c-format
msgid "type of external `%s' is not global"
msgstr ""
-#: c-decl.c:2267
+#: c-decl.c:2314
#, c-format
msgid "`%s' was previously implicitly declared to return `int'"
msgstr ""
-#: c-decl.c:2292
+#: c-decl.c:2339
#, c-format
msgid "`%s' was declared `extern' and later `static'"
msgstr ""
-#: c-decl.c:2315
+#: c-decl.c:2362
#, c-format
msgid "extern declaration of `%s' doesn't match global one"
msgstr ""
-#: c-decl.c:2353
+#: c-decl.c:2402
#, c-format
msgid "`%s' locally external but globally static"
msgstr ""
-#: c-decl.c:2389 c-decl.c:2414 cp/decl.c:4194
+#: c-decl.c:2438 c-decl.c:2463 cp/decl.c:4231
#, c-format
msgid "declaration of `%s' shadows a parameter"
msgstr ""
-#: c-decl.c:2392
+#: c-decl.c:2441
#, c-format
msgid "declaration of `%s' shadows a symbol from the parameter list"
msgstr ""
-#: c-decl.c:2416 cp/decl.c:4202
+#: c-decl.c:2465 cp/decl.c:4239
#, c-format
msgid "declaration of `%s' shadows previous local"
msgstr ""
#. XXX shadow warnings in outer-more namespaces
-#: c-decl.c:2419 cp/decl.c:4206
+#: c-decl.c:2468 cp/decl.c:4243
#, c-format
msgid "declaration of `%s' shadows global declaration"
msgstr ""
-#. Implicit declaration of built-in function. Don't
-#. change the built-in declaration, but don't let this
-#. go by silently, either.
-#: c-decl.c:2507 c-decl.c:2510 c-typeck.c:1420
+#: c-decl.c:2558
#, c-format
-msgid "implicit declaration of function `%s'"
+msgid "function `%s' was previously declared within a block"
msgstr ""
-#: c-decl.c:2514
+#: c-decl.c:2575 c-decl.c:2577
#, c-format
-msgid "function `%s' was previously declared within a block"
+msgid "implicit declaration of function `%s'"
msgstr ""
-#: c-decl.c:2609
+#: c-decl.c:2664
#, c-format
msgid "label %s referenced outside of any function"
msgstr ""
-#: c-decl.c:2669
+#: c-decl.c:2724
#, c-format
msgid "duplicate label declaration `%s'"
msgstr ""
-#: c-decl.c:2672
+#: c-decl.c:2727
msgid "this is a previous declaration"
msgstr ""
-#: c-decl.c:2706
-#, c-format
-msgid "duplicate label `%s'"
-msgstr ""
-
-#: c-decl.c:3287
+#: c-decl.c:3357
msgid "unnamed struct/union that defines no instances"
msgstr ""
-#: c-decl.c:3306
+#: c-decl.c:3376
msgid "useless keyword or type name in empty declaration"
msgstr ""
-#: c-decl.c:3313
+#: c-decl.c:3383
msgid "two types specified in one empty declaration"
msgstr ""
-#: c-decl.c:3318 c-parse.y:291 c-parse.y:694 c-parse.y:696 c-parse.y:753
-#: objc-parse.y:320 objc-parse.y:756 objc-parse.y:758 objc-parse.y:815
-#: objc-parse.y:2621 parse.y:703 parse.y:1719
+#: c-decl.c:3388 c-parse.y:300 c-parse.y:720 c-parse.y:722 c-parse.y:779
+#: objc-parse.y:329 objc-parse.y:772 objc-parse.y:774 objc-parse.y:831
+#: objc-parse.y:2510 parse.y:701 parse.y:1760
msgid "empty declaration"
msgstr ""
-#: c-decl.c:3375
+#: c-decl.c:3445
#, c-format
msgid "`%s' is usually a function"
msgstr ""
-#: c-decl.c:3389
+#: c-decl.c:3459
#, c-format
msgid "typedef `%s' is initialized"
msgstr ""
-#: c-decl.c:3396
+#: c-decl.c:3466
#, c-format
msgid "function `%s' is initialized like a variable"
msgstr ""
#. DECL_INITIAL in a PARM_DECL is really DECL_ARG_TYPE.
-#: c-decl.c:3403
+#: c-decl.c:3473
#, c-format
msgid "parameter `%s' is initialized"
msgstr ""
-#: c-decl.c:3418 c-typeck.c:4765
+#: c-decl.c:3488 c-typeck.c:4758
msgid "variable-sized object may not be initialized"
msgstr ""
-#: c-decl.c:3424
+#: c-decl.c:3494
#, c-format
msgid "variable `%s' has initializer but incomplete type"
msgstr ""
-#: c-decl.c:3430
+#: c-decl.c:3500
#, c-format
msgid "elements of array `%s' have incomplete type"
msgstr ""
-#: c-decl.c:3442
+#: c-decl.c:3513
#, c-format
msgid "declaration of `%s' has `extern' and is initialized"
msgstr ""
-#: c-decl.c:3526
-msgid "iterator has no initial value"
-msgstr ""
-
-#: c-decl.c:3562
+#: c-decl.c:3625
#, c-format
msgid "initializer fails to determine size of `%s'"
msgstr ""
-#: c-decl.c:3567
+#: c-decl.c:3630
#, c-format
msgid "array size missing in `%s'"
msgstr ""
-#: c-decl.c:3583
+#: c-decl.c:3646
#, c-format
msgid "zero or negative size array `%s'"
msgstr ""
-#: c-decl.c:3611
+#: c-decl.c:3671
#, c-format
msgid "storage size of `%s' isn't known"
msgstr ""
-#: c-decl.c:3621
+#: c-decl.c:3681
#, c-format
msgid "storage size of `%s' isn't constant"
msgstr ""
-#: c-decl.c:3720
+#: c-decl.c:3781
#, c-format
msgid "ANSI C forbids parameter `%s' shadowing typedef"
msgstr ""
-#: c-decl.c:3955 cp/decl.c:10101
+#: c-decl.c:4015 cp/decl.c:10230
msgid "`long long long' is too long for GCC"
msgstr ""
-#: c-decl.c:3960
-msgid "ANSI C does not support `long long'"
+#: c-decl.c:4020
+msgid "ISO C89 does not support `long long'"
msgstr ""
-#: c-decl.c:3965 cp/decl.c:10106
+#: c-decl.c:4025 cp/decl.c:10235
#, c-format
msgid "duplicate `%s'"
msgstr ""
-#: c-decl.c:3971 cp/decl.c:10126
+#: c-decl.c:4031 cp/decl.c:10255
#, c-format
msgid "two or more data types in declaration of `%s'"
msgstr ""
-#: c-decl.c:3986 cp/decl.c:10131
+#: c-decl.c:4046 cp/decl.c:10260
#, c-format
msgid "`%s' fails to be a typedef or built in type"
msgstr ""
-#: c-decl.c:4022
-#, c-format
-msgid "type defaults to `int' in declaration of `%s'"
-msgstr ""
-
-#: c-decl.c:4050
+#: c-decl.c:4112
#, c-format
msgid "both long and short specified for `%s'"
msgstr ""
-#: c-decl.c:4054 cp/decl.c:10231
+#: c-decl.c:4116 cp/decl.c:10360
#, c-format
msgid "long or short specified with char for `%s'"
msgstr ""
-#: c-decl.c:4061 cp/decl.c:10235
+#: c-decl.c:4123 cp/decl.c:10364
#, c-format
msgid "long or short specified with floating type for `%s'"
msgstr ""
-#: c-decl.c:4064
+#: c-decl.c:4126
msgid "the only valid combination is `long double'"
msgstr ""
-#: c-decl.c:4070
+#: c-decl.c:4132
#, c-format
msgid "both signed and unsigned specified for `%s'"
msgstr ""
-#: c-decl.c:4072 cp/decl.c:10224
+#: c-decl.c:4134 cp/decl.c:10353
#, c-format
msgid "long, short, signed or unsigned invalid for `%s'"
msgstr ""
-#: c-decl.c:4078 cp/decl.c:10244
+#: c-decl.c:4140 cp/decl.c:10373
#, c-format
msgid "long, short, signed or unsigned used invalidly for `%s'"
msgstr ""
-#: c-decl.c:4097 cp/decl.c:10265
+#: c-decl.c:4159 cp/decl.c:10394
#, c-format
msgid "complex invalid for `%s'"
msgstr ""
-#: c-decl.c:4173 c-decl.c:4531 cp/decl.c:10867
+#: c-decl.c:4235 c-decl.c:4591 cp/decl.c:10993
msgid "duplicate `const'"
msgstr ""
-#: c-decl.c:4175 c-decl.c:4535 cp/decl.c:10871
+#: c-decl.c:4237 c-decl.c:4595 cp/decl.c:10997
msgid "duplicate `restrict'"
msgstr ""
-#: c-decl.c:4177 c-decl.c:4533 cp/decl.c:10869
+#: c-decl.c:4239 c-decl.c:4593 cp/decl.c:10995
msgid "duplicate `volatile'"
msgstr ""
-#: c-decl.c:4200 cp/decl.c:10414
+#: c-decl.c:4261 cp/decl.c:10543
#, c-format
msgid "multiple storage classes in declaration of `%s'"
msgstr ""
-#: c-decl.c:4209
+#: c-decl.c:4270
msgid "function definition declared `auto'"
msgstr ""
-#: c-decl.c:4211
+#: c-decl.c:4272
msgid "function definition declared `register'"
msgstr ""
-#: c-decl.c:4213
+#: c-decl.c:4274
msgid "function definition declared `typedef'"
msgstr ""
-#: c-decl.c:4226
+#: c-decl.c:4287
#, c-format
msgid "storage class specified for structure field `%s'"
msgstr ""
-#: c-decl.c:4229 cp/decl.c:10461
+#: c-decl.c:4291 cp/decl.c:10590
#, c-format
msgid "storage class specified for parameter `%s'"
msgstr ""
-#: c-decl.c:4232 cp/decl.c:10463
+#: c-decl.c:4294 cp/decl.c:10592
msgid "storage class specified for typename"
msgstr ""
-#: c-decl.c:4244 cp/decl.c:10477
+#: c-decl.c:4306 cp/decl.c:10606
#, c-format
msgid "`%s' initialized and declared `extern'"
msgstr ""
-#: c-decl.c:4246 cp/decl.c:10480
+#: c-decl.c:4308 cp/decl.c:10609
#, c-format
msgid "`%s' has both `extern' and initializer"
msgstr ""
-#: c-decl.c:4250 cp/decl.c:10484
+#: c-decl.c:4312 cp/decl.c:10613
#, c-format
msgid "nested function `%s' declared `extern'"
msgstr ""
-#: c-decl.c:4253 cp/decl.c:10488
+#: c-decl.c:4315 cp/decl.c:10617
#, c-format
msgid "top-level declaration of `%s' specifies `auto'"
msgstr ""
-#: c-decl.c:4257
-#, c-format
-msgid "iterator `%s' has derived type"
-msgstr ""
-
-#: c-decl.c:4263
-#, c-format
-msgid "iterator `%s' has noninteger type"
-msgstr ""
-
-#: c-decl.c:4307
+#: c-decl.c:4357
#, c-format
msgid "declaration of `%s' as array of voids"
msgstr ""
-#: c-decl.c:4313
+#: c-decl.c:4363
#, c-format
msgid "declaration of `%s' as array of functions"
msgstr ""
-#: c-decl.c:4335
+#: c-decl.c:4385
#, c-format
msgid "size of array `%s' has non-integer type"
msgstr ""
-#: c-decl.c:4340
+#: c-decl.c:4390
#, c-format
-msgid "ANSI C forbids zero-size array `%s'"
+msgid "ISO C forbids zero-size array `%s'"
msgstr ""
-#: c-decl.c:4347
+#: c-decl.c:4397
#, c-format
msgid "size of array `%s' is negative"
msgstr ""
-#: c-decl.c:4360
+#: c-decl.c:4410
#, c-format
-msgid "ANSI C forbids array `%s' whose size can't be evaluated"
+msgid "ISO C89 forbids array `%s' whose size can't be evaluated"
msgstr ""
-#: c-decl.c:4362
+#: c-decl.c:4413
#, c-format
-msgid "ANSI C forbids variable-size array `%s'"
+msgid "ISO C89 forbids variable-size array `%s'"
msgstr ""
-#: c-decl.c:4379 c-decl.c:4556
+#: c-decl.c:4431 c-decl.c:4616
#, c-format
msgid "size of array `%s' is too large"
msgstr ""
-#: c-decl.c:4398
+#: c-decl.c:4451
msgid "array type has incomplete element type"
msgstr ""
-#: c-decl.c:4405 c-decl.c:4601
+#: c-decl.c:4459
msgid "ANSI C forbids const or volatile function types"
msgstr ""
-#: c-decl.c:4440 cp/decl.c:10624
+#: c-decl.c:4495 cp/decl.c:10753
#, c-format
msgid "`%s' declared as function returning a function"
msgstr ""
-#: c-decl.c:4445 cp/decl.c:10629
+#: c-decl.c:4500 cp/decl.c:10758
#, c-format
msgid "`%s' declared as function returning an array"
msgstr ""
-#: c-decl.c:4494 c-decl.c:4567 c-decl.c:4651 c-decl.c:4737
-msgid "ANSI C forbids qualified function types"
+#: c-decl.c:4549 c-decl.c:4627 c-decl.c:4711 c-decl.c:4798
+msgid "ISO C forbids qualified function types"
msgstr ""
-#: c-decl.c:4527 cp/decl.c:10863
+#: c-decl.c:4589 cp/decl.c:10989
msgid "invalid type modifier within pointer declarator"
msgstr ""
-#: c-decl.c:4620 cp/decl.c:11343
+#: c-decl.c:4661
+msgid "ISO C forbids const or volatile function types"
+msgstr ""
+
+#: c-decl.c:4680 cp/decl.c:11476
#, c-format
msgid "variable or field `%s' declared void"
msgstr ""
-#: c-decl.c:4685
+#: c-decl.c:4745
#, c-format
msgid "field `%s' declared as a function"
msgstr ""
-#: c-decl.c:4691
+#: c-decl.c:4751
#, c-format
msgid "field `%s' has incomplete type"
msgstr ""
-#: c-decl.c:4722 c-decl.c:4724 c-decl.c:4731
+#: c-decl.c:4783 c-decl.c:4785 c-decl.c:4792
#, c-format
msgid "invalid storage class for function `%s'"
msgstr ""
-#: c-decl.c:4743
-msgid "ANSI C forbids qualified void function return type"
+#: c-decl.c:4804
+msgid "ISO C forbids qualified void function return type"
msgstr ""
-#: c-decl.c:4749
+#: c-decl.c:4810
msgid "`noreturn' function returns non-void value"
msgstr ""
-#: c-decl.c:4761
+#: c-decl.c:4822
msgid "cannot inline function `main'"
msgstr ""
-#: c-decl.c:4792
+#: c-decl.c:4853
#, c-format
msgid "variable `%s' declared `inline'"
msgstr ""
-#: c-decl.c:4866 c-decl.c:5799
+#: c-decl.c:4924 c-decl.c:5878
msgid "function declaration isn't a prototype"
msgstr ""
-#: c-decl.c:4872 cp/decl.c:12033
+#: c-decl.c:4930 cp/decl.c:12167
msgid "parameter names (without types) in function declaration"
msgstr ""
-#: c-decl.c:4902 c-decl.c:6184 c-decl.c:6472 cp/decl.c:11853
+#: c-decl.c:4960 c-decl.c:6263 c-decl.c:6552 cp/decl.c:11986
#, c-format
msgid "parameter `%s' has incomplete type"
msgstr ""
-#: c-decl.c:4905 cp/decl.c:11856
+#: c-decl.c:4963 cp/decl.c:11989
msgid "parameter has incomplete type"
msgstr ""
-#: c-decl.c:4924
+#: c-decl.c:4984
#, c-format
msgid "parameter `%s' points to incomplete type"
msgstr ""
-#: c-decl.c:4927
+#: c-decl.c:4987
msgid "parameter points to incomplete type"
msgstr ""
-#: c-decl.c:4985
+#: c-decl.c:5052
#, c-format
msgid "parameter `%s' has just a forward declaration"
msgstr ""
-#: c-decl.c:5027
+#: c-decl.c:5094
msgid "`void' in parameter list must be the entire list"
msgstr ""
-#: c-decl.c:5056
+#: c-decl.c:5123
#, c-format
msgid "`%s %s' declared inside parameter list"
msgstr ""
-#: c-decl.c:5065
+#: c-decl.c:5132
msgid "anonymous struct declared inside parameter list"
msgstr ""
-#: c-decl.c:5067
+#: c-decl.c:5134
msgid "anonymous union declared inside parameter list"
msgstr ""
-#: c-decl.c:5069
+#: c-decl.c:5136
msgid "anonymous enum declared inside parameter list"
msgstr ""
-#: c-decl.c:5073
+#: c-decl.c:5140
msgid ""
"its scope is only this definition or declaration, which is probably not what "
"you want."
msgstr ""
-#: c-decl.c:5108
-msgid "ANSI C forbids forward references to `enum' types"
+#: c-decl.c:5175
+msgid "ISO C forbids forward references to `enum' types"
msgstr ""
-#: c-decl.c:5146
+#: c-decl.c:5213
#, c-format
msgid "redefinition of `%s %s'"
msgstr ""
-#: c-decl.c:5213
+#: c-decl.c:5280 c-decl.c:5283
#, c-format
msgid "%s defined inside parms"
msgstr ""
-#: c-decl.c:5219
-msgid "union defined inside parms"
+#: c-decl.c:5281 c-decl.c:5284 c-decl.c:5295
+msgid "union"
msgstr ""
-#: c-decl.c:5221
-msgid "structure defined inside parms"
+#: c-decl.c:5281 c-decl.c:5284
+msgid "structure"
msgstr ""
-#: c-decl.c:5232
+#: c-decl.c:5294
#, c-format
msgid "%s has no %s"
msgstr ""
-#: c-decl.c:5233
-msgid "union"
-msgstr ""
-
-#: c-decl.c:5233
+#: c-decl.c:5295
msgid "struct"
msgstr ""
-#: c-decl.c:5234
+#: c-decl.c:5296
msgid "named members"
msgstr ""
-#: c-decl.c:5234
+#: c-decl.c:5296
msgid "members"
msgstr ""
-#: c-decl.c:5272
+#: c-decl.c:5334
#, c-format
msgid "nested redefinition of `%s'"
msgstr ""
-#: c-decl.c:5285
+#: c-decl.c:5347
#, c-format
msgid "bit-field `%s' width not an integer constant"
msgstr ""
-#: c-decl.c:5295
+#: c-decl.c:5357
#, c-format
msgid "bit-field `%s' has invalid type"
msgstr ""
-#: c-decl.c:5306
+#: c-decl.c:5368
#, c-format
-msgid "bit-field `%s' type invalid in ANSI C"
+msgid "bit-field `%s' type invalid in ISO C"
msgstr ""
-#: c-decl.c:5313
+#: c-decl.c:5375
#, c-format
msgid "negative width in bit-field `%s'"
msgstr ""
-#: c-decl.c:5316
+#: c-decl.c:5378
#, c-format
msgid "width of `%s' exceeds its type"
msgstr ""
-#: c-decl.c:5318
+#: c-decl.c:5380
#, c-format
msgid "zero width for bit-field `%s'"
msgstr ""
-#: c-decl.c:5332
+#: c-decl.c:5394
#, c-format
msgid "`%s' is narrower than values of its type"
msgstr ""
-#: c-decl.c:5389
+#: c-decl.c:5451
#, c-format
msgid "duplicate member `%s'"
msgstr ""
-#: c-decl.c:5432
+#: c-decl.c:5495
msgid "union cannot be made transparent"
msgstr ""
#. This enum is a named one that has been declared already.
-#: c-decl.c:5513
+#: c-decl.c:5576
#, c-format
msgid "redeclaration of `enum %s'"
msgstr ""
-#: c-decl.c:5547
+#: c-decl.c:5610
msgid "enum defined inside parms"
msgstr ""
-#: c-decl.c:5579
+#: c-decl.c:5642
msgid "enumeration values exceed range of largest integer"
msgstr ""
-#: c-decl.c:5667
+#: c-decl.c:5746
#, c-format
msgid "enumerator value for `%s' not integer constant"
msgstr ""
-#: c-decl.c:5680
+#: c-decl.c:5759
msgid "overflow in enumeration values"
msgstr ""
-#: c-decl.c:5685
-msgid "ANSI C restricts enumerator values to range of `int'"
+#: c-decl.c:5764
+msgid "ISO C restricts enumerator values to range of `int'"
msgstr ""
-#: c-decl.c:5756
+#: c-decl.c:5835
msgid "return type is an incomplete type"
msgstr ""
-#: c-decl.c:5764
-msgid "return type defaults to `int'"
-msgstr ""
-
-#: c-decl.c:5805
+#: c-decl.c:5884
#, c-format
msgid "no previous prototype for `%s'"
msgstr ""
-#: c-decl.c:5812
+#: c-decl.c:5891
#, c-format
msgid "`%s' was used with no prototype before its definition"
msgstr ""
-#: c-decl.c:5818
+#: c-decl.c:5897
#, c-format
msgid "no previous declaration for `%s'"
msgstr ""
-#: c-decl.c:5825
+#: c-decl.c:5904
#, c-format
msgid "`%s' was used with no declaration before its definition"
msgstr ""
-#: c-decl.c:5854 c-decl.c:6559
+#: c-decl.c:5932 c-decl.c:6639
#, c-format
msgid "return type of `%s' is not `int'"
msgstr ""
-#: c-decl.c:5870
+#: c-decl.c:5948
#, c-format
msgid "first argument of `%s' should be `int'"
msgstr ""
-#: c-decl.c:5879
+#: c-decl.c:5957
#, c-format
msgid "second argument of `%s' should be `char **'"
msgstr ""
-#: c-decl.c:5888
+#: c-decl.c:5966
#, c-format
msgid "third argument of `%s' should probably be `char **'"
msgstr ""
-#: c-decl.c:5897
+#: c-decl.c:5975
#, c-format
msgid "`%s' takes only zero or two arguments"
msgstr ""
-#: c-decl.c:5900
+#: c-decl.c:5978
#, c-format
msgid "third argument of `%s' is deprecated"
msgstr ""
-#: c-decl.c:5903
+#: c-decl.c:5981
#, c-format
msgid "`%s' is normally a non-static function"
msgstr ""
-#: c-decl.c:6003
+#: c-decl.c:6081
msgid "parm types given both in parmlist and separately"
msgstr ""
-#: c-decl.c:6024
+#: c-decl.c:6102
msgid "parameter name omitted"
msgstr ""
-#: c-decl.c:6028 c-decl.c:6131 c-decl.c:6429
+#: c-decl.c:6106 c-decl.c:6208 c-decl.c:6509
#, c-format
msgid "parameter `%s' declared void"
msgstr ""
-#: c-decl.c:6105
+#: c-decl.c:6182
msgid "parameter name missing from parameter list"
msgstr ""
-#: c-decl.c:6124 c-decl.c:6422
+#: c-decl.c:6201 c-decl.c:6502
#, c-format
msgid "multiple parameters named `%s'"
msgstr ""
-#: c-decl.c:6155
+#: c-decl.c:6232 c-decl.c:6234
#, c-format
msgid "type of `%s' defaults to `int'"
msgstr ""
-#: c-decl.c:6191 c-decl.c:6479
+#: c-decl.c:6270 c-decl.c:6559
#, c-format
msgid "declaration for parameter `%s' but no such parameter"
msgstr ""
-#: c-decl.c:6238
+#: c-decl.c:6318
msgid "number of arguments doesn't match prototype"
msgstr ""
-#: c-decl.c:6267
+#: c-decl.c:6347
#, c-format
msgid "promoted argument `%s' doesn't match prototype"
msgstr ""
-#: c-decl.c:6281
+#: c-decl.c:6361
#, c-format
msgid "argument `%s' doesn't match prototype"
msgstr ""
-#: c-decl.c:6452
+#: c-decl.c:6532
#, c-format
msgid "type of parameter `%s' is not declared"
msgstr ""
-#: c-decl.c:6594
+#: c-decl.c:6677
msgid "function might be possible candidate for attribute `noreturn'"
msgstr ""
-#: c-decl.c:6597
+#: c-decl.c:6680 cp/decl.c:14665
msgid "`noreturn' function does return"
msgstr ""
#. If this function returns non-void and control can drop through,
#. complain.
-#: c-decl.c:6602
+#: c-decl.c:6685 cp/decl.c:14675
msgid "control reaches end of non-void function"
msgstr ""
-#: c-decl.c:6607 cp/decl.c:14562
+#: c-decl.c:6690
msgid "this function may return with or without a value"
msgstr ""
-#: c-decl.c:6626
+#: c-decl.c:6709
#, c-format
msgid "size of return value of `%s' is %u bytes"
msgstr ""
-#: c-decl.c:6630
+#: c-decl.c:6713
#, c-format
msgid "size of return value of `%s' is larger than %d bytes"
msgstr ""
-#: c-iterate.c:475
-#, c-format
-msgid "`for (%s)' appears within implicit iteration"
+#: c-decl.c:6954
+msgid "ISO C forbids case ranges"
msgstr ""
-#: c-lex.c:416
-msgid "carriage return in source file"
+#: c-decl.c:6963
+msgid "label must have integral type in ISO C"
msgstr ""
-#: c-lex.c:417
-msgid "(we only warn about the first carriage return)"
+#: c-decl.c:6976
+msgid "default label not within a switch statement"
msgstr ""
-#: c-lex.c:474 cp/lex.c:1891
-msgid "stray '\\' in program"
+#: c-decl.c:6978 cp/decl.c:5249
+msgid "case label not within a switch statement"
msgstr ""
-#: c-lex.c:551 c-lex.c:718 cp/lex.c:1955 cp/lex.c:2131
-msgid "invalid #-line"
+#: c-decl.c:6984 cp/decl.c:5372
+msgid "multiple default labels in one switch"
msgstr ""
-#: c-lex.c:653 cp/lex.c:2066
-#, c-format
-msgid "ignoring pragma: %s"
+#: c-decl.c:6985
+msgid "this is the first default label"
msgstr ""
-#: c-lex.c:686 cp/lex.c:2099 cpplib.c:772
-msgid "invalid #ident"
+#: c-decl.c:6988
+msgid "duplicate case value"
msgstr ""
-#: c-lex.c:702 cp/lex.c:2115
-#, c-format
-msgid "undefined or invalid # directive `%s'"
+#: c-decl.c:6991
+msgid "this is the first entry for that value"
msgstr ""
-#: c-lex.c:754 cp/lex.c:2168
-msgid "invalid #line"
+#: c-decl.c:6996
+msgid "case value out of range"
msgstr ""
-#: c-lex.c:834 cp/lex.c:2285
-msgid "#-lines for entering and leaving files don't match"
+#: c-decl.c:6998
+msgid "case label within scope of cleanup or variable array"
msgstr ""
-#: c-lex.c:909
-msgid "the meaning of `\\x' varies with -traditional"
+#: c-lex.c:333
+msgid "stray '\\' in program"
msgstr ""
-#: c-lex.c:942 cp/lex.c:2866 cppexp.c:685
-msgid "\\x used with no following hex digits"
+#: c-lex.c:395 c-lex.c:514
+msgid "invalid #-line"
msgstr ""
-#: c-lex.c:954 cp/lex.c:2876
-msgid "hex escape out of range"
+#: c-lex.c:499
+#, c-format
+msgid "undefined or invalid # directive `%s'"
msgstr ""
-#: c-lex.c:994
-msgid "the meaning of `\\a' varies with -traditional"
+#: c-lex.c:550
+msgid "invalid #line"
msgstr ""
-#: c-lex.c:1010
-#, c-format
-msgid "non-ANSI-standard escape sequence, `\\%c'"
+#: c-lex.c:627 c-lex.c:743
+msgid "badly nested C headers from preprocessor"
msgstr ""
-#: c-lex.c:1023 c-lex.c:1027 cp/lex.c:2941 cp/lex.c:2945
-#, c-format
-msgid "unknown escape sequence `\\%c'"
+#: c-lex.c:645
+msgid "#-lines for entering and leaving files don't match"
msgstr ""
-#: c-lex.c:1029 cp/lex.c:2947
+#: c-lex.c:786 c-pragma.c:425
#, c-format
-msgid "unknown escape sequence: `\\' followed by char code 0x%x"
+msgid "ignoring #pragma %s %s"
msgstr ""
-#: c-lex.c:1042 cp/lex.c:2964
+#: c-lex.c:788 c-pragma.c:427
#, c-format
-msgid "%s at end of input"
+msgid "ignoring #pragma %s"
msgstr ""
-#: c-lex.c:1044 cp/lex.c:2967
-#, c-format
-msgid "%s at null character"
+#: c-lex.c:821
+msgid "incomplete universal-character-name"
msgstr ""
-#: c-lex.c:1046 cp/lex.c:2969
+#: c-lex.c:828
#, c-format
-msgid "%s before string constant"
+msgid "non hex digit '%c' in universal-character-name"
msgstr ""
-#: c-lex.c:1048 cp/lex.c:2971
-#, c-format
-msgid "%s before character constant"
+#: c-lex.c:843
+msgid "universal-character-name on EBCDIC target"
msgstr ""
-#: c-lex.c:1050 cp/lex.c:2973
+#: c-lex.c:856
#, c-format
-msgid "%s before character 0%o"
+msgid "universal-character-name used for '%c'"
msgstr ""
-#: c-lex.c:1052 cp/lex.c:2975
-#, c-format
-msgid "%s before `%s'"
+#: c-lex.c:859
+msgid "invalid universal-character-name"
msgstr ""
-#: c-lex.c:1114 cp/lex.c:3373
-msgid "more than one `f' in numeric constant"
+#: c-lex.c:893
+msgid "the meaning of `\\x' varies with -traditional"
msgstr ""
-#: c-lex.c:1120 cp/lex.c:3379
-msgid "more than one `l' in numeric constant"
+#: c-lex.c:929 cppexp.c:522
+msgid "\\x used with no following hex digits"
msgstr ""
-#: c-lex.c:1126 c-lex.c:1794 cp/lex.c:3385 cp/lex.c:4098
-msgid "more than one `i' or `j' in numeric constant"
+#: c-lex.c:942
+msgid "hex escape out of range"
msgstr ""
-#: c-lex.c:1128 c-lex.c:1796
-msgid "ANSI C forbids imaginary numeric constants"
+#: c-lex.c:980
+msgid "the meaning of '\\a' varies with -traditional"
msgstr ""
-#: c-lex.c:1153 cp/lex.c:3412
-msgid "both `f' and `l' in floating constant"
+#: c-lex.c:990
+#, c-format
+msgid "the meaning of '\\%c' varies with -traditional"
msgstr ""
-#: c-lex.c:1166 cp/lex.c:3425
-msgid "floating point number exceeds range of `float'"
+#: c-lex.c:996 cppexp.c:470
+#, c-format
+msgid "non-ISO-standard escape sequence, '\\%c'"
msgstr ""
-#: c-lex.c:1178 cp/lex.c:3437
-msgid "floating point number exceeds range of `long double'"
+#: c-lex.c:1003 c-lex.c:1009
+#, c-format
+msgid "unknown escape sequence '\\%c'"
msgstr ""
-#: c-lex.c:1189 c-lex.c:1742 cp/lex.c:3448 cp/lex.c:4047
-msgid "floating point number exceeds range of `double'"
+#: c-lex.c:1011
+#, c-format
+msgid "unknown escape sequence: '\\' followed by char 0x%.2x"
msgstr ""
-#: c-lex.c:1364 c-lex.c:1366 cp/lex.c:3606 cp/lex.c:3608 cpplex.c:1110
-msgid "`$' in identifier"
+#: c-lex.c:1041
+#, c-format
+msgid "universal-character-name '\\U%08x' not valid in identifier"
msgstr ""
-#: c-lex.c:1409
+#: c-lex.c:1287
#, c-format
-msgid "ANSI does not permit the keyword `%s'"
+msgid "universal-character-name '\\u%04x' not valid in identifier"
+msgstr ""
+
+#: c-lex.c:1377
+msgid "both 'f' and 'l' suffixes on floating constant"
msgstr ""
-#: c-lex.c:1422
+#: c-lex.c:1404
#, c-format
-msgid "invalid identifier `%s'"
+msgid "floating point number exceeds range of '%s'"
+msgstr ""
+
+#: c-lex.c:1442 c-lex.c:1853
+#, c-format
+msgid "stray '%c' in program"
+msgstr ""
+
+#: c-lex.c:1444 c-lex.c:1855
+#, c-format
+msgid "stray '\\%#o' in program"
+msgstr ""
+
+#: c-lex.c:1578 c-lex.c:1580
+msgid "'$' in identifier"
msgstr ""
-#: c-lex.c:1480 cp/lex.c:3785
-msgid "parse error at `..'"
+#: c-lex.c:1612
+msgid "parse error at '..'"
msgstr ""
-#: c-lex.c:1574 cp/lex.c:3879
+#: c-lex.c:1927
msgid "floating constant may not be in radix 16"
msgstr ""
-#: c-lex.c:1580 cp/lex.c:3885
-msgid "malformed floating constant"
+#: c-lex.c:2059
+msgid "traditional C rejects the 'f' suffix"
+msgstr ""
+
+#: c-lex.c:2068
+msgid "traditional C rejects the 'l' suffix"
msgstr ""
-#: c-lex.c:1614 cp/lex.c:3919
-msgid "nondigits in number and not hexadecimal"
+#: c-lex.c:2078 c-lex.c:2171
+msgid "ISO C forbids imaginary numeric constants"
msgstr ""
-#: c-lex.c:1666 cp/lex.c:3971
-msgid "numeric constant with no digits"
+#: c-lex.c:2112
+msgid "floating point number exceeds range of 'double'"
msgstr ""
-#: c-lex.c:1669 cp/lex.c:3974
-msgid "numeric constant contains digits beyond the radix"
+#: c-lex.c:2141
+msgid "two 'u' suffixes on integer constant"
msgstr ""
-#: c-lex.c:1698 cp/lex.c:4003
-msgid "floating constant exponent has no digits"
+#: c-lex.c:2143
+msgid "traditional C rejects the 'u' suffix"
msgstr ""
-#: c-lex.c:1708 cp/lex.c:4013
-msgid "hexadecimal floating constant has no exponent"
+#: c-lex.c:2154
+msgid "three 'l' suffixes on integer constant"
msgstr ""
-#. We got an exception from parse_float()
-#: c-lex.c:1726 cp/lex.c:4031
-msgid "floating constant out of range"
+#: c-lex.c:2156
+msgid "'lul' is not a valid integer suffix"
msgstr ""
-#: c-lex.c:1775 cp/lex.c:4080
-msgid "two `u's in integer constant"
+#: c-lex.c:2158
+msgid "'Ll' and 'lL' are not valid integer suffixes"
msgstr ""
-#: c-lex.c:1783 cp/lex.c:4088
-msgid "three `l's in integer constant"
+#: c-lex.c:2161
+msgid "ISO C89 forbids long long integer constants"
msgstr ""
-#: c-lex.c:1786
-msgid "ANSI C forbids long long integer constants"
+#: c-lex.c:2169
+msgid "more than one 'i' or 'j' suffix on integer constant"
msgstr ""
-#: c-lex.c:1811 cp/lex.c:4115
+#: c-lex.c:2184
#, c-format
msgid ""
"integer constant is too large for this configuration of the compiler - "
"truncated to %d bits"
msgstr ""
-#: c-lex.c:1908
+#: c-lex.c:2274
msgid "width of integer constant changes with -traditional"
msgstr ""
-#: c-lex.c:1911
-msgid "integer constant is unsigned in ANSI C, signed with -traditional"
+#: c-lex.c:2276
+msgid "integer constant is unsigned in ISO C, signed with -traditional"
msgstr ""
-#: c-lex.c:1913
+#: c-lex.c:2278
msgid "width of integer constant may change on other systems with -traditional"
msgstr ""
-#: c-lex.c:1921 cp/lex.c:4167
+#: c-lex.c:2285
msgid "integer constant larger than the maximum value of an unsigned long int"
msgstr ""
-#: c-lex.c:1925 cp/lex.c:4171
+#: c-lex.c:2289
msgid "decimal constant is so large that it is unsigned"
msgstr ""
-#: c-lex.c:1936
-msgid "complex integer constant is too wide for `complex int'"
-msgstr ""
-
-#: c-lex.c:1958 cp/lex.c:4194
+#: c-lex.c:2318
msgid "integer constant is larger than the maximum value for its type"
msgstr ""
-#: c-lex.c:1967 cp/lex.c:4203
+#: c-lex.c:2322
#, c-format
-msgid "missing white space after number `%s'"
+msgid "missing white space after number '%.*s'"
msgstr ""
-#: c-lex.c:2006 c-lex.c:2167 cp/lex.c:4242 cp/lex.c:4408 cppexp.c:290
-msgid "escape sequence out of range for character"
-msgstr ""
-
-#: c-lex.c:2015
-msgid "ANSI C forbids newline in character constant"
-msgstr ""
-
-#: c-lex.c:2065 c-lex.c:2194 cp/lex.c:4301 cp/lex.c:4435
+#: c-lex.c:2358 c-lex.c:2462
msgid "Ignoring invalid multibyte character"
msgstr ""
-#: c-lex.c:2103
-msgid "malformed character constant"
+#: c-lex.c:2376 c-lex.c:2481 cppexp.c:271
+msgid "escape sequence out of range for character"
msgstr ""
-#: c-lex.c:2105 cp/lex.c:4341 cppexp.c:305
+#: c-lex.c:2500
msgid "empty character constant"
msgstr ""
-#: c-lex.c:2109 cp/lex.c:4345 cppexp.c:317
+#: c-lex.c:2504
msgid "character constant too long"
msgstr ""
-#: c-lex.c:2112 cp/lex.c:4348 cppexp.c:321
+#: c-lex.c:2507 cppexp.c:289
msgid "multi-character character constant"
msgstr ""
-#: c-lex.c:2172
-msgid "ANSI C forbids newline in string constant"
-msgstr ""
-
-#: c-lex.c:2267 cp/lex.c:4508
-msgid "Unterminated string constant"
-msgstr ""
-
-#: c-lex.c:2450 cp/lex.c:899
-msgid "YYDEBUG not defined."
-msgstr ""
-
#. Like YYERROR but do call yyerror.
-#: c-parse.y:57 objc-parse.y:58 parse.y:57
+#: c-parse.y:64 objc-parse.y:65 parse.y:55
msgid "syntax error"
msgstr ""
-#: /usr/lib/bison.simple:107 /usr/share/misc/bison.simple:107
+#: /usr/share/bison.simple:107
msgid "syntax error: cannot back up"
msgstr ""
-#: /usr/lib/bison.simple:358 /usr/share/misc/bison.simple:358
+#: /usr/share/bison.simple:362
msgid "parser stack overflow"
msgstr ""
-#: c-parse.y:235 objc-parse.y:263
-msgid "ANSI C forbids an empty source file"
+#: c-parse.y:244 objc-parse.y:272
+msgid "ISO C forbids an empty source file"
msgstr ""
-#: c-parse.y:267 c-parse.y:1737 objc-parse.y:296 objc-parse.y:1811
+#: c-parse.y:276 c-parse.y:1758 objc-parse.y:305 objc-parse.y:1822
msgid "argument of `asm' is not a constant string"
msgstr ""
-#: c-parse.y:275 objc-parse.y:304
-msgid "ANSI C forbids data definition with no type or storage class"
+#: c-parse.y:284 objc-parse.y:313
+msgid "ISO C forbids data definition with no type or storage class"
msgstr ""
-#: c-parse.y:277 objc-parse.y:306
+#: c-parse.y:286 objc-parse.y:315
msgid "data definition has no type or storage class"
msgstr ""
-#: c-parse.y:298 objc-parse.y:327
-msgid "ANSI C does not allow extra `;' outside of a function"
+#: c-parse.y:307 objc-parse.y:336
+msgid "ISO C does not allow extra `;' outside of a function"
+msgstr ""
+
+#: c-parse.y:373 cppexp.c:842
+msgid "traditional C rejects the unary plus operator"
msgstr ""
-#: c-parse.y:405 objc-parse.y:436
-msgid "ANSI C forbids `&&'"
+#: c-parse.y:417 objc-parse.y:446
+msgid "ISO C forbids `&&'"
msgstr ""
-#: c-parse.y:434 objc-parse.y:465
+#: c-parse.y:446 objc-parse.y:475
msgid "`sizeof' applied to a bit-field"
msgstr ""
-#: c-parse.y:477 objc-parse.y:508
-msgid "ANSI C forbids constructor expressions"
+#: c-parse.y:496 objc-parse.y:525
+msgid "ISO C89 forbids constructor expressions"
msgstr ""
-#: c-parse.y:546 objc-parse.y:577
-msgid "ANSI C forbids omitting the middle term of a ?: expression"
+#: c-parse.y:565 objc-parse.y:594
+msgid "ISO C forbids omitting the middle term of a ?: expression"
msgstr ""
-#: c-parse.y:594 objc-parse.y:625
-msgid "ANSI C forbids braced-groups within expressions"
+#: c-parse.y:613 objc-parse.y:642
+msgid "ISO C forbids braced-groups within expressions"
msgstr ""
-#: c-parse.y:649
-msgid "Use of ANSI string concatenation"
+#: c-parse.y:672
+msgid "traditional C rejects string concatenation"
msgstr ""
-#: c-parse.y:661 objc-parse.y:723
-msgid "ANSI C does not permit use of `varargs.h'"
+#: c-parse.y:687 objc-parse.y:739
+msgid "ISO C does not permit use of `varargs.h'"
msgstr ""
-#: c-parse.y:776 c-parse.y:797 c-parse.y:829 objc-parse.y:838 objc-parse.y:859
-#: objc-parse.y:891 parse.y:1799 parse.y:1806 parse.y:1845
+#: c-parse.y:802 c-parse.y:823 c-parse.y:855 objc-parse.y:854 objc-parse.y:875
+#: objc-parse.y:907 parse.y:1840 parse.y:1847 parse.y:1886
#, c-format
msgid "`%s' is not at beginning of declaration"
msgstr ""
-#: c-parse.y:993 objc-parse.y:1064
-msgid "ANSI C forbids empty initializer braces"
+#: c-parse.y:1019 objc-parse.y:1080
+msgid "ISO C forbids empty initializer braces"
msgstr ""
-#: c-parse.y:1043 c-parse.y:1069 objc-parse.y:1110 objc-parse.y:1136
-msgid "ANSI C forbids nested functions"
+#: c-parse.y:1069 c-parse.y:1095 objc-parse.y:1126 objc-parse.y:1152
+msgid "ISO C forbids nested functions"
msgstr ""
-#: c-parse.y:1140 c-parse.y:1174
+#: c-parse.y:1166 c-parse.y:1200
msgid "`[*]' in parameter declaration only allowed in ISO C 99"
msgstr ""
-#: c-parse.y:1257 objc-parse.y:1315 parse.y:2256
+#: c-parse.y:1283 objc-parse.y:1331 parse.y:2300
msgid "comma at end of enumerator list"
msgstr ""
-#: c-parse.y:1265 objc-parse.y:1323
+#: c-parse.y:1291 objc-parse.y:1339
msgid "no semicolon at end of struct or union"
msgstr ""
-#: c-parse.y:1274 objc-parse.y:1332 objc-parse.y:2406
+#: c-parse.y:1300 objc-parse.y:1348 objc-parse.y:2295
msgid "extra semicolon in struct or union specified"
msgstr ""
-#: c-parse.y:1298 objc-parse.y:1370
-msgid "ANSI C doesn't support unnamed structs/unions"
+#: c-parse.y:1324 objc-parse.y:1386
+msgid "ISO C doesn't support unnamed structs/unions"
msgstr ""
-#: c-parse.y:1312 objc-parse.y:1384
-msgid "ANSI C forbids member declarations with no members"
+#: c-parse.y:1338 objc-parse.y:1400
+msgid "ISO C forbids member declarations with no members"
msgstr ""
-#: c-parse.y:1426 objc-parse.y:1498
-msgid "ANSI C forbids label at end of compound statement"
+#: c-parse.y:1452 objc-parse.y:1514
+msgid "ISO C forbids label at end of compound statement"
msgstr ""
-#: c-parse.y:1460 objc-parse.y:1534
-msgid "ANSI C forbids label declarations"
+#: c-parse.y:1486 objc-parse.y:1550
+msgid "ISO C forbids label declarations"
msgstr ""
-#: c-parse.y:1510 objc-parse.y:1584 parse.y:1501
+#: c-parse.y:1536 objc-parse.y:1600 parse.y:1542
msgid "braced-group within expression allowed only inside a function"
msgstr ""
-#: c-parse.y:1622 objc-parse.y:1696
+#: c-parse.y:1650 objc-parse.y:1714
msgid "empty body in an else-statement"
msgstr ""
-#: c-parse.y:1714 objc-parse.y:1788
-msgid "break statement not within loop or switch"
-msgstr ""
-
-#: c-parse.y:1719 objc-parse.y:1793
-msgid "continue statement not within a loop"
-msgstr ""
-
-#: c-parse.y:1773 objc-parse.y:1847
-msgid "ANSI C forbids `goto *expr;'"
-msgstr ""
-
-#: c-parse.y:1794 objc-parse.y:1868
-msgid "invalid `for (ITERATOR)' syntax"
-msgstr ""
-
-#: c-parse.y:1796 objc-parse.y:1870
-#, c-format
-msgid "`%s' is not an iterator"
-msgstr ""
-
-#: c-parse.y:1799 objc-parse.y:1873
-#, c-format
-msgid "`for (%s)' inside expansion of same iterator"
-msgstr ""
-
-#: c-parse.y:1851 objc-parse.y:1925
-msgid "label must have integral type in ANSI C"
+#: c-parse.y:1794 objc-parse.y:1858
+msgid "ISO C forbids `goto *expr;'"
msgstr ""
-#: c-parse.y:1857 c-parse.y:1886 cp/expr.c:245 cp/typeck2.c:1340
-#: objc-parse.y:1931 objc-parse.y:1960
-msgid "case label not within a switch statement"
+#: c-parse.y:1884 objc-parse.y:1948
+msgid "ISO C forbids forward parameter declarations"
msgstr ""
-#: c-parse.y:1860 c-parse.y:1889 objc-parse.y:1934 objc-parse.y:1963
-msgid "duplicate case value"
-msgstr ""
-
-#: c-parse.y:1861 c-parse.y:1890 objc-parse.y:1935 objc-parse.y:1964
-msgid "this is the first entry for that value"
+#. Gcc used to allow this as an extension. However, it does
+#. not work for all targets, and thus has been disabled.
+#. Also, since func (...) and func () are indistinguishable,
+#. it caused problems with the code in expand_builtin which
+#. tries to verify that BUILT_IN_NEXT_ARG is being used
+#. correctly.
+#: c-parse.y:1907 objc-parse.y:1971
+msgid "ISO C requires a named argument before `...'"
msgstr ""
-#: c-parse.y:1864 c-parse.y:1893 cp/expr.c:271 cp/typeck2.c:1415
-#: objc-parse.y:1938 objc-parse.y:1967
-msgid "case value out of range"
+#: c-parse.y:1987 objc-parse.y:2051
+msgid "`...' in old-style identifier list"
msgstr ""
-#: c-parse.y:1866 c-parse.y:1897 cp/expr.c:277 objc-parse.y:1940
-#: objc-parse.y:1971
-msgid "case label within scope of cleanup or variable array"
+#: /usr/share/bison.simple:639
+msgid "parse error; also virtual memory exceeded"
msgstr ""
-#: c-parse.y:1876 objc-parse.y:1950
-msgid "ANSI C forbids case ranges"
+#: /usr/share/bison.simple:643
+msgid "parse error"
msgstr ""
-#: c-parse.y:1895 objc-parse.y:1969
-msgid "empty case range"
+#: c-parse.y:2331 cp/spew.c:1423 objc-parse.y:3051
+#, c-format
+msgid "%s at end of input"
msgstr ""
-#: c-parse.y:1908 cp/expr.c:249 cp/typeck2.c:1342 objc-parse.y:1982
-msgid "default label not within a switch statement"
+#: c-parse.y:2337 cp/spew.c:1429 objc-parse.y:3057
+#, c-format
+msgid "%s before %s'%c'"
msgstr ""
-#: c-parse.y:1911 cp/expr.c:266 cp/typeck2.c:1348 objc-parse.y:1985
-msgid "multiple default labels in one switch"
+#: c-parse.y:2339 cp/spew.c:1431 objc-parse.y:3059
+#, c-format
+msgid "%s before %s'\\x%x'"
msgstr ""
-#: c-parse.y:1912 objc-parse.y:1986
-msgid "this is the first default label"
+#: c-parse.y:2344 cp/spew.c:1436 objc-parse.y:3064
+#, c-format
+msgid "%s before string constant"
msgstr ""
-#: c-parse.y:1985 objc-parse.y:2059
-msgid "ANSI C forbids forward parameter declarations"
+#: c-parse.y:2348 cp/spew.c:1440 objc-parse.y:3068
+#, c-format
+msgid "%s before numeric constant"
msgstr ""
-#. Gcc used to allow this as an extension. However, it does
-#. not work for all targets, and thus has been disabled.
-#. Also, since func (...) and func () are indistinguishable,
-#. it caused problems with the code in expand_builtin which
-#. tries to verify that BUILT_IN_NEXT_ARG is being used
-#. correctly.
-#: c-parse.y:2008 objc-parse.y:2082
-msgid "ANSI C requires a named argument before `...'"
+#: c-parse.y:2350 cp/spew.c:1443 objc-parse.y:3070
+#, c-format
+msgid "%s before \"%s\""
msgstr ""
-#: c-parse.y:2088 objc-parse.y:2162
-msgid "`...' in old-style identifier list"
+#: c-parse.y:2352 cp/spew.c:1445 objc-parse.y:3072
+#, c-format
+msgid "%s before '%s' token"
msgstr ""
-#: /usr/lib/bison.simple:639 /usr/share/misc/bison.simple:639
-msgid "parse error; also virtual memory exceeded"
+#: c-parse.y:2433 objc-parse.y:3153
+#, c-format
+msgid "invalid identifier `%s'"
msgstr ""
-#: /usr/lib/bison.simple:643 /usr/share/misc/bison.simple:643
-msgid "parse error"
+#: c-parse.y:2505 objc-parse.y:3225
+#, c-format
+msgid "syntax error before '%s' token"
msgstr ""
-#: c-pragma.c:74
-#, c-format
-msgid "Alignment must be a small power of two, not %d, in #pragma pack"
+#: c-parse.y:2536 cp/lex.c:951 objc-parse.y:3256
+msgid "YYDEBUG not defined."
msgstr ""
-#: c-pragma.c:118
+#: c-pragma.c:119
msgid ""
"#pragma pack (pop) encountered without matching #pragma pack (push, <n>)"
msgstr ""
-#: c-pragma.c:136
+#: c-pragma.c:137
#, c-format
msgid ""
"#pragma pack(pop, %s) encountered without matching #pragma pack(push, %s, "
"<n>)"
msgstr ""
-#: c-pragma.c:216
-msgid "malformed `#pragma pack'"
+#: c-pragma.c:243
+msgid "junk at end of '#pragma pack'"
+msgstr ""
+
+#: c-pragma.c:291
+msgid "junk at end of #pragma weak"
msgstr ""
-#: c-pragma.c:225
-msgid "malformed '#pragma pack(push[,id],<n>)'"
+#: c-pragma.c:394 cpplib.c:753
+msgid "malformed #pragma directive"
msgstr ""
-#: c-pragma.c:232
-msgid "malformed '#pragma pack(pop[,id])'"
+#: c-semantics.c:505
+msgid "break statement not within loop or switch"
msgstr ""
-#: c-pragma.c:245
-msgid "malformed `#pragma weak'"
+#: c-semantics.c:523
+msgid "continue statement not within a loop"
msgstr ""
-#: c-typeck.c:120
+#: c-semantics.c:630
+#, c-format
+msgid "%s qualifier ignored on asm"
+msgstr ""
+
+#: c-typeck.c:119
#, c-format
msgid "`%s' has an incomplete type"
msgstr ""
-#: c-typeck.c:142 cp/call.c:2517
+#: c-typeck.c:141 cp/call.c:2525
msgid "invalid use of void expression"
msgstr ""
-#: c-typeck.c:151
+#: c-typeck.c:150
msgid "invalid use of array with unspecified bounds"
msgstr ""
-#: c-typeck.c:159
+#: c-typeck.c:158
#, c-format
msgid "invalid use of undefined type `%s %s'"
msgstr ""
#. If this type has a typedef-name, the TYPE_NAME is a TYPE_DECL.
-#: c-typeck.c:163
+#: c-typeck.c:162
#, c-format
msgid "invalid use of incomplete typedef `%s'"
msgstr ""
-#: c-typeck.c:391 c-typeck.c:405
-msgid "function types not truly compatible in ANSI C"
+#: c-typeck.c:390 c-typeck.c:404
+msgid "function types not truly compatible in ISO C"
msgstr ""
-#: c-typeck.c:554
+#: c-typeck.c:553
msgid "types are not quite compatible"
msgstr ""
-#: c-typeck.c:705
+#: c-typeck.c:704
msgid "sizeof applied to a function type"
msgstr ""
-#: c-typeck.c:711
+#: c-typeck.c:710
msgid "sizeof applied to a void type"
msgstr ""
-#: c-typeck.c:720
+#: c-typeck.c:719
msgid "sizeof applied to an incomplete type"
msgstr ""
-#: c-typeck.c:761 c-typeck.c:2748
+#: c-typeck.c:760 c-typeck.c:2742
msgid "arithmetic on pointer to an incomplete type"
msgstr ""
-#: c-typeck.c:788
+#: c-typeck.c:787
msgid "__alignof__ applied to an incomplete type"
msgstr ""
-#: c-typeck.c:810
+#: c-typeck.c:809
msgid "`__alignof' applied to a bit-field"
msgstr ""
-#: c-typeck.c:983 cp/typeck.c:1763
+#: c-typeck.c:982 cp/typeck.c:1767
msgid "invalid use of non-lvalue array"
msgstr ""
-#: c-typeck.c:1158
+#: c-typeck.c:1157
#, c-format
msgid "%s has no member named `%s'"
msgstr ""
-#: c-typeck.c:1189
+#: c-typeck.c:1188
#, c-format
msgid "request for member `%s' in something not a structure or union"
msgstr ""
-#: c-typeck.c:1222
+#: c-typeck.c:1221
msgid "dereferencing pointer to incomplete type"
msgstr ""
-#: c-typeck.c:1226
+#: c-typeck.c:1225
msgid "dereferencing `void *' pointer"
msgstr ""
-#: c-typeck.c:1243 cp/typeck.c:2369
+#: c-typeck.c:1242 cp/typeck.c:2373
#, c-format
msgid "invalid type argument of `%s'"
msgstr ""
-#: c-typeck.c:1262 cp/typeck.c:2395
+#: c-typeck.c:1261 cp/typeck.c:2399
msgid "subscript missing in array reference"
msgstr ""
-#: c-typeck.c:1283 cp/typeck.c:2416
+#: c-typeck.c:1282 cp/typeck.c:2420
msgid "array subscript has type `char'"
msgstr ""
-#: c-typeck.c:1291 c-typeck.c:1386 cp/typeck.c:2423 cp/typeck.c:2501
+#: c-typeck.c:1290 c-typeck.c:1379 cp/typeck.c:2427 cp/typeck.c:2505
msgid "array subscript is not an integer"
msgstr ""
-#: c-typeck.c:1321
-msgid "ANSI C forbids subscripting `register' array"
+#: c-typeck.c:1323
+msgid "ISO C forbids subscripting `register' array"
msgstr ""
-#: c-typeck.c:1323 c-typeck.c:1332
-msgid "ANSI C forbids subscripting non-lvalue array"
+#: c-typeck.c:1325
+msgid "ISO C89 forbids subscripting non-lvalue array"
msgstr ""
-#: c-typeck.c:1365
+#: c-typeck.c:1358
msgid "subscript has type `char'"
msgstr ""
-#: c-typeck.c:1381 cp/typeck.c:2496
+#: c-typeck.c:1374 cp/typeck.c:2500
msgid "subscripted value is neither array nor pointer"
msgstr ""
-#: c-typeck.c:1431
+#: c-typeck.c:1425
#, c-format
msgid "`%s' undeclared here (not in a function)"
msgstr ""
-#: c-typeck.c:1438
+#: c-typeck.c:1432
#, c-format
msgid "`%s' undeclared (first use in this function)"
msgstr ""
-#: c-typeck.c:1443
+#: c-typeck.c:1437
msgid "(Each undeclared identifier is reported only once"
msgstr ""
-#: c-typeck.c:1444
+#: c-typeck.c:1438
msgid "for each function it appears in.)"
msgstr ""
-#: c-typeck.c:1461
+#: c-typeck.c:1455
#, c-format
msgid "local declaration of `%s' hides instance variable"
msgstr ""
-#: c-typeck.c:1526
+#: c-typeck.c:1520
msgid "called object is not a function"
msgstr ""
-#: c-typeck.c:1609 cp/typeck.c:3129
+#: c-typeck.c:1603 cp/typeck.c:3133
msgid "too many arguments to function"
msgstr ""
-#: c-typeck.c:1632
+#: c-typeck.c:1626
#, c-format
msgid "type of formal parameter %d is incomplete"
msgstr ""
-#: c-typeck.c:1645
+#: c-typeck.c:1639
#, c-format
msgid "%s as integer rather than floating due to prototype"
msgstr ""
-#: c-typeck.c:1648
+#: c-typeck.c:1642
#, c-format
msgid "%s as complex rather than floating due to prototype"
msgstr ""
-#: c-typeck.c:1651
+#: c-typeck.c:1645
#, c-format
msgid "%s as floating rather than integer due to prototype"
msgstr ""
-#: c-typeck.c:1654
+#: c-typeck.c:1648
#, c-format
msgid "%s as floating rather than complex due to prototype"
msgstr ""
-#: c-typeck.c:1664
+#: c-typeck.c:1658
#, c-format
msgid "%s as `float' rather than `double' due to prototype"
msgstr ""
-#: c-typeck.c:1679
+#: c-typeck.c:1673
#, c-format
msgid "%s with different width due to prototype"
msgstr ""
-#: c-typeck.c:1713
+#: c-typeck.c:1707
#, c-format
msgid "%s as unsigned due to prototype"
msgstr ""
-#: c-typeck.c:1715
+#: c-typeck.c:1709
#, c-format
msgid "%s as signed due to prototype"
msgstr ""
-#: c-typeck.c:1750 cp/typeck.c:3231
+#: c-typeck.c:1744 cp/typeck.c:3235
msgid "too few arguments to function"
msgstr ""
-#: c-typeck.c:1791
+#: c-typeck.c:1785
msgid "suggest parentheses around + or - inside shift"
msgstr ""
-#: c-typeck.c:1798
+#: c-typeck.c:1792
msgid "suggest parentheses around && within ||"
msgstr ""
-#: c-typeck.c:1807
+#: c-typeck.c:1801
msgid "suggest parentheses around arithmetic in operand of |"
msgstr ""
-#: c-typeck.c:1810
+#: c-typeck.c:1804
msgid "suggest parentheses around comparison in operand of |"
msgstr ""
-#: c-typeck.c:1819
+#: c-typeck.c:1813
msgid "suggest parentheses around arithmetic in operand of ^"
msgstr ""
-#: c-typeck.c:1822
+#: c-typeck.c:1816
msgid "suggest parentheses around comparison in operand of ^"
msgstr ""
-#: c-typeck.c:1829
+#: c-typeck.c:1823
msgid "suggest parentheses around + or - in operand of &"
msgstr ""
-#: c-typeck.c:1832
+#: c-typeck.c:1826
msgid "suggest parentheses around comparison in operand of &"
msgstr ""
-#: c-typeck.c:1839
+#: c-typeck.c:1833
msgid "comparisons like X<=Y<=Z do not have their mathematical meaning"
msgstr ""
-#: c-typeck.c:2093 cp/typeck.c:3509
+#: c-typeck.c:2087 cp/typeck.c:3514
msgid "right shift count is negative"
msgstr ""
-#: c-typeck.c:2100 cp/typeck.c:3515
+#: c-typeck.c:2094 cp/typeck.c:3520
msgid "right shift count >= width of type"
msgstr ""
-#: c-typeck.c:2125 cp/typeck.c:3534
+#: c-typeck.c:2119 cp/typeck.c:3539
msgid "left shift count is negative"
msgstr ""
-#: c-typeck.c:2128 cp/typeck.c:3536
+#: c-typeck.c:2122 cp/typeck.c:3541
msgid "left shift count >= width of type"
msgstr ""
-#: c-typeck.c:2153
+#: c-typeck.c:2147
msgid "shift count is negative"
msgstr ""
-#: c-typeck.c:2155
+#: c-typeck.c:2149
msgid "shift count >= width of type"
msgstr ""
-#: c-typeck.c:2176 cp/typeck.c:3571
+#: c-typeck.c:2170 cp/typeck.c:3576
msgid "comparing floating point with == or != is unsafe"
msgstr ""
-#: c-typeck.c:2200 c-typeck.c:2206
-msgid "ANSI C forbids comparison of `void *' with function pointer"
+#: c-typeck.c:2194 c-typeck.c:2200
+msgid "ISO C forbids comparison of `void *' with function pointer"
msgstr ""
-#: c-typeck.c:2209 c-typeck.c:2251 c-typeck.c:2279
+#: c-typeck.c:2203 c-typeck.c:2245 c-typeck.c:2273
msgid "comparison of distinct pointer types lacks a cast"
msgstr ""
-#: c-typeck.c:2224 c-typeck.c:2230 c-typeck.c:2300 c-typeck.c:2306
+#: c-typeck.c:2218 c-typeck.c:2224 c-typeck.c:2294 c-typeck.c:2300
msgid "comparison between pointer and integer"
msgstr ""
-#: c-typeck.c:2246 c-typeck.c:2274
-msgid "ANSI C forbids ordered comparisons of pointers to functions"
+#: c-typeck.c:2240 c-typeck.c:2268
+msgid "ISO C forbids ordered comparisons of pointers to functions"
msgstr ""
-#: c-typeck.c:2271
+#: c-typeck.c:2265
msgid "comparison of complete and incomplete pointers"
msgstr ""
-#: c-typeck.c:2287 c-typeck.c:2294
+#: c-typeck.c:2281 c-typeck.c:2288
msgid "ordered comparison of pointer with integer zero"
msgstr ""
-#: c-typeck.c:2320 cp/typeck.c:3782
+#: c-typeck.c:2314 cp/typeck.c:3748
msgid "unordered comparison on non-floating point argument"
msgstr ""
-#: c-typeck.c:2534
+#: c-typeck.c:2528
msgid "comparison between signed and unsigned"
msgstr ""
-#: c-typeck.c:2580 cp/typeck.c:4027
+#: c-typeck.c:2574 cp/typeck.c:3993
msgid "comparison of promoted ~unsigned with constant"
msgstr ""
-#: c-typeck.c:2588 cp/typeck.c:4035
+#: c-typeck.c:2582 cp/typeck.c:4001
msgid "comparison of promoted ~unsigned with unsigned"
msgstr ""
-#: c-typeck.c:2650
+#: c-typeck.c:2644
msgid "pointer of type `void *' used in arithmetic"
msgstr ""
-#: c-typeck.c:2656
+#: c-typeck.c:2650
msgid "pointer to a function used in arithmetic"
msgstr ""
-#: c-typeck.c:2734
+#: c-typeck.c:2728
msgid "pointer of type `void *' used in subtraction"
msgstr ""
-#: c-typeck.c:2736
+#: c-typeck.c:2730
msgid "pointer to a function used in subtraction"
msgstr ""
-#: c-typeck.c:2794
+#: c-typeck.c:2788
msgid "wrong type argument to unary plus"
msgstr ""
-#: c-typeck.c:2805
+#: c-typeck.c:2799
msgid "wrong type argument to unary minus"
msgstr ""
-#: c-typeck.c:2821
+#: c-typeck.c:2815
msgid "wrong type argument to bit-complement"
msgstr ""
-#: c-typeck.c:2832
+#: c-typeck.c:2826
msgid "wrong type argument to abs"
msgstr ""
-#: c-typeck.c:2844
+#: c-typeck.c:2838
msgid "wrong type argument to conjugation"
msgstr ""
-#: c-typeck.c:2858
+#: c-typeck.c:2852
msgid "wrong type argument to unary exclamation mark"
msgstr ""
-#: c-typeck.c:2912 c-typeck.c:2938
+#: c-typeck.c:2906 c-typeck.c:2932
#, c-format
msgid "wrong type argument to %s"
msgstr ""
-#: c-typeck.c:2932
+#: c-typeck.c:2926
#, c-format
msgid "%s of pointer to unknown structure"
msgstr ""
-#: c-typeck.c:2997
+#: c-typeck.c:2991
msgid "invalid lvalue in increment"
msgstr ""
-#: c-typeck.c:2998
+#: c-typeck.c:2992
msgid "invalid lvalue in decrement"
msgstr ""
-#: c-typeck.c:3006 cp/typeck.c:4574
+#: c-typeck.c:3000 cp/typeck.c:4556
msgid "increment"
msgstr ""
-#: c-typeck.c:3006 cp/typeck.c:4574
+#: c-typeck.c:3000 cp/typeck.c:4556
msgid "decrement"
msgstr ""
-#: c-typeck.c:3059
-msgid "ANSI C forbids the address of a cast expression"
+#: c-typeck.c:3053
+msgid "ISO C forbids the address of a cast expression"
msgstr ""
-#: c-typeck.c:3073
+#: c-typeck.c:3067
msgid "invalid lvalue in unary `&'"
msgstr ""
-#: c-typeck.c:3105
+#: c-typeck.c:3099
#, c-format
msgid "attempt to take address of bit-field structure member `%s'"
msgstr ""
-#: c-typeck.c:3213 c-typeck.c:4560 c-typeck.c:4576 c-typeck.c:4592
-#: collect2.c:1318 cp/typeck.c:4776 diagnostic.c:1411 gcc.c:4012
+#: c-typeck.c:3207 c-typeck.c:4553 c-typeck.c:4569 c-typeck.c:4585
+#: cp/typeck.c:4744 diagnostic.c:1408 gcc.c:3934
#, c-format
msgid "%s"
msgstr ""
-#: c-typeck.c:3270
-msgid "ANSI C forbids use of conditional expressions as lvalues"
-msgstr ""
-
-#: c-typeck.c:3273
-msgid "ANSI C forbids use of compound expressions as lvalues"
+#: c-typeck.c:3264
+msgid "ISO C forbids use of conditional expressions as lvalues"
msgstr ""
-#: c-typeck.c:3276
-msgid "ANSI C forbids use of cast expressions as lvalues"
+#: c-typeck.c:3267
+msgid "ISO C forbids use of compound expressions as lvalues"
msgstr ""
-#: c-typeck.c:3290
-#, c-format
-msgid "%s of iterator `%s'"
+#: c-typeck.c:3270
+msgid "ISO C forbids use of cast expressions as lvalues"
msgstr ""
-#: c-typeck.c:3298
+#: c-typeck.c:3287
#, c-format
msgid "%s of read-only member `%s'"
msgstr ""
-#: c-typeck.c:3302
+#: c-typeck.c:3291
#, c-format
msgid "%s of read-only variable `%s'"
msgstr ""
-#: c-typeck.c:3305
+#: c-typeck.c:3294
#, c-format
msgid "%s of read-only location"
msgstr ""
-#: c-typeck.c:3323
+#: c-typeck.c:3312
#, c-format
msgid "cannot take address of bitfield `%s'"
msgstr ""
-#: c-typeck.c:3350
+#: c-typeck.c:3339
#, c-format
msgid "global register variable `%s' used in nested function"
msgstr ""
-#: c-typeck.c:3354
+#: c-typeck.c:3343
#, c-format
msgid "register variable `%s' used in nested function"
msgstr ""
-#: c-typeck.c:3361
+#: c-typeck.c:3350
#, c-format
msgid "address of global register variable `%s' requested"
msgstr ""
-#: c-typeck.c:3373
+#: c-typeck.c:3362
msgid "cannot put object with volatile field into register"
msgstr ""
-#: c-typeck.c:3377
+#: c-typeck.c:3366
#, c-format
msgid "address of register variable `%s' requested"
msgstr ""
-#: c-typeck.c:3485
+#: c-typeck.c:3474
msgid "signed and unsigned type in conditional expression"
msgstr ""
-#: c-typeck.c:3492
-msgid "ANSI C forbids conditional expr with only one void side"
+#: c-typeck.c:3481
+msgid "ISO C forbids conditional expr with only one void side"
msgstr ""
-#: c-typeck.c:3508 c-typeck.c:3514
-msgid "ANSI C forbids conditional expr between `void *' and function pointer"
+#: c-typeck.c:3497 c-typeck.c:3503
+msgid "ISO C forbids conditional expr between `void *' and function pointer"
msgstr ""
-#: c-typeck.c:3519
+#: c-typeck.c:3508
msgid "pointer type mismatch in conditional expression"
msgstr ""
-#: c-typeck.c:3526 c-typeck.c:3540
+#: c-typeck.c:3515 c-typeck.c:3529
msgid "pointer/integer type mismatch in conditional expression"
msgstr ""
-#: c-typeck.c:3532 c-typeck.c:3546
+#: c-typeck.c:3521 c-typeck.c:3535
msgid "ANSI C forbids conditional expr between 0 and function pointer"
msgstr ""
-#: c-typeck.c:3558
+#: c-typeck.c:3547
msgid "type mismatch in conditional expression"
msgstr ""
-#: c-typeck.c:3631 cp/typeck.c:5063
+#: c-typeck.c:3620 cp/typeck.c:5007
msgid "left-hand operand of comma expression has no effect"
msgstr ""
-#: c-typeck.c:3670
+#: c-typeck.c:3659
msgid "cast specifies array type"
msgstr ""
-#: c-typeck.c:3676
+#: c-typeck.c:3665
msgid "cast specifies function type"
msgstr ""
-#: c-typeck.c:3686
-msgid "ANSI C forbids casting nonscalar to the same type"
+#: c-typeck.c:3675
+msgid "ISO C forbids casting nonscalar to the same type"
msgstr ""
-#: c-typeck.c:3707
-msgid "ANSI C forbids casts to union type"
+#: c-typeck.c:3696
+msgid "ISO C forbids casts to union type"
msgstr ""
-#: c-typeck.c:3723
+#: c-typeck.c:3712
msgid "cast to union type from type not present in union"
msgstr ""
#. There are qualifiers present in IN_OTYPE that are not
#. present in IN_TYPE.
-#: c-typeck.c:3768
+#: c-typeck.c:3757
msgid "cast discards qualifiers from pointer target type"
msgstr ""
-#: c-typeck.c:3783
+#: c-typeck.c:3772
msgid "cast increases required alignment of target type"
msgstr ""
-#: c-typeck.c:3789 cp/typeck.c:5478
+#: c-typeck.c:3778 cp/typeck.c:5422
msgid "cast from pointer to integer of different size"
msgstr ""
-#: c-typeck.c:3794
+#: c-typeck.c:3783
msgid "cast does not match function type"
msgstr ""
-#: c-typeck.c:3801 cp/typeck.c:5485
+#: c-typeck.c:3790 cp/typeck.c:5429
msgid "cast to pointer from integer of different size"
msgstr ""
#. Now we have handled acceptable kinds of LHS that are not truly lvalues.
#. Reject anything strange now.
-#: c-typeck.c:3943
+#: c-typeck.c:3932
msgid "invalid lvalue in assignment"
msgstr ""
#. Convert new value to destination type.
-#: c-typeck.c:3952 c-typeck.c:3976 c-typeck.c:3991 cp/typeck.c:5600
-#: cp/typeck.c:5749
+#: c-typeck.c:3941 c-typeck.c:3965 c-typeck.c:3980 cp/typeck.c:5544
+#: cp/typeck.c:5693
msgid "assignment"
msgstr ""
-#: c-typeck.c:4156 c-typeck.c:4223
+#: c-typeck.c:4145 c-typeck.c:4212
#, c-format
msgid "%s makes qualified function pointer from unqualified"
msgstr ""
-#: c-typeck.c:4160 c-typeck.c:4203
+#: c-typeck.c:4149 c-typeck.c:4192
#, c-format
msgid "%s discards qualifiers from pointer target type"
msgstr ""
-#: c-typeck.c:4166
-msgid "ANSI C prohibits argument conversion to union type"
+#: c-typeck.c:4155
+msgid "ISO C prohibits argument conversion to union type"
msgstr ""
-#: c-typeck.c:4195
+#: c-typeck.c:4184
#, c-format
-msgid "ANSI forbids %s between function pointer and `void *'"
+msgid "ISO C forbids %s between function pointer and `void *'"
msgstr ""
-#: c-typeck.c:4212
+#: c-typeck.c:4201
#, c-format
msgid "pointer targets in %s differ in signedness"
msgstr ""
-#: c-typeck.c:4228
+#: c-typeck.c:4217
#, c-format
msgid "%s from incompatible pointer type"
msgstr ""
-#: c-typeck.c:4244
+#: c-typeck.c:4233
#, c-format
msgid "%s makes pointer from integer without a cast"
msgstr ""
-#: c-typeck.c:4252
+#: c-typeck.c:4241
#, c-format
msgid "%s makes integer from pointer without a cast"
msgstr ""
-#: c-typeck.c:4264 c-typeck.c:4267
+#: c-typeck.c:4253 c-typeck.c:4256
#, c-format
msgid "incompatible type for argument %d of `%s'"
msgstr ""
-#: c-typeck.c:4271
+#: c-typeck.c:4260
#, c-format
msgid "incompatible type for argument %d of indirect function call"
msgstr ""
-#: c-typeck.c:4275
+#: c-typeck.c:4264
#, c-format
msgid "incompatible types in %s"
msgstr ""
#. Function name is known; supply it.
-#: c-typeck.c:4306
+#: c-typeck.c:4295
#, c-format
msgid "passing arg %d of `%s'"
msgstr ""
#. Function name unknown (call through ptr); just give arg number.
-#: c-typeck.c:4316
+#: c-typeck.c:4305
#, c-format
msgid "passing arg %d of pointer to function"
msgstr ""
-#: c-typeck.c:4383
+#: c-typeck.c:4372
msgid "initializer for static variable is not constant"
msgstr ""
-#: c-typeck.c:4389
+#: c-typeck.c:4378
msgid "initializer for static variable uses complicated arithmetic"
msgstr ""
-#: c-typeck.c:4397
+#: c-typeck.c:4386
msgid "aggregate initializer is not constant"
msgstr ""
-#: c-typeck.c:4399
+#: c-typeck.c:4388
msgid "aggregate initializer uses complicated arithmetic"
msgstr ""
-#: c-typeck.c:4563 c-typeck.c:4579 c-typeck.c:4595
+#: c-typeck.c:4395
+msgid "traditional C rejects automatic aggregate initialization"
+msgstr ""
+
+#: c-typeck.c:4556 c-typeck.c:4572 c-typeck.c:4588
#, c-format
msgid "(near initialization for `%s')"
msgstr ""
-#: c-typeck.c:4645 cp/typeck2.c:590
+#: c-typeck.c:4638 cp/typeck2.c:506
msgid "char-array initialized from wide string"
msgstr ""
-#: c-typeck.c:4652 cp/typeck2.c:597
+#: c-typeck.c:4645 cp/typeck2.c:513
msgid "int-array initialized from non-wide string"
msgstr ""
-#: c-typeck.c:4669 cp/typeck2.c:613
+#: c-typeck.c:4662 cp/typeck2.c:529
msgid "initializer-string for array of chars is too long"
msgstr ""
-#: c-typeck.c:4696
+#: c-typeck.c:4689
msgid "array initialized from non-constant array expression"
msgstr ""
-#: c-typeck.c:4713 c-typeck.c:4715 c-typeck.c:4721 c-typeck.c:4748
-#: c-typeck.c:5934
+#: c-typeck.c:4706 c-typeck.c:4708 c-typeck.c:4714 c-typeck.c:4741
+#: c-typeck.c:5927
msgid "initializer element is not constant"
msgstr ""
-#: c-typeck.c:4727 c-typeck.c:4754 c-typeck.c:5940
+#: c-typeck.c:4720 c-typeck.c:4747 c-typeck.c:5933
msgid "initializer element is not computable at load time"
msgstr ""
-#: c-typeck.c:4743
+#: c-typeck.c:4736
msgid "initialization"
msgstr ""
-#: c-typeck.c:4791 c-typeck.c:4807 cp/typeck2.c:689
+#: c-typeck.c:4784 c-typeck.c:4800 cp/typeck2.c:605
msgid "invalid initializer"
msgstr ""
-#: c-typeck.c:5271
+#: c-typeck.c:5264
msgid "extra brace group at end of initializer"
msgstr ""
-#: c-typeck.c:5283
+#: c-typeck.c:5276
msgid "missing braces around initializer"
msgstr ""
-#: c-typeck.c:5317
+#: c-typeck.c:5310
msgid "braces around scalar initializer"
msgstr ""
-#: c-typeck.c:5398
+#: c-typeck.c:5391
msgid "missing initializer"
msgstr ""
-#: c-typeck.c:5411
+#: c-typeck.c:5404
msgid "empty braces in initializer"
msgstr ""
-#: c-typeck.c:5461
+#: c-typeck.c:5454
msgid "empty scalar initializer"
msgstr ""
-#: c-typeck.c:5466
+#: c-typeck.c:5459
msgid "extra elements in scalar initializer"
msgstr ""
-#: c-typeck.c:5518
+#: c-typeck.c:5511
#, c-format
msgid "zero or negative array size `%s'"
msgstr ""
-#: c-typeck.c:5591 c-typeck.c:5593
+#: c-typeck.c:5584 c-typeck.c:5586
msgid "nonconstant array index in initializer"
msgstr ""
-#: c-typeck.c:5595
+#: c-typeck.c:5588
msgid "array index in non-array initializer"
msgstr ""
-#: c-typeck.c:5597
+#: c-typeck.c:5590
msgid "duplicate array index in initializer"
msgstr ""
-#: c-typeck.c:5603
+#: c-typeck.c:5596
msgid "empty index range in initializer"
msgstr ""
-#: c-typeck.c:5607
-msgid "ANSI C forbids specifying element to initialize"
+#: c-typeck.c:5600
+msgid "ISO C89 forbids specifying element to initialize"
msgstr ""
-#: c-typeck.c:5638
+#: c-typeck.c:5631
#, c-format
msgid "unknown field `%s' specified in initializer"
msgstr ""
-#: c-typeck.c:5641
+#: c-typeck.c:5634
#, c-format
msgid "field `%s' already initialized"
msgstr ""
-#: c-typeck.c:5647
-msgid "ANSI C forbids specifying structure member to initialize"
+#: c-typeck.c:5640
+msgid "ISO C89 forbids specifying structure member to initialize"
msgstr ""
-#: c-typeck.c:5956
+#: c-typeck.c:5949
msgid "duplicate initializer"
msgstr ""
-#: c-typeck.c:6280
+#: c-typeck.c:6273
msgid "excess elements in char array initializer"
msgstr ""
-#: c-typeck.c:6287 c-typeck.c:6322
+#: c-typeck.c:6280 c-typeck.c:6315
msgid "excess elements in struct initializer"
msgstr ""
-#: c-typeck.c:6389
+#: c-typeck.c:6382
msgid "excess elements in union initializer"
msgstr ""
-#: c-typeck.c:6459 c-typeck.c:6470
+#: c-typeck.c:6398
+msgid "traditional C rejects initialization of unions"
+msgstr ""
+
+#: c-typeck.c:6461 c-typeck.c:6472
msgid "excess elements in array initializer"
msgstr ""
-#: c-typeck.c:6509
+#: c-typeck.c:6511
msgid "excess elements in scalar initializer"
msgstr ""
-#: c-typeck.c:6543
+#: c-typeck.c:6545
msgid "asm template is not a string constant"
msgstr ""
-#: c-typeck.c:6567
+#: c-typeck.c:6569
msgid "invalid lvalue in asm statement"
msgstr ""
-#: c-typeck.c:6602
+#: c-typeck.c:6604
msgid "modification by `asm'"
msgstr ""
-#: c-typeck.c:6621 cp/typeck.c:6766
+#: c-typeck.c:6623 cp/typeck.c:6716
msgid "function declared `noreturn' has a `return' statement"
msgstr ""
-#: c-typeck.c:6628
-msgid "`return' with no value, in function returning non-void"
-msgstr ""
-
-#: c-typeck.c:6635
+#: c-typeck.c:6636
msgid "`return' with a value, in function returning void"
msgstr ""
@@ -2654,347 +2753,347 @@ msgstr ""
msgid "switch quantity not an integer"
msgstr ""
-#: c-typeck.c:6738
-msgid "`long' switch expression not converted to `int' in ANSI C"
+#: c-typeck.c:6737
+msgid "`long' switch expression not converted to `int' in ISO C"
msgstr ""
-#: calls.c:1857
+#: calls.c:1882
#, c-format
msgid "inlining failed in call to `%s'"
msgstr ""
-#: calls.c:1858 calls.c:2072
+#: calls.c:1883 calls.c:2196
msgid "called from here"
msgstr ""
-#: calls.c:2071
+#: calls.c:2195
#, c-format
msgid "can't inline call to `%s'"
msgstr ""
-#: calls.c:2104
+#: calls.c:2233
msgid "function call has aggregate value"
msgstr ""
-#: collect2.c:455
+#: collect2.c:448
msgid "internal error"
msgstr ""
-#: collect2.c:939
+#: collect2.c:929
msgid "no arguments"
msgstr ""
-#: collect2.c:1302 collect2.c:1470 collect2.c:1514
+#: collect2.c:1267 collect2.c:1415 collect2.c:1459
#, c-format
msgid "fopen %s"
msgstr ""
-#: collect2.c:1305 collect2.c:1322 collect2.c:1475 collect2.c:1517
+#: collect2.c:1270 collect2.c:1420 collect2.c:1462
#, c-format
msgid "fclose %s"
msgstr ""
-#: collect2.c:1331
+#: collect2.c:1279
#, c-format
msgid "collect2 version %s"
msgstr ""
-#: collect2.c:1423
+#: collect2.c:1369
#, c-format
msgid "%d constructor(s) found\n"
msgstr ""
-#: collect2.c:1424
+#: collect2.c:1370
#, c-format
msgid "%d destructor(s) found\n"
msgstr ""
-#: collect2.c:1425
+#: collect2.c:1371
#, c-format
msgid "%d frame table(s) found\n"
msgstr ""
-#: collect2.c:1579
+#: collect2.c:1523
#, c-format
msgid "%s terminated with signal %d [%s]%s"
msgstr ""
-#: collect2.c:1598
+#: collect2.c:1542
#, c-format
msgid "%s returned %d exit status"
msgstr ""
-#: collect2.c:1626
+#: collect2.c:1570
#, c-format
msgid "[cannot find %s]"
msgstr ""
-#: collect2.c:1641
+#: collect2.c:1585
#, c-format
msgid "cannot find `%s'"
msgstr ""
-#: collect2.c:1652 collect2.c:1655
+#: collect2.c:1596 collect2.c:1599
#, c-format
msgid "redirecting stdout: %s"
msgstr ""
-#: collect2.c:1698
+#: collect2.c:1642
#, c-format
msgid "[Leaving %s]\n"
msgstr ""
-#: collect2.c:1921
+#: collect2.c:1865
#, c-format
msgid ""
"\n"
"write_c_file - output name is %s, prefix is %s\n"
msgstr ""
-#: collect2.c:2139
+#: collect2.c:2083
msgid "cannot find `nm'"
msgstr ""
-#: collect2.c:2149 collect2.c:2591
+#: collect2.c:2093 collect2.c:2535
msgid "pipe"
msgstr ""
-#: collect2.c:2153 collect2.c:2595
+#: collect2.c:2097 collect2.c:2539
msgid "fdopen"
msgstr ""
-#: collect2.c:2179 collect2.c:2621
+#: collect2.c:2123 collect2.c:2565
#, c-format
msgid "dup2 %d 1"
msgstr ""
-#: collect2.c:2182 collect2.c:2185 collect2.c:2198 collect2.c:2624
-#: collect2.c:2627 collect2.c:2640
+#: collect2.c:2126 collect2.c:2129 collect2.c:2142 collect2.c:2568
+#: collect2.c:2571 collect2.c:2584
#, c-format
msgid "close %d"
msgstr ""
-#: collect2.c:2188
+#: collect2.c:2132
#, c-format
msgid "execvp %s"
msgstr ""
-#: collect2.c:2242
+#: collect2.c:2186
#, c-format
msgid "init function found in object %s"
msgstr ""
-#: collect2.c:2250
+#: collect2.c:2194
#, c-format
msgid "fini function found in object %s"
msgstr ""
-#: collect2.c:2273 collect2.c:2679
+#: collect2.c:2217 collect2.c:2623
msgid "fclose"
msgstr ""
-#: collect2.c:2318
+#: collect2.c:2262
#, c-format
msgid "unable to open file '%s'"
msgstr ""
-#: collect2.c:2320
+#: collect2.c:2264
#, c-format
msgid "unable to stat file '%s'"
msgstr ""
-#: collect2.c:2326
+#: collect2.c:2270
#, c-format
msgid "unable to mmap file '%s'"
msgstr ""
-#: collect2.c:2479
+#: collect2.c:2423
msgid "not found\n"
msgstr ""
-#: collect2.c:2481 collect2.c:2658
+#: collect2.c:2425 collect2.c:2602
#, c-format
msgid "dynamic dependency %s not found"
msgstr ""
-#: collect2.c:2501
+#: collect2.c:2445
#, c-format
msgid "bad magic number in file '%s'"
msgstr ""
-#: collect2.c:2523
+#: collect2.c:2467
msgid "dynamic dependencies.\n"
msgstr ""
-#: collect2.c:2582
+#: collect2.c:2526
msgid "cannot find `ldd'"
msgstr ""
-#: collect2.c:2630
+#: collect2.c:2574
#, c-format
msgid "execv %s"
msgstr ""
-#: collect2.c:2643
+#: collect2.c:2587
msgid ""
"\n"
"ldd output with constructors/destructors.\n"
msgstr ""
-#: collect2.c:2670
+#: collect2.c:2614
#, c-format
msgid "unable to open dynamic dependency '%s'"
msgstr ""
-#: collect2.c:2776
+#: collect2.c:2716
#, c-format
msgid "%s: not a COFF file"
msgstr ""
-#: collect2.c:2943
+#: collect2.c:2835
#, c-format
msgid "%s: cannot open as COFF file"
msgstr ""
-#: collect2.c:3018
+#: collect2.c:2891
#, c-format
msgid "Library lib%s not found"
msgstr ""
-#: collect2.c:3142
+#: collect2.c:3014
#, c-format
msgid "open %s"
msgstr ""
-#: collect2.c:3165
+#: collect2.c:3037
msgid "incompatibilities between object file & expected values"
msgstr ""
-#: collect2.c:3238
+#: collect2.c:3110
#, c-format
msgid ""
"\n"
"Processing symbol table #%d, offset = 0x%.8lx, kind = %s\n"
msgstr ""
-#: collect2.c:3247
+#: collect2.c:3119
msgid "string section missing"
msgstr ""
-#: collect2.c:3250
+#: collect2.c:3122
msgid "section pointer missing"
msgstr ""
-#: collect2.c:3298
+#: collect2.c:3170
msgid "no symbol table found"
msgstr ""
-#: collect2.c:3311
+#: collect2.c:3183
msgid "no cmd_strings found"
msgstr ""
-#: collect2.c:3323
+#: collect2.c:3195
msgid ""
"\n"
"Updating header and load commands.\n"
"\n"
msgstr ""
-#: collect2.c:3330
+#: collect2.c:3202
#, c-format
msgid "load command map, %d cmds, new size %ld.\n"
msgstr ""
-#: collect2.c:3361
+#: collect2.c:3233
msgid ""
"writing load commands.\n"
"\n"
msgstr ""
-#: collect2.c:3381
+#: collect2.c:3253
#, c-format
msgid "close %s"
msgstr ""
-#: collect2.c:3455
+#: collect2.c:3327
msgid "could not convert 0x%l.8x into a region"
msgstr ""
-#: collect2.c:3459
+#: collect2.c:3331
#, c-format
msgid "%s function, region %d, offset = %ld (0x%.8lx)\n"
msgstr ""
-#: collect2.c:3586
+#: collect2.c:3458
msgid "bad magic number"
msgstr ""
-#: collect2.c:3587
+#: collect2.c:3459
msgid "bad header version"
msgstr ""
-#: collect2.c:3588
+#: collect2.c:3460
msgid "bad raw header version"
msgstr ""
-#: collect2.c:3589
+#: collect2.c:3461
msgid "raw header buffer too small"
msgstr ""
-#: collect2.c:3590
+#: collect2.c:3462
msgid "old raw header file"
msgstr ""
-#: collect2.c:3591
+#: collect2.c:3463
msgid "unsupported version"
msgstr ""
-#: collect2.c:3593
+#: collect2.c:3465
#, c-format
msgid "unknown {de,en}code_mach_o_hdr return value %d"
msgstr ""
-#: collect2.c:3613
+#: collect2.c:3485
#, c-format
msgid "fstat %s"
msgstr ""
-#: collect2.c:3650 collect2.c:3698
+#: collect2.c:3522 collect2.c:3570
#, c-format
msgid "lseek %s 0"
msgstr ""
-#: collect2.c:3654
+#: collect2.c:3526
#, c-format
msgid "read %s"
msgstr ""
-#: collect2.c:3657
+#: collect2.c:3529
#, c-format
msgid "read %ld bytes, expected %ld, from %s"
msgstr ""
-#: collect2.c:3678
+#: collect2.c:3550
#, c-format
msgid "msync %s"
msgstr ""
-#: collect2.c:3685
+#: collect2.c:3557
#, c-format
msgid "munmap %s"
msgstr ""
-#: collect2.c:3702
+#: collect2.c:3574
#, c-format
msgid "write %s"
msgstr ""
-#: collect2.c:3705
+#: collect2.c:3577
#, c-format
msgid "wrote %ld bytes, expected %ld, to %s"
msgstr ""
-#: combine.c:12605
+#: combine.c:12664
#, c-format
msgid ""
";; Combiner statistics: %d attempts, %d substitutions (%d requiring new "
@@ -3003,7 +3102,7 @@ msgid ""
"\n"
msgstr ""
-#: combine.c:12615
+#: combine.c:12674
#, c-format
msgid ""
"\n"
@@ -3022,19 +3121,19 @@ msgid "invalid %%C value"
msgstr ""
#: config/a29k/a29k.c:1019 config/alpha/alpha.c:3510
-#: config/rs6000/rs6000.c:3621
+#: config/rs6000/rs6000.c:3986
#, ycp-format
msgid "invalid %%N value"
msgstr ""
#: config/a29k/a29k.c:1025 config/alpha/alpha.c:3581
-#: config/rs6000/rs6000.c:3583
+#: config/rs6000/rs6000.c:3948
#, ycp-format
msgid "invalid %%M value"
msgstr ""
#: config/a29k/a29k.c:1031 config/alpha/alpha.c:3573
-#: config/rs6000/rs6000.c:3548
+#: config/rs6000/rs6000.c:3913
#, ycp-format
msgid "invalid %%m value"
msgstr ""
@@ -3044,13 +3143,13 @@ msgstr ""
msgid "invalid %%L value"
msgstr ""
-#: config/a29k/a29k.c:1136 config/rs6000/rs6000.c:3629
+#: config/a29k/a29k.c:1136 config/rs6000/rs6000.c:3994
#, ycp-format
msgid "invalid %%O value"
msgstr ""
#: config/a29k/a29k.c:1142 config/alpha/alpha.c:3518
-#: config/rs6000/rs6000.c:3648
+#: config/rs6000/rs6000.c:4013
#, ycp-format
msgid "invalid %%P value"
msgstr ""
@@ -3128,7 +3227,7 @@ msgstr ""
msgid "Do not store locals in arg registers"
msgstr ""
-#: config/a29k/a29k.h:118 config/i960/i960.h:281 config/mips/mips.h:373
+#: config/a29k/a29k.h:118 config/i960/i960.h:284 config/mips/mips.h:375
msgid "Use software floating point"
msgstr ""
@@ -3183,7 +3282,7 @@ msgstr ""
msgid "invalid %%r value"
msgstr ""
-#: config/alpha/alpha.c:3503 config/rs6000/rs6000.c:3692
+#: config/alpha/alpha.c:3503 config/rs6000/rs6000.c:4059
#, ycp-format
msgid "invalid %%R value"
msgstr ""
@@ -3199,18 +3298,18 @@ msgid "invalid %%U value"
msgstr ""
#: config/alpha/alpha.c:3624 config/alpha/alpha.c:3635 config/romp/romp.c:691
-#: config/rs6000/rs6000.c:3700
+#: config/rs6000/rs6000.c:4067
#, ycp-format
msgid "invalid %%s value"
msgstr ""
-#: config/alpha/alpha.c:3683 config/rs6000/rs6000.c:3412
+#: config/alpha/alpha.c:3683 config/rs6000/rs6000.c:3777
#, ycp-format
msgid "invalid %%E value"
msgstr ""
#: config/alpha/alpha.c:3704 config/romp/romp.c:966
-#: config/rs6000/rs6000.c:3952
+#: config/rs6000/rs6000.c:4359
#, ycp-format
msgid "invalid %%xn code"
msgstr ""
@@ -3355,222 +3454,222 @@ msgstr ""
msgid "invalid operand output code"
msgstr ""
-#: config/arm/arm.c:339
+#: config/arm/arm.c:340
#, c-format
msgid "switch -mcpu=%s conflicts with -march= switch"
msgstr ""
-#: config/arm/arm.c:349 config/rs6000/rs6000.c:315 config/sparc/sparc.c:332
+#: config/arm/arm.c:350 config/rs6000/rs6000.c:310 config/sparc/sparc.c:332
#, c-format
msgid "bad value (%s) for %s switch"
msgstr ""
-#: config/arm/arm.c:484
+#: config/arm/arm.c:485
msgid "target CPU does not support APCS-32"
msgstr ""
-#: config/arm/arm.c:489
+#: config/arm/arm.c:490
msgid "target CPU does not support APCS-26"
msgstr ""
-#: config/arm/arm.c:495
+#: config/arm/arm.c:496
msgid "target CPU does not support interworking"
msgstr ""
-#: config/arm/arm.c:501
+#: config/arm/arm.c:502
msgid "target CPU does not supoport THUMB instructions."
msgstr ""
-#: config/arm/arm.c:515
+#: config/arm/arm.c:516
msgid ""
"enabling backtrace support is only meaningful when compiling for the Thumb."
msgstr ""
-#: config/arm/arm.c:518
+#: config/arm/arm.c:519
msgid ""
"enabling callee interworking support is only meaningful when compiling for "
"the Thumb."
msgstr ""
-#: config/arm/arm.c:521
+#: config/arm/arm.c:522
msgid ""
"enabling caller interworking support is only meaningful when compiling for "
"the Thumb."
msgstr ""
-#: config/arm/arm.c:527
+#: config/arm/arm.c:528
msgid "interworking forces APCS-32 to be used"
msgstr ""
-#: config/arm/arm.c:533
+#: config/arm/arm.c:534
msgid "-mapcs-stack-check incompatible with -mno-apcs-frame"
msgstr ""
-#: config/arm/arm.c:541
+#: config/arm/arm.c:542
msgid "-fpic and -mapcs-reent are incompatible"
msgstr ""
-#: config/arm/arm.c:544
+#: config/arm/arm.c:545
msgid "APCS reentrant code not supported. Ignored"
msgstr ""
-#: config/arm/arm.c:552
+#: config/arm/arm.c:553
msgid "-g with -mno-apcs-frame may not give sensible debugging"
msgstr ""
-#: config/arm/arm.c:560
+#: config/arm/arm.c:561
msgid "Passing floating point arguments in fp regs not yet supported"
msgstr ""
-#: config/arm/arm.c:587
+#: config/arm/arm.c:588
#, c-format
msgid "Invalid floating point emulation option: -mfpe-%s"
msgstr ""
-#: config/arm/arm.c:611
+#: config/arm/arm.c:612
msgid "Structure size boundary can only be set to 8 or 32"
msgstr ""
-#: config/arm/arm.c:619
+#: config/arm/arm.c:620
msgid "-mpic-register= is useless without -fpic"
msgstr ""
-#: config/arm/arm.c:628
+#: config/arm/arm.c:629
#, c-format
msgid "Unable to use '%s' for PIC register"
msgstr ""
-#: config/arm/arm.c:8105
+#: config/arm/arm.c:8246
msgid "Unable to compute real location of stacked parameter"
msgstr ""
#. Oh dear! We have no low registers into which we can pop
#. high registers!
-#: config/arm/arm.c:8704
+#: config/arm/arm.c:8844
msgid "No low registers available for popping high registers"
msgstr ""
-#: config/arm/arm.c:9266
+#: config/arm/arm.c:9406
msgid "thumb_load_double_from_address: destination is not a register"
msgstr ""
-#: config/arm/arm.c:9271
+#: config/arm/arm.c:9411
msgid "thumb_load_double_from_address: source is not a computed memory address"
msgstr ""
-#: config/arm/arm.c:9315
+#: config/arm/arm.c:9455
msgid "thumb_load_double_from_address: base is not a register"
msgstr ""
-#: config/arm/arm.c:9373
+#: config/arm/arm.c:9513
msgid "thumb_load_double_from_address: Unhandled address calculation"
msgstr ""
-#: config/arm/arm.h:394
+#: config/arm/arm.h:410
msgid "Generate APCS conformant stack frames"
msgstr ""
-#: config/arm/arm.h:397
+#: config/arm/arm.h:413
msgid "Store function names in object code"
msgstr ""
-#: config/arm/arm.h:401
+#: config/arm/arm.h:417
msgid "Use the 32bit version of the APCS"
msgstr ""
-#: config/arm/arm.h:403
+#: config/arm/arm.h:419
msgid "Use the 26bit version of the APCS"
msgstr ""
-#: config/arm/arm.h:407
+#: config/arm/arm.h:423
msgid "Pass FP arguments in FP registers"
msgstr ""
-#: config/arm/arm.h:410
+#: config/arm/arm.h:426
msgid "Generate re-entrant, PIC code"
msgstr ""
-#: config/arm/arm.h:413
+#: config/arm/arm.h:429
msgid "The MMU will trap on unaligned accesses"
msgstr ""
-#: config/arm/arm.h:420
+#: config/arm/arm.h:436
msgid "Use library calls to perform FP operations"
msgstr ""
-#: config/arm/arm.h:422 config/i960/i960.h:279
+#: config/arm/arm.h:438 config/i960/i960.h:282
msgid "Use hardware floating point instructions"
msgstr ""
-#: config/arm/arm.h:424
+#: config/arm/arm.h:440
msgid "Assume target CPU is configured as big endian"
msgstr ""
-#: config/arm/arm.h:426
+#: config/arm/arm.h:442
msgid "Assume target CPU is configured as little endian"
msgstr ""
-#: config/arm/arm.h:428
+#: config/arm/arm.h:444
msgid "Assume big endian bytes, little endian words"
msgstr ""
-#: config/arm/arm.h:430
+#: config/arm/arm.h:446
msgid "Support calls between THUMB and ARM instructions sets"
msgstr ""
-#: config/arm/arm.h:433
+#: config/arm/arm.h:449
msgid "Generate a call to abort if a noreturn function returns"
msgstr ""
-#: config/arm/arm.h:436
+#: config/arm/arm.h:452
msgid "Do not move instructions into a function's prologue"
msgstr ""
-#: config/arm/arm.h:439
+#: config/arm/arm.h:455
msgid "Do not load the PIC register in function prologues"
msgstr ""
-#: config/arm/arm.h:442
+#: config/arm/arm.h:458
msgid "Generate call insns as indirect calls, if necessary"
msgstr ""
-#: config/arm/arm.h:445
+#: config/arm/arm.h:461
msgid "Compile for the Thumb not the ARM"
msgstr ""
-#: config/arm/arm.h:449
+#: config/arm/arm.h:465
msgid "Thumb: Generate (non-leaf) stack frames even if not needed"
msgstr ""
-#: config/arm/arm.h:452
+#: config/arm/arm.h:468
msgid "Thumb: Generate (leaf) stack frames even if not needed"
msgstr ""
-#: config/arm/arm.h:455
+#: config/arm/arm.h:471
msgid "Thumb: Assume non-static functions may be called from ARM code"
msgstr ""
-#: config/arm/arm.h:459
+#: config/arm/arm.h:475
msgid "Thumb: Assume function pointers may go to non-Thumb aware code"
msgstr ""
-#: config/arm/arm.h:469
+#: config/arm/arm.h:485
msgid "Specify the name of the target CPU"
msgstr ""
-#: config/arm/arm.h:471
+#: config/arm/arm.h:487
msgid "Specify the name of the target architecture"
msgstr ""
-#: config/arm/arm.h:475
+#: config/arm/arm.h:491
msgid "Specify the version of the floating point emulator"
msgstr ""
-#: config/arm/arm.h:477
+#: config/arm/arm.h:493
msgid "Specify the minimum bit alignment of structures"
msgstr ""
-#: config/arm/arm.h:479
+#: config/arm/arm.h:495
msgid "Specify the register to be used for PIC addressing"
msgstr ""
@@ -3747,7 +3846,9 @@ msgstr ""
msgid "Generate code for a mc68020"
msgstr ""
-#: config/fx80/fx80.h:115 config/ns32k/ns32k.h:117
+#. Since we don't define PCC_BITFIELD_TYPE_MATTERS or use a large
+#. STRUCTURE_SIZE_BOUNDARY, we must have bitfield instructions.
+#: config/fx80/fx80.h:115 config/gmicro/gmicro.h:101 config/ns32k/ns32k.h:117
msgid "Use bitfield instructions"
msgstr ""
@@ -3771,7 +3872,60 @@ msgstr ""
msgid "Use 32bit integers"
msgstr ""
-#: config/h8300/h8300.c:2946 config/h8300/h8300.c:2958
+#. Macro to define tables used to set the flags.
+#. This is a list in braces of pairs in braces,
+#. each pair being { "NAME", VALUE }
+#. where VALUE is the bits to set or minus the bits to clear.
+#. An empty string NAME is used to identify the default VALUE.
+#: config/gmicro/gmicro.h:89
+msgid "Compile for Gmicro/300"
+msgstr ""
+
+#: config/gmicro/gmicro.h:90
+msgid "Compile for Gmicro/200"
+msgstr ""
+
+#: config/gmicro/gmicro.h:91
+msgid "Compile for Gmicro/100"
+msgstr ""
+
+#: config/gmicro/gmicro.h:92
+msgid "Use floating point co-processor"
+msgstr ""
+
+#: config/gmicro/gmicro.h:94
+msgid "Do not use floating point co-processor"
+msgstr ""
+
+#: config/gmicro/gmicro.h:95 config/i386/i386.h:237
+msgid "Alternate calling convention"
+msgstr ""
+
+#: config/gmicro/gmicro.h:96 config/i386/i386.h:239 config/ns32k/ns32k.h:106
+msgid "Use normal calling convention"
+msgstr ""
+
+#: config/gmicro/gmicro.h:103 config/ns32k/ns32k.h:116
+msgid "Do not use bitfield instructions"
+msgstr ""
+
+#: config/gmicro/gmicro.h:105
+msgid "Use alternative return sequence"
+msgstr ""
+
+#: config/gmicro/gmicro.h:106
+msgid "Use normal return sequence"
+msgstr ""
+
+#: config/gmicro/gmicro.h:107
+msgid "Always use string instruction"
+msgstr ""
+
+#: config/gmicro/gmicro.h:109
+msgid "Use string instruction when appropriate"
+msgstr ""
+
+#: config/h8300/h8300.c:3023 config/h8300/h8300.c:3035
msgid "Only initialized variables can be placed into the 8-bit area."
msgstr ""
@@ -3780,56 +3934,60 @@ msgstr ""
#. each pair being { "NAME", VALUE }
#. where VALUE is the bits to set or minus the bits to clear.
#. An empty string NAME is used to identify the default VALUE.
-#: config/h8300/h8300.h:102
+#: config/h8300/h8300.h:105
msgid "Generate H8/S code"
msgstr ""
-#: config/h8300/h8300.h:103
+#: config/h8300/h8300.h:106
msgid "Do not generate H8/S code"
msgstr ""
-#: config/h8300/h8300.h:104
+#: config/h8300/h8300.h:107
msgid "Make integers 32 bits wide"
msgstr ""
-#: config/h8300/h8300.h:107
+#: config/h8300/h8300.h:110
msgid "Use registers for argument passing"
msgstr ""
-#: config/h8300/h8300.h:109
+#: config/h8300/h8300.h:112
msgid "Do not use registers for argument passing"
msgstr ""
-#: config/h8300/h8300.h:111
+#: config/h8300/h8300.h:114
msgid "Consider access to byte sized memory slow"
msgstr ""
-#: config/h8300/h8300.h:112
+#: config/h8300/h8300.h:115
msgid "Enable linker relaxing"
msgstr ""
-#: config/h8300/h8300.h:114
+#: config/h8300/h8300.h:117
msgid "Generate H8/300H code"
msgstr ""
-#: config/h8300/h8300.h:115
+#: config/h8300/h8300.h:118
msgid "Do not generate H8/300H code"
msgstr ""
-#: config/h8300/h8300.h:116
+#: config/h8300/h8300.h:119
msgid "Use H8/300 alignment rules"
msgstr ""
-#: config/i370/i370.c:1007
-msgid "Escape value out of range"
+#: config/i370/i370.c:870
+msgid "real name is too long - alias ignored"
msgstr ""
-#: config/i370/i370.c:1020
-msgid "#pragma map alias is too long, truncated"
+#: config/i370/i370.c:875
+msgid "alias name is too long - alias ignored"
msgstr ""
-#: config/i370/i370.c:1044
-msgid "#pragma map options are missing or incorrect"
+#: config/i370/i370.c:1040
+msgid "junk at end of #pragma map"
+msgstr ""
+
+#: config/i370/i370.c:1046
+msgid "malformed #pragma map, ignored"
msgstr ""
#. Macro to define tables used to set the flags. This is a list in braces
@@ -3910,77 +4068,69 @@ msgstr ""
msgid "argument is a structure"
msgstr ""
-#: config/i386/djgpp.h:225
-msgid ""
-"Enable weak symbol and enhanced C++ template support. Binutils 2.9.5.1 or "
-"higher required."
-msgstr ""
-
-#: config/i386/djgpp.h:226
-msgid "Disable weak symbol and enhanced C++ template support."
-msgstr ""
-
-#: config/i386/i386.c:512
+#: config/i386/i386.c:503
#, c-format
msgid "bad value (%s) for -march= switch"
msgstr ""
-#: config/i386/i386.c:525 config/mips/mips.c:4864
+#: config/i386/i386.c:516 config/mips/mips.c:4865
#, c-format
msgid "bad value (%s) for -mcpu= switch"
msgstr ""
-#: config/i386/i386.c:554
+#: config/i386/i386.c:545
#, c-format
msgid "Register '%c' is unknown"
msgstr ""
-#: config/i386/i386.c:558
+#: config/i386/i386.c:549
#, c-format
msgid "Register '%c' already specified in allocation order"
msgstr ""
-#: config/i386/i386.c:569
+#: config/i386/i386.c:560
#, c-format
msgid "-mregparm=%d is not between 0 and %d"
msgstr ""
-#: config/i386/i386.c:579
+#: config/i386/i386.c:570
#, c-format
msgid "-malign-loops=%d is not between 0 and %d"
msgstr ""
-#: config/i386/i386.c:589
+#: config/i386/i386.c:580
#, c-format
msgid "-malign-jumps=%d is not between 0 and %d"
msgstr ""
-#: config/i386/i386.c:599
+#: config/i386/i386.c:590
#, c-format
msgid "-malign-functions=%d is not between 0 and %d"
msgstr ""
-#: config/i386/i386.c:610
+#: config/i386/i386.c:601
#, c-format
msgid "-mpreferred-stack-boundary=%d is not between 2 and 31"
msgstr ""
-#: config/i386/i386.c:620
+#: config/i386/i386.c:611
#, c-format
msgid "-mbranch-cost=%d is not between 0 and 5"
msgstr ""
#. We can't handle floating point constants;
#. PRINT_OPERAND must handle them.
-#: config/i386/i386.c:2914 config/pdp11/pdp11.c:1478 final.c:3704
+#: config/i386/i386.c:2973 config/pdp11/pdp11.c:1477 config/sh/sh.c:5397
+#: final.c:3731
msgid "floating constant misused"
msgstr ""
-#: config/i386/i386.c:2959
+#: config/i386/i386.c:3018 config/sh/sh.c:5451
msgid "invalid UNSPEC as operand"
msgstr ""
-#: config/i386/i386.c:2965 config/pdp11/pdp11.c:1525 final.c:3751
+#: config/i386/i386.c:3024 config/pdp11/pdp11.c:1524 config/sh/sh.c:5457
+#: final.c:3778
msgid "invalid expression as operand"
msgstr ""
@@ -4004,14 +4154,6 @@ msgstr ""
msgid "Same as -mcpu=pentiumpro"
msgstr ""
-#: config/i386/i386.h:237
-msgid "Alternate calling convention"
-msgstr ""
-
-#: config/i386/i386.h:239 config/ns32k/ns32k.h:106
-msgid "Use normal calling convention"
-msgstr ""
-
#: config/i386/i386.h:241
msgid "Align some doubles on dword boundary"
msgstr ""
@@ -4189,7 +4331,7 @@ msgstr ""
msgid "Use mcount_ptr for profiling"
msgstr ""
-#: config/i386/sco5.h:503 config/rs6000/sysv4.h:962
+#: config/i386/sco5.h:503 config/rs6000/sysv4.h:997
#, c-format
msgid "%s causes a section type conflict"
msgstr ""
@@ -4217,6 +4359,22 @@ msgstr ""
msgid "static variable `%s' is marked dllimport"
msgstr ""
+#. If the environment variable DJDIR is not defined, then DJGPP is not installed correctly and GCC will quickly become confused with the default prefix settings. Report the problem now so the user doesn't receive deceptive "file not found" error messages later.
+#. DJDIR is automatically defined by the DJGPP environment config file pointed to by the environment variable DJGPP. Examine DJGPP to try and figure out what's wrong.
+#: config/i386/xm-djgpp.h:75
+msgid "Environment variable DJGPP not defined."
+msgstr ""
+
+#: config/i386/xm-djgpp.h:77
+#, c-format
+msgid "Environment variable DJGPP points to missing file '%s'."
+msgstr ""
+
+#: config/i386/xm-djgpp.h:80
+#, c-format
+msgid "Environment variable DJGPP points to corrupt file '%s'."
+msgstr ""
+
#. Macro to define tables used to set the flags.
#. This is a list in braces of pairs in braces,
#. each pair being { "NAME", VALUE }
@@ -4231,7 +4389,19 @@ msgstr ""
msgid "Do not generate code which uses the FPU"
msgstr ""
-#: config/i960/i960.c:1467 config/m68k/m68k.c:406 config/rs6000/rs6000.c:4894
+#: config/i960/i960.c:124
+msgid "sorry, not implemented: #pragma align NAME=SIZE"
+msgstr ""
+
+#: config/i960/i960.c:129
+msgid "malformed #pragma align - ignored"
+msgstr ""
+
+#: config/i960/i960.c:167
+msgid "sorry, not implemented: #pragma noalign NAME"
+msgstr ""
+
+#: config/i960/i960.c:1515 config/m68k/m68k.c:406 config/rs6000/rs6000.c:5410
msgid "stack limit expression is not supported"
msgstr ""
@@ -4242,143 +4412,144 @@ msgstr ""
#. An empty string NAME is used to identify the default VALUE.
#. ??? Not all ten of these architecture variations actually exist, but I
#. am not sure which are real and which aren't.
-#: config/i960/i960.h:238
+#: config/i960/i960.h:241
msgid "Generate SA code"
msgstr ""
-#: config/i960/i960.h:241
+#: config/i960/i960.h:244
msgid "Generate SB code"
msgstr ""
#. {"sc", (TARGET_FLAG_NUMERICS|TARGET_FLAG_PROTECTED| TARGET_FLAG_MC|TARGET_FLAG_COMPLEX_ADDR), N_("Generate SC code")},
-#: config/i960/i960.h:246
+#: config/i960/i960.h:249
msgid "Generate KA code"
msgstr ""
-#: config/i960/i960.h:249
+#: config/i960/i960.h:252
msgid "Generate KB code"
msgstr ""
#. {"kc", (TARGET_FLAG_NUMERICS|TARGET_FLAG_PROTECTED| TARGET_FLAG_MC|TARGET_FLAG_COMPLEX_ADDR), N_("Generate KC code")},
-#: config/i960/i960.h:254
+#: config/i960/i960.h:257
msgid "Generate JA code"
msgstr ""
-#: config/i960/i960.h:256
+#: config/i960/i960.h:259
msgid "Generate JD code"
msgstr ""
-#: config/i960/i960.h:259
+#: config/i960/i960.h:262
msgid "Generate JF code"
msgstr ""
-#: config/i960/i960.h:261
+#: config/i960/i960.h:264
msgid "generate RP code"
msgstr ""
-#: config/i960/i960.h:264
+#: config/i960/i960.h:267
msgid "Generate MC code"
msgstr ""
-#: config/i960/i960.h:267
+#: config/i960/i960.h:270
msgid "Generate CA code"
msgstr ""
#. {"cb", (TARGET_FLAG_NUMERICS|TARGET_FLAG_C_SERIES| TARGET_FLAG_BRANCH_PREDICT|TARGET_FLAG_CODE_ALIGN), N_("Generate CB code")}, {"cc", (TARGET_FLAG_NUMERICS|TARGET_FLAG_PROTECTED| TARGET_FLAG_C_SERIES|TARGET_FLAG_BRANCH_PREDICT| TARGET_FLAG_CODE_ALIGN), N_("Generate CC code")},
-#: config/i960/i960.h:277
+#: config/i960/i960.h:280
msgid "Generate CF code"
msgstr ""
-#: config/i960/i960.h:283
+#: config/i960/i960.h:286
msgid "Use alternate leaf function entries"
msgstr ""
-#: config/i960/i960.h:285
+#: config/i960/i960.h:288
msgid "Do not use alternate leaf function entries"
msgstr ""
-#: config/i960/i960.h:287
+#: config/i960/i960.h:290
msgid "Perform tail call optimization"
msgstr ""
-#: config/i960/i960.h:289
+#: config/i960/i960.h:292
msgid "Do not perform tail call optimization"
msgstr ""
-#: config/i960/i960.h:291
+#: config/i960/i960.h:294
msgid "Use complex addressing modes"
msgstr ""
-#: config/i960/i960.h:293
+#: config/i960/i960.h:296
msgid "Do not use complex addressing modes"
msgstr ""
-#: config/i960/i960.h:295
+#: config/i960/i960.h:298
msgid "Align code to 8 byte boundary"
msgstr ""
-#: config/i960/i960.h:297
+#: config/i960/i960.h:300
msgid "Do not align code to 8 byte boundary"
msgstr ""
#. {"clean-linkage", (TARGET_FLAG_CLEAN_LINKAGE), N_("Force use of prototypes")}, {"no-clean-linkage", -(TARGET_FLAG_CLEAN_LINKAGE), N_("Do not force use of prototypes")},
-#: config/i960/i960.h:303 config/i960/i960.h:305
+#: config/i960/i960.h:306 config/i960/i960.h:308
msgid "Enable compatibility with iC960 v2.0"
msgstr ""
-#: config/i960/i960.h:307
+#: config/i960/i960.h:310
msgid "Enable compatibility with iC960 v3.0"
msgstr ""
-#: config/i960/i960.h:309 config/i960/i960.h:311
+#: config/i960/i960.h:312 config/i960/i960.h:314
msgid "Enable compatibility with ic960 assembler"
msgstr ""
-#: config/i960/i960.h:313
+#: config/i960/i960.h:316
msgid "Do not permit unaligned accesses"
msgstr ""
-#: config/i960/i960.h:315
+#: config/i960/i960.h:318
msgid "Permit unaligned accesses"
msgstr ""
-#: config/i960/i960.h:317
+#: config/i960/i960.h:320
msgid "Layout types like Intel's v1.3 gcc"
msgstr ""
-#: config/i960/i960.h:319
+#: config/i960/i960.h:322
msgid "Do not layout types like Intel's v1.3 gcc"
msgstr ""
-#: config/i960/i960.h:321 config/sparc/linux.h:92 config/sparc/linux64.h:148
+#: config/i960/i960.h:324 config/rs6000/sysv4.h:132 config/sparc/linux.h:92
+#: config/sparc/linux64.h:148
msgid "Use 64 bit long doubles"
msgstr ""
-#: config/i960/i960.h:323
+#: config/i960/i960.h:326
msgid "Enable linker relaxation"
msgstr ""
-#: config/i960/i960.h:325
+#: config/i960/i960.h:328
msgid "Do not enable linker relaxation"
msgstr ""
#. Override conflicting target switch options.
#. Doesn't actually detect if more than one -mARCH option is given, but
#. does handle the case of two blatantly conflicting -mARCH options.
-#: config/i960/i960.h:340 config/i960/i960.h:350
+#: config/i960/i960.h:343 config/i960/i960.h:353
msgid "conflicting architectures defined - using C series"
msgstr ""
-#: config/i960/i960.h:345
+#: config/i960/i960.h:348
msgid "conflicting architectures defined - using K series"
msgstr ""
-#: config/i960/i960.h:360
+#: config/i960/i960.h:363
msgid "iC2.0 and iC3.0 are incompatible - using iC3.0"
msgstr ""
#. ??? See the LONG_DOUBLE_TYPE_SIZE definition below.
-#: config/i960/i960.h:371
+#: config/i960/i960.h:374
msgid "The -mlong-double-64 option does not work yet."
msgstr ""
@@ -4590,125 +4761,125 @@ msgstr ""
msgid "-mshort-data-%s and PIC are incompatible"
msgstr ""
-#: config/mips/mips.c:4665
+#: config/mips/mips.c:4667
#, c-format
msgid "-mips%d not supported"
msgstr ""
-#: config/mips/mips.c:4672
+#: config/mips/mips.c:4674
#, c-format
msgid "bad value (%s) for -mips switch"
msgstr ""
-#: config/mips/mips.c:4691
+#: config/mips/mips.c:4693
#, c-format
msgid "bad value (%s) for -mabi= switch"
msgstr ""
-#: config/mips/mips.c:4721
+#: config/mips/mips.c:4723
#, c-format
msgid "-mabi=%s does not support -mips%d"
msgstr ""
-#: config/mips/mips.c:4738
+#: config/mips/mips.c:4740
msgid "The -mabi=32 support does not work yet."
msgstr ""
-#: config/mips/mips.c:4742
+#: config/mips/mips.c:4744
msgid "This target does not support the -mabi switch."
msgstr ""
-#: config/mips/mips.c:4877
+#: config/mips/mips.c:4878
#, c-format
msgid "-mcpu=%s does not support -mips%d"
msgstr ""
-#: config/mips/mips.c:4883
+#: config/mips/mips.c:4884
#, c-format
msgid "-mips%d does not support 64 bit fp registers"
msgstr ""
-#: config/mips/mips.c:4886
+#: config/mips/mips.c:4887
#, c-format
msgid "-mips%d does not support 64 bit gp registers"
msgstr ""
-#: config/mips/mips.c:4905
+#: config/mips/mips.c:4906
msgid "-G is incompatible with PIC code which is the default"
msgstr ""
-#: config/mips/mips.c:4921
+#: config/mips/mips.c:4922
msgid "-membedded-pic and -mabicalls are incompatible"
msgstr ""
-#: config/mips/mips.c:4924
+#: config/mips/mips.c:4925
msgid "-G and -membedded-pic are incompatible"
msgstr ""
-#: config/mips/mips.c:4976
+#: config/mips/mips.c:4977
#, c-format
msgid "Invalid option `entry%s'"
msgstr ""
-#: config/mips/mips.c:4979
+#: config/mips/mips.c:4980
msgid "-mentry is only meaningful with -mips-16"
msgstr ""
-#: config/mips/mips.c:5312
+#: config/mips/mips.c:5313
#, ycp-format
msgid "internal error: %%) found without a %%( in assembler pattern"
msgstr ""
-#: config/mips/mips.c:5326
+#: config/mips/mips.c:5327
#, ycp-format
msgid "internal error: %%] found without a %%[ in assembler pattern"
msgstr ""
-#: config/mips/mips.c:5339
+#: config/mips/mips.c:5340
#, ycp-format
msgid "internal error: %%> found without a %%< in assembler pattern"
msgstr ""
-#: config/mips/mips.c:5352
+#: config/mips/mips.c:5353
#, ycp-format
msgid "internal error: %%} found without a %%{ in assembler pattern"
msgstr ""
-#: config/mips/mips.c:5366
+#: config/mips/mips.c:5367
#, c-format
msgid "PRINT_OPERAND: Unknown punctuation '%c'"
msgstr ""
-#: config/mips/mips.c:5375
+#: config/mips/mips.c:5376
msgid "PRINT_OPERAND null pointer"
msgstr ""
-#: config/mips/mips.c:5503
+#: config/mips/mips.c:5504
#, c-format
msgid "PRINT_OPERAND: letter %c was found & insn was not CONST_INT"
msgstr ""
-#: config/mips/mips.c:5547
+#: config/mips/mips.c:5548
msgid "PRINT_OPERAND_ADDRESS, null pointer"
msgstr ""
-#: config/mips/mips.c:5802
+#: config/mips/mips.c:5803
msgid ""
"MIPS ECOFF format does not allow changing filenames within functions with "
"#line"
msgstr ""
-#: config/mips/mips.c:6365
+#: config/mips/mips.c:6366
#, c-format
msgid "gp_offset (%ld) or end_offset (%ld) is less than zero."
msgstr ""
-#: config/mips/mips.c:6582
+#: config/mips/mips.c:6583
#, c-format
msgid "fp_offset (%ld) or end_offset (%ld) is less than zero."
msgstr ""
-#: config/mips/mips.c:8620
+#: config/mips/mips.c:8631
#, c-format
msgid "can not handle inconsistent calls to `%s'"
msgstr ""
@@ -4718,75 +4889,75 @@ msgstr ""
#. each pair being { "NAME", VALUE }
#. where VALUE is the bits to set or minus the bits to clear.
#. An empty string NAME is used to identify the default VALUE.
-#: config/mips/mips.h:333
+#: config/mips/mips.h:335 config/mn10300/mn10300.h:62
msgid "No default crt0.o"
msgstr ""
-#: config/mips/mips.h:335
+#: config/mips/mips.h:337
msgid "Use 64-bit int type"
msgstr ""
-#: config/mips/mips.h:337
+#: config/mips/mips.h:339
msgid "Use 64-bit long type"
msgstr ""
-#: config/mips/mips.h:339
+#: config/mips/mips.h:341
msgid "Use 32-bit long type"
msgstr ""
-#: config/mips/mips.h:341
+#: config/mips/mips.h:343
msgid "Optimize lui/addiu address loads"
msgstr ""
-#: config/mips/mips.h:343
+#: config/mips/mips.h:345
msgid "Don't optimize lui/addiu address loads"
msgstr ""
-#: config/mips/mips.h:345
+#: config/mips/mips.h:347
msgid "Use MIPS as"
msgstr ""
-#: config/mips/mips.h:347
+#: config/mips/mips.h:349
msgid "Use GNU as"
msgstr ""
-#: config/mips/mips.h:349
+#: config/mips/mips.h:351
msgid "Use symbolic register names"
msgstr ""
-#: config/mips/mips.h:351
+#: config/mips/mips.h:353
msgid "Don't use symbolic register names"
msgstr ""
-#: config/mips/mips.h:353 config/mips/mips.h:355
+#: config/mips/mips.h:355 config/mips/mips.h:357
msgid "Use GP relative sdata/sbss sections"
msgstr ""
-#: config/mips/mips.h:357 config/mips/mips.h:359
+#: config/mips/mips.h:359 config/mips/mips.h:361
msgid "Don't use GP relative sdata/sbss sections"
msgstr ""
-#: config/mips/mips.h:361
+#: config/mips/mips.h:363
msgid "Output compiler statistics"
msgstr ""
-#: config/mips/mips.h:363
+#: config/mips/mips.h:365
msgid "Don't output compiler statistics"
msgstr ""
-#: config/mips/mips.h:365
+#: config/mips/mips.h:367
msgid "Don't optimize block moves"
msgstr ""
-#: config/mips/mips.h:367
+#: config/mips/mips.h:369
msgid "Optimize block moves"
msgstr ""
-#: config/mips/mips.h:369
+#: config/mips/mips.h:371
msgid "Use mips-tfile asm postpass"
msgstr ""
-#: config/mips/mips.h:371
+#: config/mips/mips.h:373
msgid "Don't use mips-tfile asm postpass"
msgstr ""
@@ -4796,127 +4967,127 @@ msgstr ""
#. where VALUE is the bits to set or minus the bits to clear and DOC
#. is the documentation for --help (NULL if intentionally undocumented).
#. An empty string NAME is used to identify the default VALUE.
-#: config/mips/mips.h:375 config/pdp11/pdp11.h:54
+#: config/mips/mips.h:377 config/pdp11/pdp11.h:54
msgid "Use hardware floating point"
msgstr ""
-#: config/mips/mips.h:377
+#: config/mips/mips.h:379
msgid "Use 64-bit FP registers"
msgstr ""
-#: config/mips/mips.h:379
+#: config/mips/mips.h:381
msgid "Use 32-bit FP registers"
msgstr ""
-#: config/mips/mips.h:381
+#: config/mips/mips.h:383
msgid "Use 64-bit general registers"
msgstr ""
-#: config/mips/mips.h:383
+#: config/mips/mips.h:385
msgid "Use 32-bit general registers"
msgstr ""
-#: config/mips/mips.h:385
+#: config/mips/mips.h:387
msgid "Use Irix PIC"
msgstr ""
-#: config/mips/mips.h:387
+#: config/mips/mips.h:389
msgid "Don't use Irix PIC"
msgstr ""
-#: config/mips/mips.h:389
+#: config/mips/mips.h:391
msgid "Use OSF PIC"
msgstr ""
-#: config/mips/mips.h:391
+#: config/mips/mips.h:393
msgid "Don't use OSF PIC"
msgstr ""
-#: config/mips/mips.h:393
+#: config/mips/mips.h:395
msgid "Use indirect calls"
msgstr ""
-#: config/mips/mips.h:395
+#: config/mips/mips.h:397
msgid "Don't use indirect calls"
msgstr ""
-#: config/mips/mips.h:397
+#: config/mips/mips.h:399
msgid "Use embedded PIC"
msgstr ""
-#: config/mips/mips.h:399
+#: config/mips/mips.h:401
msgid "Don't use embedded PIC"
msgstr ""
-#: config/mips/mips.h:401
+#: config/mips/mips.h:403
msgid "Use ROM instead of RAM"
msgstr ""
-#: config/mips/mips.h:403
+#: config/mips/mips.h:405
msgid "Don't use ROM instead of RAM"
msgstr ""
-#: config/mips/mips.h:405
+#: config/mips/mips.h:407
msgid "Put uninitialized constants in ROM (needs -membedded-data)"
msgstr ""
-#: config/mips/mips.h:407
+#: config/mips/mips.h:409
msgid "Don't put uninitialized constants in ROM"
msgstr ""
-#: config/mips/mips.h:409
+#: config/mips/mips.h:411
msgid "Use big-endian byte order"
msgstr ""
-#: config/mips/mips.h:411
+#: config/mips/mips.h:413
msgid "Use little-endian byte order"
msgstr ""
-#: config/mips/mips.h:413
+#: config/mips/mips.h:415
msgid "Use single (32-bit) FP only"
msgstr ""
-#: config/mips/mips.h:415
+#: config/mips/mips.h:417
msgid "Don't use single (32-bit) FP only"
msgstr ""
-#: config/mips/mips.h:417
+#: config/mips/mips.h:419
msgid "Use multiply accumulate"
msgstr ""
-#: config/mips/mips.h:419
+#: config/mips/mips.h:421
msgid "Don't use multiply accumulate"
msgstr ""
-#: config/mips/mips.h:421
+#: config/mips/mips.h:423
msgid "Work around early 4300 hardware bug"
msgstr ""
-#: config/mips/mips.h:423
+#: config/mips/mips.h:425
msgid "Don't work around early 4300 hardware bug"
msgstr ""
-#: config/mips/mips.h:425
+#: config/mips/mips.h:427
msgid "Optimize for 4650"
msgstr ""
-#: config/mips/mips.h:427
+#: config/mips/mips.h:429
msgid "Optimize for 3900"
msgstr ""
-#: config/mips/mips.h:429
+#: config/mips/mips.h:431
msgid "Trap on integer divide by zero"
msgstr ""
-#: config/mips/mips.h:431
+#: config/mips/mips.h:433
msgid "Don't trap on integer divide by zero"
msgstr ""
-#: config/mips/mips.h:433
+#: config/mips/mips.h:435
msgid "Trap on integer divide overflow"
msgstr ""
-#: config/mips/mips.h:435
+#: config/mips/mips.h:437
msgid "Don't trap on integer divide overflow"
msgstr ""
@@ -4936,36 +5107,40 @@ msgstr ""
#.
#. extern char *m88k_short_data;
#. #define TARGET_OPTIONS { { "short-data-", &m88k_short_data } }
-#: config/mips/mips.h:554
+#: config/mips/mips.h:556
msgid "Specify CPU for scheduling purposes"
msgstr ""
-#: config/mips/mips.h:556
+#: config/mips/mips.h:558
msgid "Specify MIPS ISA"
msgstr ""
-#: config/mips/mips.h:558
+#: config/mips/mips.h:560
msgid "Use mips16 entry/exit psuedo ops"
msgstr ""
-#: config/mips/mips.h:560
+#: config/mips/mips.h:562
msgid "Don't use MIPS16 instructions"
msgstr ""
#. Output assembler code to FILE to increment profiler label # LABELNO
#. for profiling a function entry.
-#: config/mips/mips.h:2577
+#: config/mips/mips.h:2579
msgid "mips16 function profiling"
msgstr ""
-#: config/mn10300/mn10300.h:56
+#: config/mn10300/mn10300.h:57
msgid "Work around hardware multiply bug"
msgstr ""
-#: config/mn10300/mn10300.h:57
+#: config/mn10300/mn10300.h:58
msgid "Do not work around hardware multiply bug"
msgstr ""
+#: config/mn10300/mn10300.h:59
+msgid "Target the AM33 processor"
+msgstr ""
+
#: config/nextstep.c:65
msgid "optimization turned on"
msgstr ""
@@ -5014,10 +5189,6 @@ msgstr ""
msgid "Do not use register sb"
msgstr ""
-#: config/ns32k/ns32k.h:116
-msgid "Do not use bitfield instructions"
-msgstr ""
-
#: config/ns32k/ns32k.h:118
msgid "Generate code for high memory"
msgstr ""
@@ -5153,12 +5324,12 @@ msgstr ""
msgid "invalid %%B value"
msgstr ""
-#: config/romp/romp.c:702 config/rs6000/rs6000.c:3710
+#: config/romp/romp.c:702 config/rs6000/rs6000.c:4077
#, ycp-format
msgid "invalid %%S value"
msgstr ""
-#: config/romp/romp.c:711 config/romp/romp.c:718 config/rs6000/rs6000.c:3339
+#: config/romp/romp.c:711 config/romp/romp.c:718
#, ycp-format
msgid "invalid %%b value"
msgstr ""
@@ -5179,7 +5350,7 @@ msgid "invalid %%Z value"
msgstr ""
#: config/romp/romp.c:792 config/romp/romp.c:801 config/romp/romp.c:808
-#: config/rs6000/rs6000.c:3494
+#: config/rs6000/rs6000.c:3859
#, ycp-format
msgid "invalid %%k value"
msgstr ""
@@ -5240,84 +5411,102 @@ msgid ""
"supported."
msgstr ""
-#: config/rs6000/rs6000.c:345
+#: config/rs6000/rs6000.c:340
msgid "-mmultiple is not supported on little endian systems"
msgstr ""
-#: config/rs6000/rs6000.c:352
+#: config/rs6000/rs6000.c:347
msgid "-mstring is not supported on little endian systems"
msgstr ""
-#: config/rs6000/rs6000.c:358
+#: config/rs6000/rs6000.c:353
#, c-format
msgid "-f%s ignored for AIX (all code is position independent)"
msgstr ""
-#: config/rs6000/rs6000.c:373
+#: config/rs6000/rs6000.c:361
+msgid "-ffunction-sections disabled on AIX when debugging"
+msgstr ""
+
+#: config/rs6000/rs6000.c:367
+msgid "-fdata-sections not supported on AIX"
+msgstr ""
+
+#: config/rs6000/rs6000.c:381
#, c-format
msgid "Unknown -mdebug-%s switch"
msgstr ""
-#: config/rs6000/rs6000.c:3421
+#: config/rs6000/rs6000.c:3786
#, ycp-format
msgid "invalid %%f value"
msgstr ""
-#: config/rs6000/rs6000.c:3430
+#: config/rs6000/rs6000.c:3795
#, ycp-format
msgid "invalid %%F value"
msgstr ""
-#: config/rs6000/rs6000.c:3439
+#: config/rs6000/rs6000.c:3804
#, ycp-format
msgid "invalid %%G value"
msgstr ""
-#: config/rs6000/rs6000.c:3474
+#: config/rs6000/rs6000.c:3839
#, ycp-format
msgid "invalid %%j code"
msgstr ""
-#: config/rs6000/rs6000.c:3484
+#: config/rs6000/rs6000.c:3849
#, ycp-format
msgid "invalid %%J code"
msgstr ""
-#: config/rs6000/rs6000.c:3514
+#: config/rs6000/rs6000.c:3879
#, ycp-format
msgid "invalid %%K value"
msgstr ""
-#: config/rs6000/rs6000.c:3638
+#: config/rs6000/rs6000.c:4003
#, ycp-format
msgid "invalid %%p value"
msgstr ""
-#: config/rs6000/rs6000.c:3673
+#: config/rs6000/rs6000.c:4040
#, ycp-format
msgid "invalid %%q value"
msgstr ""
-#: config/rs6000/rs6000.c:3736
+#: config/rs6000/rs6000.c:4103
#, ycp-format
msgid "%%S computed all 1's mask"
msgstr ""
-#: config/rs6000/rs6000.c:3762
+#: config/rs6000/rs6000.c:4130
#, ycp-format
msgid "%%S computed all 0's mask"
msgstr ""
-#: config/rs6000/rs6000.c:3770
+#: config/rs6000/rs6000.c:4140
+#, ycp-format
+msgid "invalid %%T value"
+msgstr ""
+
+#: config/rs6000/rs6000.c:4150
#, ycp-format
msgid "invalid %%u value"
msgstr ""
-#: config/rs6000/rs6000.c:3779
+#: config/rs6000/rs6000.c:4159
#, ycp-format
msgid "invalid %%v value"
msgstr ""
+#: config/rs6000/rs6000.c:4232
+#, ycp-format
+msgid "invalid %%W value"
+msgstr ""
+
#. Run-time compilation parameters selecting different hardware subsets.
#.
#. Macro to define tables used to set the flags.
@@ -5477,92 +5666,97 @@ msgstr ""
#. Number of bytes into the frame return addresses can be found. See
#. rs6000_stack_info in rs6000.c for more information on how the different
#. abi's store the return address.
-#: config/rs6000/rs6000.h:1627
+#: config/rs6000/rs6000.h:1637
msgid "RETURN_ADDRESS_OFFSET not supported"
msgstr ""
-#: config/rs6000/sysv4.h:90
+#: config/rs6000/sysv4.h:92
msgid "Select ABI calling convention."
msgstr ""
-#: config/rs6000/sysv4.h:91
+#: config/rs6000/sysv4.h:93
msgid "Select method for sdata handling."
msgstr ""
-#: config/rs6000/sysv4.h:106
+#: config/rs6000/sysv4.h:108
msgid "Align to the base type of the bitfield."
msgstr ""
-#: config/rs6000/sysv4.h:108
+#: config/rs6000/sysv4.h:110
msgid "Don't align to the base type of the bitfield."
msgstr ""
-#: config/rs6000/sysv4.h:110
+#: config/rs6000/sysv4.h:112
msgid "Don't assume that unaligned accesses are handled by the system"
msgstr ""
-#: config/rs6000/sysv4.h:112
+#: config/rs6000/sysv4.h:114
msgid "Assume that unaligned accesses are handled by the system"
msgstr ""
-#: config/rs6000/sysv4.h:114 config/rs6000/sysv4.h:118
+#: config/rs6000/sysv4.h:116 config/rs6000/sysv4.h:120
msgid "Produce code relocatable at runtime."
msgstr ""
-#: config/rs6000/sysv4.h:116 config/rs6000/sysv4.h:120
+#: config/rs6000/sysv4.h:118 config/rs6000/sysv4.h:122
msgid "Don't produce code relocatable at runtime."
msgstr ""
-#: config/rs6000/sysv4.h:122 config/rs6000/sysv4.h:124
+#: config/rs6000/sysv4.h:124 config/rs6000/sysv4.h:126
msgid "Produce little endian code."
msgstr ""
-#: config/rs6000/sysv4.h:126 config/rs6000/sysv4.h:128
+#: config/rs6000/sysv4.h:128 config/rs6000/sysv4.h:130
msgid "Produce big endian code."
msgstr ""
-#: config/rs6000/sysv4.h:129 config/rs6000/sysv4.h:130
-#: config/rs6000/sysv4.h:131 config/rs6000/sysv4.h:132
-#: config/rs6000/sysv4.h:133 config/rs6000/sysv4.h:134
-#: config/rs6000/sysv4.h:141 config/rs6000/sysv4.h:142
-#: config/rs6000/sysv4.h:153 config/rs6000/sysv4.h:154
-#: config/rs6000/sysv4.h:155 config/rs6000/sysv4.h:157
+#: config/rs6000/sysv4.h:134 config/sparc/linux.h:93
+#: config/sparc/linux64.h:149
+msgid "Use 128 bit long doubles"
+msgstr ""
+
+#: config/rs6000/sysv4.h:135 config/rs6000/sysv4.h:136
+#: config/rs6000/sysv4.h:137 config/rs6000/sysv4.h:138
+#: config/rs6000/sysv4.h:139 config/rs6000/sysv4.h:140
+#: config/rs6000/sysv4.h:147 config/rs6000/sysv4.h:148
+#: config/rs6000/sysv4.h:159 config/rs6000/sysv4.h:160
+#: config/rs6000/sysv4.h:161 config/rs6000/sysv4.h:163
msgid "no description yet"
msgstr ""
-#: config/rs6000/sysv4.h:135
+#: config/rs6000/sysv4.h:141
msgid "Use EABI."
msgstr ""
-#: config/rs6000/sysv4.h:136
+#: config/rs6000/sysv4.h:142
msgid "Don't use EABI."
msgstr ""
-#: config/rs6000/sysv4.h:138
+#: config/rs6000/sysv4.h:144
msgid "Use alternate register names."
msgstr ""
-#: config/rs6000/sysv4.h:140
+#: config/rs6000/sysv4.h:146
msgid "Don't use alternate register names."
msgstr ""
-#: config/rs6000/sysv4.h:144
+#: config/rs6000/sysv4.h:150
msgid "Link with libsim.a, libc.a and sim-crt0.o."
msgstr ""
-#: config/rs6000/sysv4.h:146
+#: config/rs6000/sysv4.h:152
msgid "Link with libads.a, libc.a and crt0.o."
msgstr ""
-#: config/rs6000/sysv4.h:148
+#: config/rs6000/sysv4.h:154
msgid "Link with libyk.a, libc.a and crt0.o."
msgstr ""
-#: config/rs6000/sysv4.h:150
+#: config/rs6000/sysv4.h:156
msgid "Link with libmvme.a, libc.a and crt0.o."
msgstr ""
-#: config/rs6000/sysv4.h:152
+#: config/rs6000/sysv4.h:158
msgid "Set the PPC_EMB bit in the ELF flags header"
msgstr ""
@@ -5574,53 +5768,49 @@ msgstr ""
#.
#. The macro SUBTARGET_OVERRIDE_OPTIONS is provided for subtargets, to
#. get control.
-#: config/rs6000/sysv4.h:203
+#: config/rs6000/sysv4.h:209
#, c-format
msgid "Bad value for -mcall-%s"
msgstr ""
-#: config/rs6000/sysv4.h:219
+#: config/rs6000/sysv4.h:225
#, c-format
msgid "Bad value for -msdata=%s"
msgstr ""
-#: config/rs6000/sysv4.h:236
+#: config/rs6000/sysv4.h:242
#, c-format
msgid "-mrelocatable and -msdata=%s are incompatible."
msgstr ""
-#: config/rs6000/sysv4.h:244
+#: config/rs6000/sysv4.h:250
#, c-format
msgid "-f%s and -msdata=%s are incompatible."
msgstr ""
-#: config/rs6000/sysv4.h:253
+#: config/rs6000/sysv4.h:259
#, c-format
msgid "-msdata=%s and -mcall-%s are incompatible."
msgstr ""
-#: config/rs6000/sysv4.h:260
+#: config/rs6000/sysv4.h:266
msgid "-mrelocatable and -mno-minimal-toc are incompatible."
msgstr ""
-#: config/rs6000/sysv4.h:266
+#: config/rs6000/sysv4.h:272
#, c-format
msgid "-mrelocatable and -mcall-%s are incompatible."
msgstr ""
-#: config/rs6000/sysv4.h:273
+#: config/rs6000/sysv4.h:279
#, c-format
msgid "-fPIC and -mcall-%s are incompatible."
msgstr ""
-#: config/rs6000/sysv4.h:280
+#: config/rs6000/sysv4.h:286
msgid "-mcall-aixdesc must be big endian"
msgstr ""
-#: config/sparc/linux.h:93 config/sparc/linux64.h:149
-msgid "Use 128 bit long doubles"
-msgstr ""
-
#: config/sparc/sp64-elf.h:84 config/sparc/splet.h:29
msgid "Generate code for big endian"
msgstr ""
@@ -5846,90 +6036,95 @@ msgstr ""
msgid "Use given Sparc code model"
msgstr ""
-#: config/v850/v850.c:99
+#: config/v850/v850.c:101
#, c-format
msgid "%s=%s is not numeric."
msgstr ""
-#: config/v850/v850.c:106
+#: config/v850/v850.c:108
#, c-format
msgid "%s=%s is too large."
msgstr ""
-#: config/v850/v850.c:2031
+#: config/v850/v850.c:2033
msgid "a data area attribute cannot be specified for local variables"
msgstr ""
-#: config/v850/v850.c:2039
+#: config/v850/v850.c:2041
#, c-format
msgid "data area of '%s' conflicts with previous declaration"
msgstr ""
-#: config/v850/v850.c:2243
+#: config/v850/v850.c:2245
#, c-format
msgid "Bogus JR construction: %d\n"
msgstr ""
-#: config/v850/v850.c:2264 config/v850/v850.c:2466
+#: config/v850/v850.c:2266 config/v850/v850.c:2468
#, c-format
msgid "Bad amount of stack space removal: %d"
msgstr ""
-#: config/v850/v850.c:2442
+#: config/v850/v850.c:2444
#, c-format
msgid "Bogus JARL construction: %d\n"
msgstr ""
-#: config/v850/v850.c:2687
+#: config/v850/v850.c:2689
msgid "#pragma GHS endXXXX found without previous startXXX"
msgstr ""
-#: config/v850/v850.c:2689
+#: config/v850/v850.c:2691
msgid "#pragma GHS endXXX does not match previous startXXX"
msgstr ""
-#: config/v850/v850.c:2713
+#: config/v850/v850.c:2715
msgid "Cannot set interrupt attribute: no current function"
msgstr ""
-#: config/v850/v850.c:2721
+#: config/v850/v850.c:2723
msgid "Cannot set interrupt attribute: no such identifier"
msgstr ""
-#: config/v850/v850.c:2754
-msgid "Incomplete #pragma ghs"
+#: config/v850/v850.c:2765
+msgid "junk at end of #pragma ghs section"
msgstr ""
-#: config/v850/v850.c:2761
-msgid "Nothing follows #pragma ghs"
+#: config/v850/v850.c:2782
+#, c-format
+msgid "unrecognised section name \"%s\""
msgstr ""
-#: config/v850/v850.c:2853
-#, c-format
-msgid "Unrecognised GHS pragma: '%s'\n"
+#: config/v850/v850.c:2796
+msgid "malformed #pragma ghs section"
msgstr ""
-#: config/v850/v850.c:2859
-#, c-format
-msgid "Extra text after valid #pragma: '%s'"
+#: config/v850/v850.c:2814
+msgid "junk at end of #pragma ghs interrupt"
msgstr ""
-#: config/v850/v850.c:2884
-#, c-format
-msgid "Unrecognised section name '%s' in GHS section pragma"
+#: config/v850/v850.c:2824
+msgid "junk at end of #pragma ghs starttda"
msgstr ""
-#: config/v850/v850.c:2895
-msgid "Missing '=' in GHS section pragma"
+#: config/v850/v850.c:2834
+msgid "junk at end of #pragma ghs startsda"
msgstr ""
-#: config/v850/v850.c:2916
-#, c-format
-msgid "Malformed GHS section pragma: found '%s' instead of a comma"
+#: config/v850/v850.c:2844
+msgid "junk at end of #pragma ghs startzda"
msgstr ""
-#: config/v850/v850.c:2992
-msgid "Missing trailing \" in #pragma ghs"
+#: config/v850/v850.c:2854
+msgid "junk at end of #pragma ghs endtda"
+msgstr ""
+
+#: config/v850/v850.c:2864
+msgid "junk at end of #pragma ghs endsda"
+msgstr ""
+
+#: config/v850/v850.c:2874
+msgid "junk at end of #pragma ghs endzda"
msgstr ""
#. Macro to define tables used to set the flags.
@@ -5937,35 +6132,35 @@ msgstr ""
#. each pair being { "NAME", VALUE }
#. where VALUE is the bits to set or minus the bits to clear.
#. An empty string NAME is used to identify the default VALUE.
-#: config/v850/v850.h:118
+#: config/v850/v850.h:121
msgid "Support Green Hills ABI"
msgstr ""
-#: config/v850/v850.h:121
+#: config/v850/v850.h:124
msgid "Prohibit PC relative function calls"
msgstr ""
-#: config/v850/v850.h:124
+#: config/v850/v850.h:127
msgid "Reuse r30 on a per function basis"
msgstr ""
-#: config/v850/v850.h:127
+#: config/v850/v850.h:130
msgid "Use stubs for function prologues"
msgstr ""
-#: config/v850/v850.h:130
+#: config/v850/v850.h:133
msgid "Same as: -mep -mprolog-function"
msgstr ""
-#: config/v850/v850.h:131
+#: config/v850/v850.h:134
msgid "Enable backend debugging"
msgstr ""
-#: config/v850/v850.h:133
+#: config/v850/v850.h:136
msgid "Compile for the v850 processor"
msgstr ""
-#: config/v850/v850.h:136
+#: config/v850/v850.h:139
msgid "Use 4 byte entries in switch tables"
msgstr ""
@@ -5985,15 +6180,15 @@ msgstr ""
#.
#. extern char *m88k_short_data;
#. #define TARGET_OPTIONS { { "short-data-", &m88k_short_data } }
-#: config/v850/v850.h:180
+#: config/v850/v850.h:183
msgid "Set the max size of data eligible for the TDA area"
msgstr ""
-#: config/v850/v850.h:183
+#: config/v850/v850.h:186
msgid "Set the max size of data eligible for the SDA area"
msgstr ""
-#: config/v850/v850.h:186
+#: config/v850/v850.h:189
msgid "Set the max size of data eligible for the ZDA area"
msgstr ""
@@ -6013,7 +6208,7 @@ msgstr ""
msgid "conversion to incomplete type"
msgstr ""
-#: convert.c:390 convert.c:472
+#: convert.c:390 convert.c:470
msgid "can't convert between vector values of different size"
msgstr ""
@@ -6029,513 +6224,533 @@ msgstr ""
msgid "aggregate value used where a complex was expected"
msgstr ""
-#: convert.c:478
+#: convert.c:476
msgid "can't convert value to a vector"
msgstr ""
-#: cp/call.c:378
+#: cp/call.c:383
msgid "unable to call pointer to member function here"
msgstr ""
-#: cp/call.c:505
+#: cp/call.c:513
msgid "destructors take no parameters"
msgstr ""
-#: cp/call.c:2827
+#: cp/call.c:2835
msgid "ISO C++ forbids omitting the middle term of a ?: expression"
msgstr ""
-#: cp/class.c:886
+#: cp/class.c:892
msgid "internal inconsistency: binfo offset error for rtti"
msgstr ""
-#: cp/class.c:1466
+#: cp/class.c:1481
#, c-format
msgid "conflicting access specifications for field `%s', ignored"
msgstr ""
-#: cp/class.c:5268
+#: cp/class.c:5262
msgid "trying to finish struct, but kicked out due to previous parse errors."
msgstr ""
-#: cp/class.c:5717
+#: cp/class.c:5712
#, c-format
msgid "language string `\"%s\"' not recognized"
msgstr ""
-#: cp/class.c:6015 cp/class.c:6210 cp/class.c:6217
+#: cp/class.c:6024 cp/class.c:6192 cp/class.c:6199
msgid "not enough type information"
msgstr ""
-#: cp/class.c:6194
+#: cp/class.c:6176
msgid "invalid operation on uninstantiated type"
msgstr ""
-#: cp/class.c:7489
+#: cp/class.c:7633
msgid ""
"object size exceeds built-in limit for virtual function table implementation"
msgstr ""
-#: cp/class.c:7491
+#: cp/class.c:7635
msgid ""
"object size exceeds normal limit for virtual function table implementation, "
"recompile all source and use -fhuge-objects"
msgstr ""
-#: cp/decl.c:1413
+#: cp/decl.c:1411
msgid "internal compiler error: debugging info corrupted"
msgstr ""
-#: cp/decl.c:3898
+#: cp/decl.c:3938
msgid "parse errors have confused me too much"
msgstr ""
-#: cp/decl.c:4199
+#: cp/decl.c:4236
#, c-format
msgid "declaration of `%s' shadows a member of `this'"
msgstr ""
-#: cp/decl.c:4841
+#: cp/decl.c:4878
#, c-format
msgid "label `%s' referenced outside of any function"
msgstr ""
-#: cp/decl.c:4946 cp/decl.c:4973
+#: cp/decl.c:4983 cp/decl.c:5010
msgid "jump to case label"
msgstr ""
-#: cp/decl.c:4979 cp/decl.c:5080
+#: cp/decl.c:5016 cp/decl.c:5117
msgid " enters try block"
msgstr ""
-#: cp/decl.c:5061
+#: cp/decl.c:5098
msgid " from here"
msgstr ""
-#: cp/decl.c:5174
-msgid "where case label appears here"
+#: cp/decl.c:5254
+msgid "`default' label not within a switch statement"
+msgstr ""
+
+#: cp/decl.c:5282
+msgid "pointers are not permitted as case values"
+msgstr ""
+
+#: cp/decl.c:5286
+msgid "ISO C++ forbids range expressions in switch statement"
+msgstr ""
+
+#: cp/decl.c:5310
+msgid "empty range specified"
msgstr ""
-#: cp/decl.c:5177
-msgid "(enclose actions of previous case statements requiring"
+#: cp/decl.c:5361
+msgid "duplicate (or overlapping) case value"
msgstr ""
-#: cp/decl.c:5178
-msgid "destructors in their own binding contours.)"
+#: cp/decl.c:5383
+msgid "where case label appears here"
msgstr ""
-#: ../libiberty/cplus-dem.c:4795 ../libiberty/cplus-dem.c:4806 cp/decl.c:5521
+#: cp/decl.c:5386
+msgid ""
+"(enclose actions of previous case statements requiring destructors in their "
+"own scope.)"
+msgstr ""
+
+#: ../libiberty/cplus-dem.c:5007 ../libiberty/cplus-dem.c:5018 cp/decl.c:5738
msgid "virtual memory exhausted"
msgstr ""
-#: cp/decl.c:6292
+#: cp/decl.c:6489
msgid "the new ABI requires vtable thunks"
msgstr ""
-#: cp/decl.c:6977
+#: cp/decl.c:7139
msgid "an anonymous union cannot have function members"
msgstr ""
-#: cp/decl.c:7033
+#: cp/decl.c:7196
msgid "multiple types in one declaration"
msgstr ""
-#: cp/decl.c:7036
+#: cp/decl.c:7199
msgid "declaration does not declare anything"
msgstr ""
-#: cp/decl.c:7049
+#: cp/decl.c:7212
msgid "ISO C++ prohibits anonymous structs"
msgstr ""
-#: cp/decl.c:8114
+#: cp/decl.c:8216
msgid "assignment (not initialization) in declaration"
msgstr ""
-#: cp/decl.c:8671
+#: cp/decl.c:8778
msgid "invalid catch parameter"
msgstr ""
-#: cp/decl.c:8779
-#, c-format
-msgid "destructor for alien class `%s' cannot be a member"
-msgstr ""
-
-#: cp/decl.c:8782
-#, c-format
-msgid "constructor for alien class `%s' cannot be a member"
-msgstr ""
-
-#: cp/decl.c:8893
+#: cp/decl.c:9010
msgid "cannot declare `::main' to be a template"
msgstr ""
-#: cp/decl.c:8895
+#: cp/decl.c:9012
msgid "cannot declare `::main' to be inline"
msgstr ""
-#: cp/decl.c:8897
+#: cp/decl.c:9014
msgid "cannot declare `::main' to be static"
msgstr ""
-#: cp/decl.c:9450
+#: cp/decl.c:9017
+msgid "`main' must return `int'"
+msgstr ""
+
+#: cp/decl.c:9579
msgid "overflow in array dimension"
msgstr ""
-#: cp/decl.c:9739
+#: cp/decl.c:9868
msgid "destructors must be member functions"
msgstr ""
-#: cp/decl.c:10068
+#: cp/decl.c:10197
msgid "`bool' is now a keyword"
msgstr ""
-#: cp/decl.c:10099
+#: cp/decl.c:10228
msgid "ISO C++ does not support `long long'"
msgstr ""
-#: cp/decl.c:10222
+#: cp/decl.c:10351
#, c-format
msgid "short, signed or unsigned invalid for `%s'"
msgstr ""
-#: cp/decl.c:10227
+#: cp/decl.c:10356
#, c-format
msgid "long and short specified together for `%s'"
msgstr ""
-#: cp/decl.c:10238
+#: cp/decl.c:10367
#, c-format
msgid "signed and unsigned given together for `%s'"
msgstr ""
-#: cp/decl.c:10385
+#: cp/decl.c:10514
msgid "storage class specifiers invalid in parameter declarations"
msgstr ""
-#: cp/decl.c:10389
+#: cp/decl.c:10518
msgid "typedef declaration invalid in parameter declaration"
msgstr ""
-#: cp/decl.c:10400
+#: cp/decl.c:10529
msgid "virtual outside class declaration"
msgstr ""
-#: cp/decl.c:10454
+#: cp/decl.c:10583
#, c-format
msgid "storage class specified for %s `%s'"
msgstr ""
-#: cp/decl.c:10492
+#: cp/decl.c:10621
msgid "storage class specifiers invalid in friend function declarations"
msgstr ""
-#: cp/decl.c:10674
+#: cp/decl.c:10803
msgid "destructor cannot be static member function"
msgstr ""
-#: cp/decl.c:10698
+#: cp/decl.c:10827
msgid "constructor cannot be static member function"
msgstr ""
-#: cp/decl.c:10701
+#: cp/decl.c:10830
msgid "constructors cannot be declared virtual"
msgstr ""
-#: cp/decl.c:10716
+#: cp/decl.c:10845
msgid "return value type specifier for constructor ignored"
msgstr ""
-#: cp/decl.c:10735
+#: cp/decl.c:10864
#, c-format
msgid "can't initialize friend function `%s'"
msgstr ""
#. Cannot be both friend and virtual.
-#: cp/decl.c:10739
+#: cp/decl.c:10868
msgid "virtual functions cannot be friends"
msgstr ""
-#: cp/decl.c:10744
+#: cp/decl.c:10873
msgid "friend declaration not in class definition"
msgstr ""
-#: cp/decl.c:10803
+#: cp/decl.c:10929
#, c-format
msgid "cannot declare %s to references"
msgstr ""
-#: cp/decl.c:10829
+#: cp/decl.c:10955
msgid "invalid type: `void &'"
msgstr ""
-#: cp/decl.c:10880
+#: cp/decl.c:11006
msgid "discarding `const' applied to a reference"
msgstr ""
-#: cp/decl.c:10882
+#: cp/decl.c:11008
msgid "discarding `volatile' applied to a reference"
msgstr ""
#. [dcl.fct.spec] The explicit specifier shall only be used in
#. declarations of constructors within a class definition.
-#: cp/decl.c:11099
+#: cp/decl.c:11225
msgid "only declarations of constructors can be `explicit'"
msgstr ""
-#: cp/decl.c:11107
+#: cp/decl.c:11233
#, c-format
msgid "non-member `%s' cannot be declared `mutable'"
msgstr ""
-#: cp/decl.c:11112
+#: cp/decl.c:11238
#, c-format
msgid "non-object member `%s' cannot be declared `mutable'"
msgstr ""
-#: cp/decl.c:11118
+#: cp/decl.c:11244
#, c-format
msgid "function `%s' cannot be declared `mutable'"
msgstr ""
-#: cp/decl.c:11123
+#: cp/decl.c:11249
#, c-format
msgid "static `%s' cannot be declared `mutable'"
msgstr ""
-#: cp/decl.c:11128
+#: cp/decl.c:11254
#, c-format
msgid "const `%s' cannot be declared `mutable'"
msgstr ""
-#: cp/decl.c:11248
+#: cp/decl.c:11374
msgid "typedef declaration includes an initializer"
msgstr ""
-#: cp/decl.c:11296
-#, c-format
-msgid "trying to make class `%s' a friend of global scope"
-msgstr ""
-
-#: cp/decl.c:11337
+#: cp/decl.c:11470
msgid "unnamed variable or field declared void"
msgstr ""
-#: cp/decl.c:11346
+#: cp/decl.c:11479
msgid "variable or field declared void"
msgstr ""
-#: cp/decl.c:11356
+#: cp/decl.c:11489
msgid "cannot use `::' in parameter declaration"
msgstr ""
-#: cp/decl.c:11374
+#: cp/decl.c:11507
#, c-format
msgid "declaration of `%s' as void"
msgstr ""
-#: cp/decl.c:11553
+#: cp/decl.c:11686
#, c-format
msgid "`%s' is neither function nor member function; cannot be declared friend"
msgstr ""
-#: cp/decl.c:11564
+#: cp/decl.c:11697
msgid "member functions are implicitly friends of their class"
msgstr ""
-#: cp/decl.c:11678
+#: cp/decl.c:11811
#, c-format
msgid "storage class `auto' invalid for function `%s'"
msgstr ""
-#: cp/decl.c:11680
+#: cp/decl.c:11813
#, c-format
msgid "storage class `register' invalid for function `%s'"
msgstr ""
-#: cp/decl.c:11691
+#: cp/decl.c:11824
#, c-format
msgid ""
"storage class `static' invalid for function `%s' declared out of global scope"
msgstr ""
-#: cp/decl.c:11693
+#: cp/decl.c:11826
#, c-format
msgid ""
"storage class `inline' invalid for function `%s' declared out of global scope"
msgstr ""
-#: cp/decl.c:11700
+#: cp/decl.c:11833
#, c-format
msgid "virtual non-class function `%s'"
msgstr ""
#. FIXME need arm citation
-#: cp/decl.c:11735
+#: cp/decl.c:11868
msgid "cannot declare static function inside another function"
msgstr ""
-#: cp/decl.c:12068
+#: cp/decl.c:12202
msgid ""
"invalid integer constant in parameter list, did you forget to give parameter "
"name?"
msgstr ""
-#: cp/decl.c:12095
+#: cp/decl.c:12229
msgid "parameter invalidly declared method type"
msgstr ""
-#: cp/decl.c:12105
+#: cp/decl.c:12239
msgid "parameter invalidly declared offset type"
msgstr ""
-#: cp/decl.c:12139
+#: cp/decl.c:12273
msgid "`void' in parameter list must be entire list"
msgstr ""
-#: cp/decl.c:12525
+#: cp/decl.c:12659
#, c-format
msgid "conversion to %s%s will never use a type conversion operator"
msgstr ""
-#: cp/decl.c:13607
+#: cp/decl.c:13739
msgid "return type for `main' changed to `int'"
msgstr ""
-#: cp/decl2.c:640
+#: cp/decl.c:14671
+msgid "no return statement in function returning non-void"
+msgstr ""
+
+#: cp/decl2.c:631
#, c-format
msgid "-f%s is no longer supported"
msgstr ""
-#: cp/decl2.c:646
+#: cp/decl2.c:637
msgid ""
"-fhandle-exceptions has been renamed to -fexceptions (and is now on by "
"default)"
msgstr ""
-#: cp/decl2.c:688
+#: cp/decl2.c:679
msgid "no file specified with -fdump-translation-unit"
msgstr ""
-#: cp/decl2.c:1067
+#: cp/decl2.c:741
+msgid "-Wno-strict-prototypes is not supported in C++"
+msgstr ""
+
+#: cp/decl2.c:1055
msgid "name missing for member function"
msgstr ""
-#: cp/decl2.c:1133
+#: cp/decl2.c:1121
msgid "`__alignof__' applied to a bit-field"
msgstr ""
#. Something has gone very wrong. Assume we are mistakenly reducing
#. an expression instead of a declaration.
-#: cp/decl2.c:1175
+#: cp/decl2.c:1163
msgid "parser may be lost: is there a '{' missing somewhere?"
msgstr ""
-#: cp/decl2.c:1206 cp/decl2.c:1220
+#: cp/decl2.c:1194 cp/decl2.c:1208
msgid "ambiguous conversion for array subscript"
msgstr ""
-#: cp/decl2.c:1270
+#: cp/decl2.c:1258
msgid "anachronistic use of array size in vector delete"
msgstr ""
-#: cp/decl2.c:1280
+#: cp/decl2.c:1268
msgid ""
"cannot delete a function. Only pointer-to-objects are valid arguments to "
"`delete'"
msgstr ""
-#: cp/decl2.c:1604
+#: cp/decl2.c:1592
msgid "initializer invalid for static member with constructor"
msgstr ""
-#: cp/decl2.c:1606
-msgid "(you really want to initialize it separately)"
+#: cp/decl2.c:1595
+msgid "(an out of class initialization is required)"
msgstr ""
-#: cp/decl2.c:1788
+#: cp/decl2.c:1780
msgid "field initializer is not constant"
msgstr ""
-#: cp/decl2.c:2160
+#: cp/decl2.c:2144
msgid "anonymous struct not inside named type"
msgstr ""
-#: cp/decl2.c:2251
+#: cp/decl2.c:2240
msgid "namespace-scope anonymous aggregates must be static"
msgstr ""
-#: cp/decl2.c:2261
+#: cp/decl2.c:2250
msgid "anonymous aggregate with no members"
msgstr ""
-#: cp/decl2.c:2327
+#: cp/decl2.c:2316
msgid "`operator new' must return type `void *'"
msgstr ""
-#: cp/decl2.c:2332
+#: cp/decl2.c:2321
msgid "`operator new' takes type `size_t' parameter"
msgstr ""
-#: cp/decl2.c:2334
+#: cp/decl2.c:2323
msgid "`operator new' takes type `size_t' as first parameter"
msgstr ""
-#: cp/decl2.c:2359
+#: cp/decl2.c:2348
msgid "`operator delete' must return type `void'"
msgstr ""
-#: cp/decl2.c:2363
+#: cp/decl2.c:2352
msgid "`operator delete' takes type `void *' as first parameter"
msgstr ""
-#: cp/decl2.c:2374
+#: cp/decl2.c:2363
msgid "second argument to `operator delete' must be of type `size_t'"
msgstr ""
-#: cp/decl2.c:2379
+#: cp/decl2.c:2368
msgid "too many arguments in declaration of `operator delete'"
msgstr ""
-#: cp/decl2.c:2381
+#: cp/decl2.c:2370
msgid "`...' invalid in specification of `operator delete'"
msgstr ""
#. Overflow occurred. That means there are at least 4 billion
#. initialization functions.
-#: cp/decl2.c:3071
+#: cp/decl2.c:3135
msgid "too many initialization functions required"
msgstr ""
-#: cp/decl2.c:3865
+#: cp/decl2.c:3947
msgid "use of old-style cast"
msgstr ""
-#: cp/error.c:464
+#: cp/error.c:517
#, c-format
msgid "`%s' not supported by dump_type"
msgstr ""
-#: cp/error.c:665
+#: cp/error.c:737
#, c-format
msgid "`%s' not supported by dump_type_prefix"
msgstr ""
-#: cp/error.c:756
+#: cp/error.c:829
#, c-format
msgid "`%s' not supported by dump_type_suffix"
msgstr ""
-#: cp/error.c:1022
+#: cp/error.c:1095
#, c-format
msgid "`%s' not supported by dump_decl"
msgstr ""
-#: cp/error.c:2029
+#: cp/error.c:2122
#, c-format
msgid "`%s' not supported by dump_expr"
msgstr ""
+#: cp/error.c:2538
+#, c-format
+msgid "In %s `%s':"
+msgstr ""
+
#: cp/except.c:503
msgid "call to Java `catch' or `throw', while `jthrowable' undefined"
msgstr ""
@@ -6548,512 +6763,347 @@ msgstr ""
msgid " in thrown expression"
msgstr ""
-#: cp/expr.c:216
-msgid "pointers are not permitted as case values"
-msgstr ""
-
-#: cp/expr.c:219
-msgid "ISO C++ forbids range expressions in switch statement"
-msgstr ""
-
-#: cp/expr.c:255
-msgid "duplicate (or overlapping) case value"
-msgstr ""
-
-#: cp/expr.c:273
-msgid "empty range specified"
-msgstr ""
-
-#: cp/expr.c:279
-msgid "`default' label within scope of cleanup or variable array"
-msgstr ""
-
-#: cp/friend.c:220
-#, c-format
-msgid "class `%s' is implicitly friends with itself"
-msgstr ""
-
-#: cp/friend.c:403
-msgid " declares a non-template function"
-msgstr ""
-
-#: cp/friend.c:406
+#: cp/friend.c:405
msgid ""
-" (if this is not what you intended, make sure the function template has "
+"(if this is not what you intended, make sure the function template has "
"already been declared and add <> after the function name here) "
"-Wno-non-template-friend disables this warning."
msgstr ""
-#: cp/g++spec.c:195
+#: cp/g++spec.c:194
#, c-format
msgid "argument to `%s' missing\n"
msgstr ""
-#: cp/init.c:286
+#: cp/init.c:278
msgid "initializer list treated as compound expression"
msgstr ""
-#: cp/init.c:401
+#: cp/init.c:393
msgid " will be re-ordered to match declaration order"
msgstr ""
-#: cp/init.c:635
+#: cp/init.c:627
msgid " will be re-ordered to match inheritance order"
msgstr ""
-#: cp/init.c:1064
+#: cp/init.c:1061
msgid "base class initializer specified, but no base class to initialize"
msgstr ""
-#: cp/init.c:1070
+#: cp/init.c:1067
msgid "initializer for unnamed base class ambiguous"
msgstr ""
-#: cp/init.c:1095
+#: cp/init.c:1092
msgid "no base class to initialize"
msgstr ""
-#. Handle bad initializers like:
-#. class COMPLEX {
-#. public:
-#. double re, im;
-#. COMPLEX(double r = 0.0, double i = 0.0) {re = r; im = i;};
-#. ~COMPLEX() {};
-#. };
-#.
-#. int main(int argc, char **argv) {
-#. COMPLEX zees(1.0, 0.0)[10];
-#. }
-#.
-#: cp/init.c:1212
-msgid "bad array initializer"
-msgstr ""
-
-#: cp/init.c:1802
+#: cp/init.c:1816
msgid "object missing in use of pointer-to-member construct"
msgstr ""
-#: cp/init.c:1845 cp/typeck.c:3126 cp/typeck.c:3228
+#: cp/init.c:1858 cp/typeck.c:3130 cp/typeck.c:3232
msgid "at this point in file"
msgstr ""
-#: cp/init.c:2029
+#: cp/init.c:2040
msgid "new of array type fails to specify size"
msgstr ""
-#: cp/init.c:2040
+#: cp/init.c:2051
msgid "size in array new must have integral type"
msgstr ""
-#: cp/init.c:2046
+#: cp/init.c:2057
msgid "zero size array reserves no space"
msgstr ""
-#: cp/init.c:2111
+#: cp/init.c:2122
msgid "new cannot be applied to a reference type"
msgstr ""
-#: cp/init.c:2117
+#: cp/init.c:2128
msgid "new cannot be applied to a function type"
msgstr ""
-#: cp/init.c:2164
+#: cp/init.c:2175
msgid "call to Java constructor, while `jclass' undefined"
msgstr ""
-#: cp/init.c:2276
+#: cp/init.c:2292
msgid "invalid type `void' for new"
msgstr ""
-#: cp/init.c:2332
+#: cp/init.c:2348
#, c-format
msgid "call to Java constructor, while `%s' undefined"
msgstr ""
-#: cp/init.c:2465 cp/typeck2.c:449 cp/typeck2.c:1256
+#: cp/init.c:2484 cp/typeck2.c:369 cp/typeck2.c:1172
msgid "initializer list being treated as compound expression"
msgstr ""
-#: cp/init.c:2468
+#: cp/init.c:2487
msgid "initializer list appears where operand should be used"
msgstr ""
-#: cp/init.c:2912
+#: cp/init.c:2934
msgid "initialization of array from dissimilar array type"
msgstr ""
-#: cp/init.c:2926
+#: cp/init.c:2948
msgid "initializer ends prematurely"
msgstr ""
-#: cp/init.c:2995
+#: cp/init.c:3017
msgid "cannot initialize multi-dimensional array with initializer"
msgstr ""
-#: cp/init.c:3189
+#: cp/init.c:3211
msgid "unknown array size in delete"
msgstr ""
-#: cp/init.c:3409
+#: cp/init.c:3430
msgid "type to vector delete is neither pointer or array type"
msgstr ""
-#: cp/lex.c:235
+#: cp/lex.c:160
msgid "type name expected before `*'"
msgstr ""
-#: cp/lex.c:257
+#: cp/lex.c:182
msgid "cannot declare references to references"
msgstr ""
-#: cp/lex.c:262
+#: cp/lex.c:187
msgid "cannot declare pointers to references"
msgstr ""
-#: cp/lex.c:266
+#: cp/lex.c:191
msgid "type name expected before `&'"
msgstr ""
-#: cp/lex.c:1134 cp/lex.c:1692
-msgid "parse error at end of saved function text"
-msgstr ""
-
-#: cp/lex.c:1186
-msgid "end of file encountered inside string constant"
-msgstr ""
-
-#: cp/lex.c:1188
-msgid "end of file encountered inside character constant"
-msgstr ""
-
-#: cp/lex.c:1205 cp/lex.c:4413
-msgid "ISO C++ forbids newline in string constant"
-msgstr ""
-
-#: cp/lex.c:1394
-msgid "parse error in method specification"
-msgstr ""
-
-#: cp/lex.c:1487
-msgid "function body for constructor missing"
-msgstr ""
-
-#: cp/lex.c:1778
+#: cp/lex.c:1058
#, c-format
msgid "semicolon missing after %s declaration"
msgstr ""
-#: cp/lex.c:1827
-msgid ""
-"carriage return in source file (we only warn about the first carriage return)"
-msgstr ""
-
-#: cp/lex.c:2267
-msgid "badly nested C headers from preprocessor"
-msgstr ""
-
-#: cp/lex.c:2357
-msgid "invalid #pragma vtable"
-msgstr ""
-
-#: cp/lex.c:2367 cp/lex.c:2381
-msgid "trailing characters ignored"
-msgstr ""
-
-#: cp/lex.c:2376
-msgid "invalid #pragma unit"
-msgstr ""
-
-#: cp/lex.c:2397
-msgid "invalid `#pragma interface'"
-msgstr ""
-
-#: cp/lex.c:2405
-msgid "garbage after `#pragma interface' ignored"
-msgstr ""
-
-#: cp/lex.c:2424
-msgid "invalid `#pragma implementation'"
-msgstr ""
-
-#: cp/lex.c:2432
-msgid "garbage after `#pragma implementation' ignored"
-msgstr ""
-
-#: cp/lex.c:2477
-#, c-format
-msgid "non hex digit '%c' in universal-character-name"
-msgstr ""
-
-#: cp/lex.c:2491
-msgid "universal-character-name on EBCDIC target"
-msgstr ""
-
-#: cp/lex.c:2503
-#, c-format
-msgid ""
-"universal-character-name designates `%c', part of the basic source character "
-"set"
-msgstr ""
-
-#: cp/lex.c:2506
-msgid "invalid universal-character-name"
-msgstr ""
-
-#: cp/lex.c:2536
+#: cp/lex.c:1109
#, c-format
-msgid "universal-character-name `\\U%08x' not valid in identifier"
+msgid "junk at end of #pragma %s"
msgstr ""
-#: cp/lex.c:2782
+#: cp/lex.c:1116
#, c-format
-msgid "universal-character-name `\\u%04x' not valid in identifier"
+msgid "invalid #pragma %s"
msgstr ""
-#: cp/lex.c:2928
+#: cp/lex.c:1208 cppmain.c:269
#, c-format
-msgid "non-ISO-standard escape sequence, `\\%c'"
-msgstr ""
-
-#: cp/lex.c:2962
-#, c-format
-msgid "%s at end of saved text"
+msgid "#pragma implementation for %s appears after file is included"
msgstr ""
-#: cp/lex.c:3149
+#: cp/lex.c:1323
msgid ""
"(Each undeclared identifier is reported only once for each function it "
"appears in.)"
msgstr ""
-#: cp/lex.c:3172
+#: cp/lex.c:1346
#, c-format
msgid "name lookup of `%s' changed"
msgstr ""
-#: cp/lex.c:3186 cp/lex.c:3193
+#: cp/lex.c:1360 cp/lex.c:1367
#, c-format
msgid "name lookup of `%s' changed for new ISO `for' scoping"
msgstr ""
-#: cp/lex.c:3387 cp/lex.c:4100
-msgid "ISO C++ forbids imaginary numeric constants"
-msgstr ""
-
-#: cp/lex.c:3614
-msgid "universal characters in identifiers"
-msgstr ""
-
-#: cp/lex.c:3746
-#, c-format
-msgid "identifier name `%s' conflicts with GNU C++ internal naming strategy"
-msgstr ""
-
-#: cp/lex.c:4090
-msgid "ISO C++ forbids long long integer constants"
-msgstr ""
-
-#: cp/lex.c:4182
-msgid "complex integer constant is too wide for `__complex int'"
-msgstr ""
-
-#: cp/lex.c:4251
-msgid "ISO C++ forbids newline in character constant"
-msgstr ""
-
-#: cp/lex.c:4339 cppexp.c:312
-msgid "malformatted character constant"
-msgstr ""
-
-#: cp/lex.c:4627
-#, c-format
-msgid "use of `operator %s' is not standard C++"
-msgstr ""
-
-#: cp/method.c:906
+#: cp/method.c:907
#, c-format
msgid "conversion of %s as template parameter"
msgstr ""
-#: cp/method.c:1935
+#: cp/method.c:1933
msgid "methods cannot be converted to function pointers"
msgstr ""
-#: cp/method.c:1940
+#: cp/method.c:1938
#, c-format
msgid "ambiguous request for method pointer `%s'"
msgstr ""
-#: cp/method.c:2048
+#: cp/method.c:2046
#, c-format
msgid "request for member `%s' is ambiguous in multiple inheritance lattice"
msgstr ""
-#: parse.y:654
+#: parse.y:652
msgid "invalid default template argument"
msgstr ""
-#: parse.y:859
+#: parse.y:857
msgid "no base or member initializers given following ':'"
msgstr ""
-#: parse.y:875
+#: parse.y:873
msgid "base initializers not allowed for non-member functions"
msgstr ""
-#: parse.y:877
+#: parse.y:875
msgid "only constructors take base initializers"
msgstr ""
-#: parse.y:910 parse.y:916
+#: parse.y:908 parse.y:914
msgid "anachronistic old style base class initializer"
msgstr ""
#. Handle `Class<Class<Type>>' without space in the `>>'
-#: parse.y:1041
+#: parse.y:1036
msgid "`>>' should be `> >' in template class name"
msgstr ""
-#: parse.y:1092 parse.y:1101
+#: parse.y:1093 parse.y:1102
#, c-format
msgid "ISO C++ forbids an empty condition for `%s'"
msgstr ""
-#: parse.y:1195
+#: parse.y:1196
msgid "ISO C++ forbids `&&'"
msgstr ""
-#: parse.y:1280
+#: parse.y:1281
msgid "ISO C++ forbids initialization of new expression with `='"
msgstr ""
-#: parse.y:1310
+#: parse.y:1311
msgid "ISO C++ forbids constructor-expressions"
msgstr ""
-#: parse.y:1505
+#: parse.y:1546
msgid "ISO C++ forbids braced-groups within expressions"
msgstr ""
-#: parse.y:1910 parse.y:1925
+#: parse.y:1951 parse.y:1966
msgid "sigof type specifier"
msgstr ""
-#: parse.y:1915
+#: parse.y:1956
msgid "`sigof' applied to non-aggregate expression"
msgstr ""
-#: parse.y:1930
+#: parse.y:1971
msgid "`sigof' applied to non-aggregate type"
msgstr ""
-#: parse.y:2262
+#: parse.y:2306
#, c-format
msgid "storage class specifier `%s' not allowed after struct or class"
msgstr ""
-#: parse.y:2264
+#: parse.y:2308
#, c-format
msgid "type specifier `%s' not allowed after struct or class"
msgstr ""
-#: parse.y:2266
+#: parse.y:2310
#, c-format
msgid "type qualifier `%s' not allowed after struct or class"
msgstr ""
-#: parse.y:2268
+#: parse.y:2312
msgid "no body nor ';' separates two class, struct or union declarations"
msgstr ""
-#: parse.y:2431
+#: parse.y:2480
msgid "multiple access specifiers"
msgstr ""
-#: parse.y:2449
+#: parse.y:2498
msgid "multiple `virtual' specifiers"
msgstr ""
-#: parse.y:2482
+#: parse.y:2533
msgid "missing ';' before right brace"
msgstr ""
-#: parse.y:2703
+#: parse.y:2754
msgid "ISO C++ forbids array dimensions with parenthesized type in new"
msgstr ""
-#: parse.y:3208
+#: parse.y:3259
msgid "ISO C++ forbids label declarations"
msgstr ""
-#: parse.y:3361
+#: parse.y:3412
msgid "ISO C++ forbids computed gotos"
msgstr ""
-#: parse.y:3368
+#: parse.y:3419
msgid "label must be followed by statement"
msgstr ""
-#: parse.y:3461
+#: parse.y:3512
msgid "ISO C++ forbids compound statements inside for initializations"
msgstr ""
#. This helps us recover from really nasty
#. parse errors, for example, a missing right
#. parenthesis.
-#: parse.y:3544 parse.y:3554
+#: parse.y:3595 parse.y:3605
msgid "possibly missing ')'"
msgstr ""
-#: parse.y:3651 parse.y:3656
+#: parse.y:3702 parse.y:3707
msgid "type specifier omitted for parameter"
msgstr ""
-#: cp/pt.c:1831
+#: cp/pt.c:1829
msgid " a template type parameter must begin with `class' or `typename'"
msgstr ""
-#: cp/pt.c:6250
+#: cp/pt.c:6202
msgid "creating array with size zero"
msgstr ""
-#: cp/pt.c:6750
+#: cp/pt.c:6710
#, c-format
msgid "use of `%s' in template"
msgstr ""
-#: cp/pt.c:7886
+#: cp/pt.c:7851
msgid "incomplete type unification"
msgstr ""
-#: cp/pt.c:8726
+#: cp/pt.c:8702
#, c-format
msgid "use of `%s' in template type unification"
msgstr ""
-#: cp/repo.c:262
+#: cp/repo.c:285
msgid "-frepo must be used with -c"
msgstr ""
-#: cp/repo.c:355
+#: cp/repo.c:378
#, c-format
msgid "mysterious repository information in %s"
msgstr ""
-#: cp/repo.c:370
+#: cp/repo.c:393
#, c-format
msgid "can't create repository information file `%s'"
msgstr ""
-#: cp/rtti.c:250
+#: cp/rtti.c:247
msgid "taking dynamic typeid of object with -fno-rtti"
msgstr ""
-#: cp/rtti.c:292
+#: cp/rtti.c:289
msgid "cannot use typeid with -fno-rtti"
msgstr ""
-#: cp/rtti.c:298 cp/rtti.c:499
+#: cp/rtti.c:295 cp/rtti.c:496
msgid "must #include <typeinfo> before using typeid"
msgstr ""
@@ -7066,382 +7116,358 @@ msgstr ""
msgid "recoverable compiler error, fixups for virtual function"
msgstr ""
-#: cp/spew.c:351
+#: cp/spew.c:245
+#, c-format
+msgid "identifier name `%s' conflicts with GNU C++ internal naming strategy"
+msgstr ""
+
+#: cp/spew.c:360
+msgid "syntax error before '#' token"
+msgstr ""
+
+#: cp/spew.c:364
+msgid "syntax error before '\\' token"
+msgstr ""
+
+#: cp/spew.c:847
msgid "keyword 'export' not implemented and will be ignored"
msgstr ""
-#: cp/tree.c:215
+#: cp/spew.c:1055 cp/spew.c:1324
+msgid "parse error at end of saved function text"
+msgstr ""
+
+#: cp/spew.c:1097
+msgid "parse error in method specification"
+msgstr ""
+
+#: cp/spew.c:1139
+msgid "function body for constructor missing"
+msgstr ""
+
+#: cp/tree.c:217
#, c-format
msgid "non-lvalue in %s"
msgstr ""
-#: cp/tree.c:2202
+#: cp/tree.c:2290
msgid "`com_interface' only supported with -fvtable-thunks"
msgstr ""
-#: cp/tree.c:2211
+#: cp/tree.c:2299
msgid "`com_interface' attribute can only be applied to class definitions"
msgstr ""
-#: cp/tree.c:2228
+#: cp/tree.c:2316
msgid "requested init_priority is not an integer constant"
msgstr ""
-#: cp/tree.c:2249
+#: cp/tree.c:2337
msgid ""
"can only use init_priority attribute on file-scope definitions of objects of "
"class type"
msgstr ""
-#: cp/tree.c:2255
+#: cp/tree.c:2343
msgid "requested init_priority is out of range"
msgstr ""
-#: cp/tree.c:2264
+#: cp/tree.c:2352
msgid "requested init_priority is reserved for internal use"
msgstr ""
-#: cp/typeck.c:449 cp/typeck.c:455
+#: cp/typeck.c:482 cp/typeck.c:488
#, c-format
msgid ""
"ISO C++ forbids %s between pointer of type `void *' and pointer-to-function"
msgstr ""
-#: cp/typeck.c:1553
+#: cp/typeck.c:1557
msgid "ISO C++ forbids applying `sizeof' to a function type"
msgstr ""
-#: cp/typeck.c:1559
+#: cp/typeck.c:1563
msgid "ISO C++ forbids applying `sizeof' to a member function"
msgstr ""
-#: cp/typeck.c:1565
+#: cp/typeck.c:1569
msgid ""
"ISO C++ forbids applying `sizeof' to type `void' which is an incomplete type"
msgstr ""
-#: cp/typeck.c:1603
+#: cp/typeck.c:1607
msgid "sizeof applied to a bit-field"
msgstr ""
-#: cp/typeck.c:1606
+#: cp/typeck.c:1610
msgid "ISO C++ forbids applying `sizeof' to an expression of function type"
msgstr ""
-#: cp/typeck.c:2201
+#: cp/typeck.c:2205
msgid "invalid reference to NULL ptr, use ptr-to-member instead"
msgstr ""
-#: cp/typeck.c:2365
+#: cp/typeck.c:2369
#, c-format
msgid "invalid use of `%s' on pointer to member"
msgstr ""
-#: cp/typeck.c:2371
+#: cp/typeck.c:2375
msgid "invalid type argument"
msgstr ""
-#: cp/typeck.c:2452
+#: cp/typeck.c:2456
msgid "ISO C++ forbids subscripting non-lvalue array"
msgstr ""
-#: cp/typeck.c:2463
+#: cp/typeck.c:2467
msgid "subscripting array declared `register'"
msgstr ""
-#: cp/typeck.c:2638 cp/typeck.c:2778
+#: cp/typeck.c:2642 cp/typeck.c:2782
msgid "pointer to member function called, but not in class scope"
msgstr ""
-#: cp/typeck.c:2776
+#: cp/typeck.c:2780
msgid ""
"invalid call to member function needing `this' in static member function "
"scope"
msgstr ""
-#: cp/typeck.c:2962
+#: cp/typeck.c:2966
msgid "ISO C++ forbids calling `::main' from within program"
msgstr ""
-#: cp/typeck.c:3165
+#: cp/typeck.c:3169
msgid "parameter type of called function is incomplete"
msgstr ""
-#: cp/typeck.c:3555
+#: cp/typeck.c:3560
#, c-format
msgid "%s rotate count is negative"
msgstr ""
-#: cp/typeck.c:3558
+#: cp/typeck.c:3563
#, c-format
msgid "%s rotate count >= width of type"
msgstr ""
-#: cp/typeck.c:3590 cp/typeck.c:3598
-msgid "ISO C++ forbids comparison of `void *' with function pointer"
-msgstr ""
-
-#: cp/typeck.c:3592
-msgid "ISO C++ forbids conversion of a pointer to member to `void *'"
-msgstr ""
-
-#: cp/typeck.c:3614 cp/typeck.c:3619 cp/typeck.c:3763 cp/typeck.c:3768
+#: cp/typeck.c:3594 cp/typeck.c:3599 cp/typeck.c:3729 cp/typeck.c:3734
msgid "ISO C++ forbids comparison between pointer and integer"
msgstr ""
-#: cp/typeck.c:3983
-msgid "comparison between a signed and an unsigned integer expressions"
+#: cp/typeck.c:3949
+msgid "comparison between signed and unsigned integer expressions"
msgstr ""
-#: cp/typeck.c:4122
+#: cp/typeck.c:4088
msgid "ISO C++ forbids using pointer of type `void *' in pointer arithmetic"
msgstr ""
-#: cp/typeck.c:4128
+#: cp/typeck.c:4094
msgid "ISO C++ forbids using a pointer-to-function in pointer arithmetic"
msgstr ""
-#: cp/typeck.c:4134
+#: cp/typeck.c:4100
msgid ""
"ISO C++ forbids using a pointer to member function in pointer arithmetic"
msgstr ""
-#: cp/typeck.c:4140
+#: cp/typeck.c:4106
msgid "ISO C++ forbids using pointer to a member in pointer arithmetic"
msgstr ""
-#: cp/typeck.c:4211
+#: cp/typeck.c:4177
msgid "ISO C++ forbids using pointer of type `void *' in subtraction"
msgstr ""
-#: cp/typeck.c:4213
+#: cp/typeck.c:4179
msgid "ISO C++ forbids using pointer to a function in subtraction"
msgstr ""
-#: cp/typeck.c:4215
+#: cp/typeck.c:4181
msgid "ISO C++ forbids using pointer to a method in subtraction"
msgstr ""
-#: cp/typeck.c:4217
+#: cp/typeck.c:4183
msgid "ISO C++ forbids using pointer to a member in subtraction"
msgstr ""
-#: cp/typeck.c:4228
+#: cp/typeck.c:4195
msgid "invalid use of a pointer to an incomplete type in pointer arithmetic"
msgstr ""
-#: cp/typeck.c:4321
+#: cp/typeck.c:4300
msgid "taking address of temporary"
msgstr ""
-#: cp/typeck.c:4504
+#: cp/typeck.c:4486
#, c-format
msgid "ISO C++ forbids %sing an enum"
msgstr ""
-#: cp/typeck.c:4548
+#: cp/typeck.c:4530
msgid "cast to non-reference type used as lvalue"
msgstr ""
#. ARM $3.4
-#: cp/typeck.c:4626
+#: cp/typeck.c:4608
msgid "ISO C++ forbids taking address of function `::main'"
msgstr ""
-#: cp/typeck.c:4717
+#: cp/typeck.c:4685
msgid "ISO C++ forbids taking the address of a cast to a non-lvalue expression"
msgstr ""
-#: cp/typeck.c:4733
+#: cp/typeck.c:4701
msgid "unary `&'"
msgstr ""
-#: cp/typeck.c:4955
+#: cp/typeck.c:4923
msgid "cannot take the address of `this', which is an ravlue expression"
msgstr ""
-#: cp/typeck.c:5289
+#: cp/typeck.c:5233
msgid ""
"ISO C++ forbids casting between pointer-to-function and pointer-to-object"
msgstr ""
-#: cp/typeck.c:5400 cp/typeck.c:5405
+#: cp/typeck.c:5344 cp/typeck.c:5349
msgid "ISO C++ forbids casting to an array type"
msgstr ""
-#: cp/typeck.c:5732
+#: cp/typeck.c:5676
msgid "ISO C++ forbids cast to non-reference type used as lvalue"
msgstr ""
-#: cp/typeck.c:5838
+#: cp/typeck.c:5782
msgid "ISO C++ forbids assignment of arrays"
msgstr ""
-#: cp/typeck.c:5855
+#: cp/typeck.c:5799
msgid "return value from function receives multiple initializations"
msgstr ""
-#: cp/typeck.c:5997
+#: cp/typeck.c:5941
msgid " in pointer to member function conversion"
msgstr ""
-#: cp/typeck.c:6005
+#: cp/typeck.c:5949
msgid " in pointer to member conversion"
msgstr ""
-#: cp/typeck.c:6719
+#: cp/typeck.c:6669
msgid "returning reference to temporary"
msgstr ""
-#: cp/typeck.c:6726
+#: cp/typeck.c:6676
msgid "reference to non-lvalue returned"
msgstr ""
-#: cp/typeck.c:6778
+#: cp/typeck.c:6722
msgid "returning a value from a destructor"
msgstr ""
#. If a return statement appears in a handler of the
#. function-try-block of a constructor, the program is ill-formed.
-#: cp/typeck.c:6786
+#: cp/typeck.c:6730
msgid "cannot return from a handler of a function-try-block of a constructor"
msgstr ""
#. You can't return a value from a constructor.
-#: cp/typeck.c:6791
+#: cp/typeck.c:6733
msgid "returning a value from a constructor"
msgstr ""
-#: cp/typeck.c:6811
+#: cp/typeck.c:6755
msgid ""
"return-statement with no value, in function declared with a non-void return "
"type"
msgstr ""
-#: cp/typeck.c:6827
+#: cp/typeck.c:6771
msgid ""
"return-statement with a value, in function declared with a void return type"
msgstr ""
-#: cp/typeck2.c:172
+#: cp/typeck2.c:171
msgid " since the following virtual functions are abstract:"
msgstr ""
-#: cp/typeck2.c:323
-msgid "confused by earlier errors, bailing out"
-msgstr ""
-
-#: cp/typeck2.c:330
-msgid "Internal compiler error."
-msgstr ""
-
-#: cp/typeck2.c:332
-#, c-format
-msgid "Internal compiler error %d."
-msgstr ""
-
-#: cp/typeck2.c:334
-msgid "Please submit a full bug report."
-msgstr ""
-
-#: cp/typeck2.c:335
+#: cp/typeck2.c:260
#, c-format
-msgid "See %s for instructions."
+msgid "Internal error #%d."
msgstr ""
-#: cp/typeck2.c:407
+#: cp/typeck2.c:327
msgid "due to the presence of a constructor"
msgstr ""
-#: cp/typeck2.c:431
+#: cp/typeck2.c:351
msgid "comma expression used to initialize return value"
msgstr ""
-#: cp/typeck2.c:440
+#: cp/typeck2.c:360
msgid "cannot initialize arrays using this syntax"
msgstr ""
-#: cp/typeck2.c:496
+#: cp/typeck2.c:416
msgid "ANSI C++ forbids non-constant aggregate initializer expressions"
msgstr ""
-#: cp/typeck2.c:571
+#: cp/typeck2.c:491
msgid "initializing array with parameter list"
msgstr ""
-#: cp/typeck2.c:631
+#: cp/typeck2.c:547
msgid "initializer for scalar variable requires one element"
msgstr ""
-#: cp/typeck2.c:728
+#: cp/typeck2.c:644
msgid "aggregate has a partly bracketed initializer"
msgstr ""
-#: cp/typeck2.c:758 cp/typeck2.c:859
+#: cp/typeck2.c:674 cp/typeck2.c:775
msgid "non-trivial labeled initializers"
msgstr ""
-#: cp/typeck2.c:775
+#: cp/typeck2.c:691
msgid "non-empty initializer for array of empty elements"
msgstr ""
-#: cp/typeck2.c:825
+#: cp/typeck2.c:741
msgid "initializer list for object of class with virtual base classes"
msgstr ""
-#: cp/typeck2.c:831
+#: cp/typeck2.c:747
msgid "initializer list for object of class with base classes"
msgstr ""
-#: cp/typeck2.c:837
+#: cp/typeck2.c:753
msgid "initializer list for object using virtual functions"
msgstr ""
-#: cp/typeck2.c:947
+#: cp/typeck2.c:863
msgid "index value instead of field name in union initializer"
msgstr ""
-#: cp/typeck2.c:1003
+#: cp/typeck2.c:919
msgid "excess elements in aggregate initializer"
msgstr ""
-#: cp/typeck2.c:1106
+#: cp/typeck2.c:1022
msgid "circular pointer delegation detected"
msgstr ""
-#: cp/typeck2.c:1133
+#: cp/typeck2.c:1049
msgid "result of `operator->()' yields non-pointer result"
msgstr ""
-#: cp/typeck2.c:1135
+#: cp/typeck2.c:1051
msgid "base operand of `->' is not a pointer"
msgstr ""
-#: cp/typeck2.c:1402
-#, c-format
-msgid "duplicate label `%s' in switch statement"
-msgstr ""
-
-#: cp/typeck2.c:1405
-#, c-format
-msgid "duplicate label (%d) in switch statement"
-msgstr ""
-
-#: cp/typeck2.c:1412
-#, c-format
-msgid "case value out of range for enum %s"
-msgstr ""
-
-#: cp/typeck2.c:1420
-#, c-format
-msgid "range values `%s' and `%s' reversed"
-msgstr ""
-
-#: cp/typeck2.c:1424
-msgid "range values reversed"
-msgstr ""
-
-#: cp/typeck2.c:1439
+#: cp/typeck2.c:1223
#, c-format
msgid "ISO C++ forbids defining types within %s"
msgstr ""
@@ -7451,11 +7477,14 @@ msgstr ""
msgid "Can't create cross-reference file `%s'"
msgstr ""
-#: ../libiberty/cplus-dem.c:4577 gcc.c:5796
+#: ../libiberty/cplus-dem.c:4788 gcc.c:5681
msgid "Internal gcc abort."
msgstr ""
-#: cpperror.c:61
+#. N.B. The current line in each outer source file is one
+#. greater than the line of the #include, so we must
+#. subtract one to correct for that.
+#: cpperror.c:63
#, c-format
msgid "In file included from %s:%u"
msgstr ""
@@ -7464,398 +7493,232 @@ msgstr ""
#. with "In file included from %s:%ld" and some other
#. tricks. We want something like this:
#.
-#. In file included from sys/select.h:123,
-#. from sys/types.h:234,
-#. from userfile.c:31:
-#. bits/select.h:45: <error message here>
+#. | In file included from sys/select.h:123,
+#. | from sys/types.h:234,
+#. | from userfile.c:31:
+#. | bits/select.h:45: <error message here>
#.
+#. with all the "from"s lined up.
#. The trailing comma is at the beginning of this message,
#. and the trailing colon is not translated.
-#: cpperror.c:76
+#: cpperror.c:79
#, c-format
msgid ""
",\n"
" from %s:%u"
msgstr ""
-#: cpperror.c:94
-msgid "<command line>: "
-msgstr ""
-
-#: cpperror.c:135 diagnostic.c:662
-msgid "warning: "
-msgstr ""
-
-#: cpperror.c:145
+#: cpperror.c:165
msgid "internal error: "
msgstr ""
-#: cpperror.c:149
-#, c-format
-msgid "bad is_error(%d) in v_message"
+#: cpperror.c:184
+msgid "warning: "
msgstr ""
-#: cpperror.c:264 cpperror.c:445 gcc.c:5768
+#: cpperror.c:295 cpperror.c:457 gcc.c:5653 tradcpp.c:4206
#, c-format
msgid "%s: %s"
msgstr ""
-#: cppexp.c:176
-msgid "floating point numbers are not allowed in #if expressions"
+#: cppexp.c:207
+msgid "traditional C rejects the `U' suffix"
msgstr ""
#: cppexp.c:213
-msgid "invalid number in #if expression"
-msgstr ""
-
-#: cppexp.c:218
-msgid "too many 'l' suffixes in integer constant"
-msgstr ""
-
-#: cppexp.c:223
-msgid "too many 'u' suffixes in integer constant"
-msgstr ""
-
-#: cppexp.c:229
msgid "integer constant contains digits beyond the radix"
msgstr ""
-#: cppexp.c:232
+#: cppexp.c:216
msgid "integer constant out of range"
msgstr ""
-#: cppexp.c:239
+#: cppexp.c:222
msgid "integer constant is so large that it is unsigned"
msgstr ""
-#: cppexp.c:386
-msgid "'defined' without an identifier"
-msgstr ""
-
-#: cppexp.c:518
-msgid "string constants are not allowed in #if expressions"
-msgstr ""
-
-#: cppexp.c:535
+#: cppexp.c:231
#, c-format
-msgid "'%.*s' is not defined"
+msgid "invalid suffix '%.*s' on integer constant"
msgstr ""
-#: cppexp.c:551
+#: cppexp.c:418
#, c-format
-msgid "'%.*s' is not allowed in #if expressions"
+msgid "\"%s\" is not defined"
msgstr ""
-#: cppexp.c:615
-#, c-format
-msgid "non-ANSI-standard escape sequence, '\\%c'"
-msgstr ""
-
-#: cppexp.c:658
+#: cppexp.c:493
msgid "octal escape sequence out of range"
msgstr ""
-#: cppexp.c:689
+#: cppexp.c:526
msgid "hex escape sequence out of range"
msgstr ""
-#: cppexp.c:703
+#: cppexp.c:541
msgid "integer overflow in preprocessor expression"
msgstr ""
-#: cppexp.c:1071
+#: cppexp.c:811
+#, c-format
+msgid "impossible operator type %s"
+msgstr ""
+
+#: cppexp.c:920
msgid "comma operator in operand of #if"
msgstr ""
-#: cppfiles.c:166
+#: cppfiles.c:195
#, c-format
-msgid "included file `%s' exists but is not readable"
+msgid "included file \"%s\" exists but is not readable"
msgstr ""
-#: cppfiles.c:174
+#: cppfiles.c:218
#, c-format
msgid "node for '%s' exists, open failed, error '%s', value %lx\n"
msgstr ""
-#: cppfiles.c:321
+#: cppfiles.c:366
#, c-format
msgid "cpp_make_system_header: bad flag %d\n"
msgstr ""
-#: cppfiles.c:323
+#: cppfiles.c:368
msgid "cpp_make_system_header called on non-file buffer"
msgstr ""
-#: cppfiles.c:353 cppfiles.c:431
+#: cppfiles.c:410
+msgid "Multiple include guards may be useful for:\n"
+msgstr ""
+
+#: cppfiles.c:444 cppfiles.c:521
#, c-format
msgid "No include path in which to find %s"
msgstr ""
-#: cppfiles.c:499
+#: cppfiles.c:649
#, c-format
msgid "%s is too large"
msgstr ""
-#: cppfiles.c:507
+#: cppfiles.c:657
#, c-format
msgid "%s is shorter than expected\n"
msgstr ""
-#: cppfiles.c:511
+#: cppfiles.c:661
#, c-format
msgid "%s is a block device"
msgstr ""
-#: cppfiles.c:516
+#: cppfiles.c:666
#, c-format
msgid "%s is a directory"
msgstr ""
-#: cpphash.c:395
-#, c-format
-msgid "macro argument \"%s\" would be stringified in traditional C"
-msgstr ""
-
-#: cpphash.c:434
-#, c-format
-msgid "macro argument \"%s\" is stringified"
-msgstr ""
-
-#: cpphash.c:489 cpphash.c:581
-msgid "`##' at start of macro definition"
-msgstr ""
-
-#: cpphash.c:505 cpphash.c:671
-msgid "`##' at end of macro definition"
-msgstr ""
-
-#: cpphash.c:512
-msgid "empty object-like macro went through full #define"
-msgstr ""
-
-#: cpphash.c:638
-msgid "# is not followed by a macro argument name"
-msgstr ""
-
-#: cpphash.c:669
-msgid "`#' is not followed by a macro argument name"
-msgstr ""
-
-#: cpphash.c:727
-#, c-format
-msgid "first token = %d not %d in collect_formal_parameters"
-msgstr ""
-
-#: cpphash.c:749
-msgid "impossible token in macro argument list"
-msgstr ""
-
-#: cpphash.c:754
-msgid "illegal token in macro argument list"
-msgstr ""
-
-#: cpphash.c:767
-msgid "another parameter follows \"...\""
-msgstr ""
-
-#: cpphash.c:773
-msgid "missing right paren in macro argument list"
-msgstr ""
-
-#: cpphash.c:786
-#, c-format
-msgid "collect_params: argc=%d argslen=0"
-msgstr ""
-
-#: cpphash.c:805
-#, c-format
-msgid "duplicate macro argument name \"%s\""
-msgstr ""
-
-#: cpphash.c:813
-msgid "C99 does not permit use of __VA_ARGS__ as a macro argument name"
-msgstr ""
-
-#: cpphash.c:828
-msgid "C89 does not permit varargs macros"
-msgstr ""
-
-#: cpphash.c:839
-msgid "ISO C does not permit named varargs macros"
-msgstr ""
-
-#: cpphash.c:845
-#, c-format
-msgid "collect_params: impossible token type %d"
-msgstr ""
-
-#: cpphash.c:912
-#, c-format
-msgid "The C standard requires whitespace after #define %s"
-msgstr ""
-
-#: cpphash.c:962
-#, c-format
-msgid "\"%s\" redefined"
-msgstr ""
-
-#: cpphash.c:980
-msgid "this is the location of the previous definition"
-msgstr ""
-
-#: cpphash.c:1210
-#, c-format
-msgid "attempt to use poisoned `%s'."
-msgstr ""
-
-#: cpphash.c:1215
-msgid "invalid special hash type"
-msgstr ""
-
-#: cpphash.c:1340
-#, c-format
-msgid "macroexpand: unexpected token %d (wanted LPAREN)"
-msgstr ""
-
-#: cpphash.c:1357
-msgid "unterminated macro call"
-msgstr ""
-
-#: cpphash.c:1385
-#, c-format
-msgid "arguments given to macro `%s'"
-msgstr ""
-
-#: cpphash.c:1396
-#, c-format
-msgid "macro `%s' used without args"
-msgstr ""
-
-#: cpphash.c:1398
-#, c-format
-msgid "macro `%s' used with just one arg"
-msgstr ""
-
-#: cpphash.c:1400
-#, c-format
-msgid "macro `%s' used with only %d args"
-msgstr ""
-
-#: cpphash.c:1404
-#, c-format
-msgid "macro `%s' used with too many (%d) args"
-msgstr ""
-
-#: cpphash.c:1869
-#, c-format
-msgid "invalid hash type %d in dump_definition"
-msgstr ""
-
-#: cppinit.c:347
+#: cppinit.c:258
#, c-format
-msgid "ignoring nonexistent directory `%s'\n"
+msgid "ignoring nonexistent directory \"%s\"\n"
msgstr ""
-#: cppinit.c:353
+#: cppinit.c:264
#, c-format
msgid "%s: Not a directory"
msgstr ""
-#: cppinit.c:444 cppinit.c:464 cppinit.c:483 cppinit.c:497
+#: cppinit.c:305
#, c-format
-msgid "ignoring duplicate directory `%s'\n"
+msgid "ignoring duplicate directory \"%s\"\n"
msgstr ""
-#: cppinit.c:876
+#: cppinit.c:816
msgid "-MG must be specified with one of -M or -MM"
msgstr ""
-#: cppinit.c:883
-msgid "-lang-chill and -trigraphs are mutually exclusive"
-msgstr ""
-
-#: cppinit.c:917
+#: cppinit.c:855
msgid "#include \"...\" search starts here:\n"
msgstr ""
-#: cppinit.c:921
+#: cppinit.c:859
msgid "#include <...> search starts here:\n"
msgstr ""
-#: cppinit.c:924
+#: cppinit.c:862
msgid "End of search list.\n"
msgstr ""
-#: cppinit.c:1017
+#: cppinit.c:943
msgid "buffers still stacked in cpp_finish"
msgstr ""
-#: cppinit.c:1043
+#: cppinit.c:969 tradcpp.c:945 tradcpp.c:954 tradcpp.c:959
msgid "I/O error on output"
msgstr ""
#. Irix6 "cc -n32" and OSF4 cc have problems with char foo[] = ("string");
#. I.e. a const string initializer with parens around it. That is
#. what N_("string") resolves to, so we make no_* be macros instead.
-#: cppinit.c:1078
+#: cppinit.c:1006
#, c-format
msgid "Argument missing after %s"
msgstr ""
-#: cppinit.c:1079
+#: cppinit.c:1007
#, c-format
msgid "Assertion missing after %s"
msgstr ""
-#: cppinit.c:1080
+#: cppinit.c:1008
#, c-format
msgid "Directory name missing after %s"
msgstr ""
-#: cppinit.c:1081
+#: cppinit.c:1009
#, c-format
msgid "File name missing after %s"
msgstr ""
-#: cppinit.c:1082
+#: cppinit.c:1010
#, c-format
msgid "Macro name missing after %s"
msgstr ""
-#: cppinit.c:1083
+#: cppinit.c:1011
#, c-format
msgid "Path name missing after %s"
msgstr ""
-#: cppinit.c:1084
+#: cppinit.c:1012
#, c-format
msgid "Number missing after %s"
msgstr ""
-#: cppinit.c:1261
+#: cppinit.c:1186
#, c-format
msgid "Too many arguments. Type %s --help for usage info"
msgstr ""
-#: cppinit.c:1343 cppinit.c:1506
+#: cppinit.c:1268 cppinit.c:1406
#, c-format
msgid "GNU CPP version %s (cpplib)\n"
msgstr ""
-#: cppinit.c:1498
+#: cppinit.c:1398 tradcpp.c:565
msgid "Output filename specified twice"
msgstr ""
-#: cppinit.c:1634
+#: cppinit.c:1531
msgid "-I- specified twice"
msgstr ""
-#: cppinit.c:1793
+#: cppinit.c:1682
#, c-format
msgid "Usage: %s [switches] input output\n"
msgstr ""
-#: cppinit.c:1794
+#. To keep the lines from getting too long for some compilers, limit
+#. to about 500 characters (6 lines) per chunk.
+#: cppinit.c:1685
msgid ""
"Switches:\n"
" -include <file> Include the contents of <file> before other "
@@ -7866,6 +7729,10 @@ msgid ""
" -iwithprefixbefore <dir> Add <dir> to the end of the main include path\n"
" -isystem <dir> Add <dir> to the start of the system include "
"path\n"
+msgstr ""
+
+#: cppinit.c:1694
+msgid ""
" -idirafter <dir> Add <dir> to the end of the system include path\n"
" -I <dir> Add <dir> to the end of the main include path\n"
" -I- Fine-grained include path control; see info "
@@ -7876,19 +7743,28 @@ msgid ""
" -nostdinc++ Do not search system include directories for "
"C++\n"
" -o <file> Put output into <file>\n"
-" -pedantic Issue all warnings demanded by strict ANSI C\n"
+msgstr ""
+
+#: cppinit.c:1703
+msgid ""
+" -pedantic Issue all warnings demanded by strict ISO C\n"
" -pedantic-errors Issue -pedantic warnings as errors instead\n"
-" -traditional Follow K&R pre-processor behaviour\n"
-" -trigraphs Support ANSI C trigraphs\n"
+" -trigraphs Support ISO C trigraphs\n"
" -lang-c Assume that the input sources are in C\n"
" -lang-c89 Assume that the input sources are in C89\n"
+msgstr ""
+
+#: cppinit.c:1710
+msgid ""
" -lang-c++ Assume that the input sources are in C++\n"
" -lang-objc Assume that the input sources are in ObjectiveC\n"
" -lang-objc++ Assume that the input sources are in "
"ObjectiveC++\n"
" -lang-asm Assume that the input sources are in assembler\n"
-" -lang-fortran\t\t Assume that the input sources are in Fortran\n"
-" -lang-chill Assume that the input sources are in Chill\n"
+msgstr ""
+
+#: cppinit.c:1716
+msgid ""
" -std=<std name> Specify the conformance standard; one of:\n"
" gnu89, gnu99, c89, c99, iso9899:1990,\n"
" iso9899:199409, iso9899:1999\n"
@@ -7897,20 +7773,31 @@ msgid ""
" -Wtrigraphs Warn if trigraphs are encountered\n"
" -Wno-trigraphs Do not warn about trigraphs\n"
" -Wcomment{s} Warn if one comment starts inside another\n"
+msgstr ""
+
+#: cppinit.c:1726
+msgid ""
" -Wno-comment{s} Do not warn about comments\n"
-" -Wtraditional Warn if a macro argument is/would be turned "
-"into\n"
-" a string if -traditional is specified\n"
-" -Wno-traditional Do not warn about stringification\n"
+" -Wtraditional Warn about features not present in traditional "
+"C\n"
+" -Wno-traditional Do not warn about traditional C\n"
" -Wundef Warn if an undefined macro is used by #if\n"
" -Wno-undef Do not warn about testing undefined macros\n"
" -Wimport Warn about the use of the #import directive\n"
+msgstr ""
+
+#: cppinit.c:1734
+msgid ""
" -Wno-import Do not warn about the use of #import\n"
" -Werror Treat all warnings as errors\n"
" -Wno-error Do not treat warnings as errors\n"
" -Wall Enable all preprocessor warnings\n"
" -M Generate make dependencies\n"
" -MM As -M, but ignore system header files\n"
+msgstr ""
+
+#: cppinit.c:1742
+msgid ""
" -MD As -M, but put output in a .d file\n"
" -MMD As -MD, but ignore system header files\n"
" -MG Treat missing header file as generated files\n"
@@ -7918,12 +7805,20 @@ msgid ""
"output\n"
" -D<macro> Define a <macro> with string '1' as its value\n"
" -D<macro>=<val> Define a <macro> with <val> as its value\n"
+msgstr ""
+
+#: cppinit.c:1750
+msgid ""
" -A<question> (<answer>) Assert the <answer> to <question>\n"
" -A-<question> (<answer>) Disable the <answer> to <question>\n"
" -U<macro> Undefine <macro> \n"
" -v Display the version number\n"
" -H Print the name of header files as they are used\n"
" -C Do not discard comments\n"
+msgstr ""
+
+#: cppinit.c:1758
+msgid ""
" -dM Display a list of macro definitions active at "
"end\n"
" -dD Preserve macro definitions in output\n"
@@ -7932,502 +7827,516 @@ msgid ""
" -ftabstop=<number> Distance between tab stops for column reporting\n"
" -P Do not generate #line directives\n"
" -$ Do not allow '$' in identifiers\n"
+msgstr ""
+
+#: cppinit.c:1767
+msgid ""
" -remap Remap file names when including files.\n"
" --version Display version information\n"
" -h or --help Display this information\n"
msgstr ""
-#: cpplex.c:190
-msgid "macro or `#include' recursion too deep"
+#: cpplex.c:425
+msgid "missing terminating > character"
msgstr ""
-#: cpplex.c:212
-msgid "mark active in cpp_pop_buffer"
+#: cpplex.c:724
+#, c-format
+msgid "trigraph ??%c converted to %c"
msgstr ""
-#: cpplex.c:446
-msgid "length < 0 in cpp_expand_to_buffer"
+#: cpplex.c:728
+#, c-format
+msgid "trigraph ??%c ignored"
msgstr ""
-#: cpplex.c:868 cpplex.c:2450
+#: cpplex.c:841
msgid "'/*' within comment"
msgstr ""
-#: cpplex.c:872 cpplex.c:3028
-msgid "unterminated comment"
+#: cpplex.c:941
+msgid "embedded null character ignored"
msgstr ""
-#: cpplex.c:902
-msgid "backslash-newline within line comment"
+#: cpplex.c:947
+#, c-format
+msgid "%s in preprocessing directive"
msgstr ""
-#: cpplex.c:938
-msgid "C++ style comments are not allowed in traditional C"
+#: cpplex.c:977
+msgid "'$' character in identifier"
msgstr ""
-#: cpplex.c:941 cpplex.c:2984
-msgid "C++ style comments are not allowed in ISO C89"
+#: cpplex.c:1139
+msgid "multi-line string constant"
msgstr ""
-#: cpplex.c:945 cpplex.c:2986
-msgid "(this will be reported only once per input file)"
+#: cpplex.c:1177
+#, c-format
+msgid "missing terminating %c character"
msgstr ""
-#: cpplex.c:993 cpplex.c:2542
-msgid "embedded null character ignored"
+#: cpplex.c:1184
+msgid "possible start of unterminated string literal"
msgstr ""
-#: cpplex.c:995 cpplex.c:2541
-msgid "embedded null characters ignored"
+#: cpplex.c:1194
+msgid "null characters preserved"
msgstr ""
-#: cpplex.c:1015 cpplex.c:1083 cpplex.c:2533
-#, c-format
-msgid "%s in preprocessing directive"
+#: cpplex.c:1195
+msgid "null character preserved"
msgstr ""
-#: cpplex.c:1142
-msgid "unterminated string or character constant"
+#: cpplex.c:1436
+msgid "C++ style comments are not allowed in ISO C89"
msgstr ""
-#: cpplex.c:1147
-msgid "possible real start of unterminated constant"
+#: cpplex.c:1438
+msgid "(this will be reported only once per input file)"
msgstr ""
-#: cpplex.c:1173
-msgid "unterminated character constant"
+#: cpplex.c:1446
+msgid "comment start split across lines"
msgstr ""
-#: cpplex.c:1179
-msgid "string constant runs past end of line"
+#: cpplex.c:1449
+msgid "multi-line comment"
msgstr ""
-#: cpplex.c:1187
-msgid "\\r escape inside string constant"
+#: cpplex.c:1479
+msgid "comment start '/*' split across lines"
msgstr ""
-#: cpplex.c:1209
-msgid "null character in string or character constant"
+#: cpplex.c:1483 tradcpp.c:1348
+msgid "unterminated comment"
msgstr ""
-#: cpplex.c:1211
-msgid "null characters in string or character constant"
+#: cpplex.c:1487
+msgid "comment end '*/' split across lines"
msgstr ""
-#: cpplex.c:1395
-msgid "missing '>' in `#include <FILENAME>'"
+#: cpplex.c:1528
+msgid "backslash-newline at end of file"
msgstr ""
-#: cpplex.c:1412 cpplex.c:1597
-#, c-format
-msgid "unrecognized escape \\r%c"
+#: cpplex.c:1548
+msgid "backslash and newline separated by space"
msgstr ""
-#: cpplex.c:1714
-#, c-format
-msgid "function macro %s must be used with arguments in traditional C"
+#: cpplex.c:1561
+msgid "K+R C ignores #\\n with the # indented"
msgstr ""
-#: cpplex.c:1740
-msgid "vertical tab in preprocessing directive"
+#: cpplex.c:1781
+msgid "no newline at end of file"
msgstr ""
-#: cpplex.c:1742
-msgid "form feed in preprocessing directive"
+#: cpplex.c:1797
+#, c-format
+msgid "invalid preprocessing directive #%s"
msgstr ""
-#: cpplex.c:2104 cpplex.c:2331
-#, c-format
-msgid "trigraph ??%c converted to %c"
+#: cpplex.c:1800
+msgid "invalid preprocessing directive"
msgstr ""
-#: cpplex.c:2107 cpplex.c:2335
+#: cpplex.c:2035
#, c-format
-msgid "trigraph ??%c ignored"
+msgid "Unspellable token %s"
msgstr ""
-#: cpplex.c:2142 cpplex.c:3297
-msgid "no newline at end of file"
+#: cpplex.c:2284
+#, c-format
+msgid "function macro %s must be used with arguments in traditional C"
msgstr ""
-#: cpplex.c:2572
-msgid "'$' character in identifier"
+#: cpplex.c:2418
+#, c-format
+msgid "unterminated argument list for macro \"%s\""
msgstr ""
-#: cpplex.c:2724
-msgid "multi-line string constant"
+#: cpplex.c:2439
+msgid "ISO C99 requires rest arguments to be used"
msgstr ""
-#: cpplex.c:2762
+#: cpplex.c:2445
#, c-format
-msgid "missing terminating %c character"
+msgid "not enough arguments for macro \"%s\""
msgstr ""
-#: cpplex.c:2768
-msgid "possible start of unterminated string literal"
+#: cpplex.c:2453
+#, c-format
+msgid "too many arguments for macro \"%s\""
msgstr ""
-#: cpplex.c:2778
-msgid "null characters preserved"
+#: cpplex.c:2780
+msgid "pasting would not give a valid preprocessing token"
msgstr ""
-#: cpplex.c:2779
-msgid "null character preserved"
+#: cpplex.c:2910
+msgid "invalid string literal, ignoring final '\\'"
msgstr ""
-#: cpplex.c:2993
-msgid "comment start split across lines"
+#: cpplex.c:3060
+msgid "two tokens pushed in a row"
msgstr ""
-#: cpplex.c:2997
-msgid "multi-line comment"
+#: cpplex.c:3082
+#, c-format
+msgid "directive begins with %s?!"
msgstr ""
-#: cpplex.c:3025
-msgid "comment start '/*' split across lines"
+#: cpplex.c:3192
+#, c-format
+msgid "macros nested too deep invoking '%s'"
msgstr ""
-#: cpplex.c:3031
-msgid "comment end '*/' split across lines"
+#: cpplex.c:3314
+#, c-format
+msgid "#%s may not be used inside a macro argument"
msgstr ""
-#: cpplex.c:3081
-msgid "backslash and newline separated by space"
+#: cpplex.c:3501 cpplib.c:260 cpplib.c:1466
+#, c-format
+msgid "attempt to use poisoned \"%s\""
msgstr ""
-#: cpplex.c:3369
-msgid "Unspellable token"
+#: cpplex.c:3505
+msgid "invalid special hash type"
msgstr ""
-#: cpplib.c:188
-msgid "handle_directive called on macro buffer"
+#: cpplex.c:3582
+msgid "<command line>"
msgstr ""
-#: cpplib.c:219
-msgid "# followed by integer"
+#: cpplib.c:165 cpplib.c:210
+#, c-format
+msgid "traditional C ignores #%s with the # indented"
msgstr ""
-#: cpplib.c:247
+#: cpplib.c:170
#, c-format
-msgid "invalid preprocessing directive #%.*s"
+msgid "suggest hiding #%s from traditional C with an indented #"
msgstr ""
-#: cpplib.c:267
+#: cpplib.c:181
#, c-format
-msgid "ignoring #%s because of its indented #"
+msgid "ISO C does not allow #%s"
msgstr ""
-#: cpplib.c:277
-#, c-format
-msgid "#%s may not be used inside a macro argument"
+#: cpplib.c:205
+msgid "# followed by integer"
msgstr ""
-#: cpplib.c:285
-#, c-format
-msgid "ISO C does not allow #%s"
+#: cpplib.c:235
+msgid "\"defined\" cannot be used as a macro name"
msgstr ""
-#: cpplib.c:292
+#: cpplib.c:238
#, c-format
-msgid "traditional C ignores #%s with the # indented"
+msgid "\"%s\" cannot be used as a macro name in C++"
msgstr ""
-#: cpplib.c:296
-#, c-format
-msgid "suggest hiding #%s from traditional C with an indented #"
+#: cpplib.c:242
+msgid "macro names must be identifiers"
msgstr ""
-#: cpplib.c:358
-msgid "#define must be followed by an identifier"
+#: cpplib.c:251
+#, c-format
+msgid "\"%s\" cannot be used as a macro name"
msgstr ""
-#: cpplib.c:370
-msgid "\"defined\" is not a legal macro name"
+#: cpplib.c:289
+msgid "junk on line after #undef"
msgstr ""
-#: cpplib.c:379
+#: cpplib.c:299
#, c-format
-msgid "redefining poisoned `%.*s'"
+msgid "undefining \"%s\""
msgstr ""
-#: cpplib.c:417
+#: cpplib.c:325
#, c-format
msgid "#%s expects \"FILENAME\" or <FILENAME>"
msgstr ""
-#: cpplib.c:425
+#: cpplib.c:331
#, c-format
-msgid "junk at end of #%s"
+msgid "empty file name in #%s"
msgstr ""
-#: cpplib.c:432
+#: cpplib.c:336
#, c-format
-msgid "empty file name in #%s"
+msgid "junk at end of #%s"
msgstr ""
-#: cpplib.c:470
+#: cpplib.c:374
msgid "#import is obsolete, use an #ifndef wrapper in the header file"
msgstr ""
-#: cpplib.c:515
+#: cpplib.c:411
msgid "#include_next in primary source file"
msgstr ""
-#: cpplib.c:546
+#: cpplib.c:439
msgid "invalid format #line"
msgstr ""
-#: cpplib.c:570 cpplib.c:579
-msgid "token after #line is not an integer"
+#: cpplib.c:494
+msgid "token after #line is not a positive integer"
msgstr ""
-#: cpplib.c:585
-msgid "line number out of range in #line"
+#: cpplib.c:499
+msgid "line number out of range"
msgstr ""
-#: cpplib.c:598
-msgid "garbage at end of #line"
-msgstr ""
-
-#: cpplib.c:639
+#: cpplib.c:512
msgid "second token after #line is not a string"
msgstr ""
-#: cpplib.c:675
-msgid "token after #undef is not an identifier"
-msgstr ""
-
-#: cpplib.c:684
-msgid "junk on line after #undef"
-msgstr ""
-
-#: cpplib.c:695
-#, c-format
-msgid "cannot undefine poisoned \"%s\""
-msgstr ""
-
-#: cpplib.c:705
-#, c-format
-msgid "undefining `%s'"
+#: cpplib.c:534
+msgid "garbage at end of #line"
msgstr ""
-#: cpplib.c:731
-#, c-format
-msgid "#error %.*s"
+#: cpplib.c:618
+msgid "invalid #ident"
msgstr ""
-#: cpplib.c:751
+#: cpplib.c:670
#, c-format
-msgid "#warning %.*s"
-msgstr ""
-
-#: cpplib.c:876
-msgid "malformed #pragma directive"
+msgid "unknown #pragma namespace %s"
msgstr ""
-#: cpplib.c:923
+#: cpplib.c:791
msgid "#pragma once is obsolete"
msgstr ""
-#: cpplib.c:926
+#: cpplib.c:794
msgid "#pragma once outside include file"
msgstr ""
-#: cpplib.c:950
-msgid "malformed #pragma implementation"
+#: cpplib.c:815
+msgid "invalid #pragma poison directive"
msgstr ""
-#: cpplib.c:963
+#: cpplib.c:825
#, c-format
-msgid "#pragma implementation for %s appears after file is included"
+msgid "poisoning existing macro \"%s\""
msgstr ""
-#: cpplib.c:995
-msgid "invalid #pragma poison directive"
+#: cpplib.c:847
+msgid "#pragma system_header outside include file"
msgstr ""
-#: cpplib.c:1008
+#: cpplib.c:872
#, c-format
-msgid "poisoning existing macro `%s'"
+msgid "cannot find source %c%s%c"
msgstr ""
-#: cpplib.c:1030
-msgid "#pragma system_header outside include file"
+#: cpplib.c:877
+#, c-format
+msgid "current file is older than %c%.*s%c"
msgstr ""
-#: cpplib.c:1146
+#: cpplib.c:959
#, c-format
msgid "#%s with no argument"
msgstr ""
-#: cpplib.c:1156
+#: cpplib.c:961
#, c-format
msgid "#%s with invalid argument"
msgstr ""
-#: cpplib.c:1164
+#: cpplib.c:963
#, c-format
msgid "garbage at end of #%s"
msgstr ""
-#: cpplib.c:1184 cpplib.c:1208 cpplib.c:1668
+#: cpplib.c:969
#, c-format
-msgid "attempt to use poisoned `%s'"
+msgid "attempt to use poisoned identifier \"%s\""
msgstr ""
-#: cpplib.c:1250
+#: cpplib.c:1043
msgid "#else without #if"
msgstr ""
-#: cpplib.c:1255
+#: cpplib.c:1048 tradcpp.c:3335
msgid "#else after #else"
msgstr ""
-#: cpplib.c:1256 cpplib.c:1293
+#: cpplib.c:1050 cpplib.c:1086
msgid "the conditional began here"
msgstr ""
-#: cpplib.c:1287
+#: cpplib.c:1079
msgid "#elif without #if"
msgstr ""
-#: cpplib.c:1292
+#: cpplib.c:1084 tradcpp.c:3043
msgid "#elif after #else"
msgstr ""
-#: cpplib.c:1322
+#: cpplib.c:1113
msgid "#endif without #if"
msgstr ""
-#: cpplib.c:1372
+#: cpplib.c:1159
#, c-format
msgid "ISO C forbids text after #%s"
msgstr ""
-#: cpplib.c:1391
+#: cpplib.c:1174
#, c-format
msgid "unterminated #%s"
msgstr ""
-#: cppmain.c:61
-#, c-format
-msgid "Invalid option %s"
+#: cpplib.c:1203
+msgid "assertion without predicate"
msgstr ""
-#: cppspec.c:128
-#, c-format
-msgid "`%s' is not a legal option to the preprocessor"
+#: cpplib.c:1208
+msgid "predicate must be an identifier"
msgstr ""
-#: cppspec.c:152
-msgid "too many input files"
+#: cpplib.c:1226
+msgid "missing '(' after predicate"
msgstr ""
-#: cse.c:6873
-#, c-format
-msgid ";; Processing block from %d to %d, %d sets.\n"
+#: cpplib.c:1243
+msgid "missing ')' to complete answer"
msgstr ""
-#: diagnostic.c:518
-#, c-format
-msgid "%s:%d: warning: "
+#: cpplib.c:1266
+msgid "predicate's answer is empty"
msgstr ""
-#: diagnostic.c:520
-#, c-format
-msgid "%s:%d: "
+#: cpplib.c:1276
+msgid "junk at end of assertion"
msgstr ""
-#: diagnostic.c:525
+#: cpplib.c:1337
#, c-format
-msgid "%s: warning: "
+msgid "\"%s\" re-asserted"
msgstr ""
-#: diagnostic.c:527 diagnostic.c:1213
-#, c-format
-msgid "%s: "
+#: cpplib.c:1426
+msgid "<builtin>"
+msgstr ""
+
+#: cpplib.c:1487
+msgid "#include nested too deep"
msgstr ""
-#: diagnostic.c:723
+#: cpplib.c:1492
+msgid "buffer pushed with contexts stacked"
+msgstr ""
+
+#: cppmain.c:79
#, c-format
-msgid "%.*s"
+msgid "Invalid option %s"
msgstr ""
-#: diagnostic.c:1018
-msgid "sorry, not implemented: "
+#: cppmain.c:258
+msgid "malformed #pragma implementation"
msgstr ""
-#: diagnostic.c:1041
+#: cppspec.c:127
#, c-format
-msgid "%s: warnings being treated as errors\n"
+msgid "\"%s\" is not a valid option to the preprocessor"
+msgstr ""
+
+#: cppspec.c:151
+msgid "too many input files"
msgstr ""
-#: diagnostic.c:1088
+#: cse.c:7039
#, c-format
-msgid "%s: %s: I/O error\n"
+msgid ";; Processing block from %d to %d, %d sets.\n"
msgstr ""
-#: diagnostic.c:1190
+#: diagnostic.c:820
#, c-format
-msgid " %s"
+msgid "%s:%d: warning: "
msgstr ""
-#: diagnostic.c:1227 diagnostic.c:1229
-msgid "At top level:\n"
+#: diagnostic.c:822
+#, c-format
+msgid "%s:%d: "
msgstr ""
-#: diagnostic.c:1237 diagnostic.c:1240
+#: diagnostic.c:827
#, c-format
-msgid "In method `%s':\n"
+msgid "%s: warning: "
msgstr ""
-#: diagnostic.c:1247 diagnostic.c:1250
+#: diagnostic.c:829 diagnostic.c:838 diagnostic.c:1235
#, c-format
-msgid "In function `%s':\n"
+msgid "%s: "
+msgstr ""
+
+#: diagnostic.c:923
+msgid "((anonymous))"
+msgstr ""
+
+#: diagnostic.c:1198
+msgid "sorry, not implemented: "
msgstr ""
-#: diagnostic.c:1285
+#: diagnostic.c:1247
#, c-format
-msgid "In file included from %s:%d"
+msgid "In method `%s':"
msgstr ""
-#: diagnostic.c:1287
+#: diagnostic.c:1251
#, c-format
-msgid ""
-",\n"
-" from %s:%d"
+msgid "In function `%s':"
msgstr ""
-#: diagnostic.c:1424
+#: diagnostic.c:1421
msgid "Unrecognizable insn:"
msgstr ""
-#: diagnostic.c:1426
+#: diagnostic.c:1423
msgid "Insn does not satisfy its constraints:"
msgstr ""
-#: dwarf2out.c:2874
+#: diagnostic.c:1658
+#, c-format
+msgid ""
+"Internal compiler error in %s, at %s:%d\n"
+"Please submit a full bug report.\n"
+"See %s for instructions."
+msgstr ""
+
+#: dwarf2out.c:2946
#, c-format
msgid "DW_LOC_OP %s not implememnted yet.\n"
msgstr ""
-#: dwarf2out.c:6501 dwarfout.c:1644
+#: dwarf2out.c:7115 dwarfout.c:1590
#, c-format
msgid "internal regno botch: regno = %d\n"
msgstr ""
-#: emit-rtl.c:963
+#: dwarfout.c:5743
+msgid "getpwd"
+msgstr ""
+
+#: emit-rtl.c:1001
msgid ""
"Unable to access real part of complex value in a hard register on this target"
msgstr ""
-#: emit-rtl.c:986
+#: emit-rtl.c:1024
msgid ""
"Unable to access imaginary part of complex value in a hard register on this "
"target"
msgstr ""
-#: emit-rtl.c:2477
+#: emit-rtl.c:2512
msgid "ICE: emit_insn used where emit_jump_insn needed:\n"
msgstr ""
@@ -8460,375 +8369,558 @@ msgstr ""
msgid "function uses __builtin_eh_return"
msgstr ""
-#: explow.c:1459
+#: explow.c:1461
msgid "stack limits not supported on this target"
msgstr ""
-#: expr.c:2699
+#: expr.c:2696
msgid "function using short complex types cannot be inline"
msgstr ""
-#: expr.c:5669 expr.c:5678 expr.c:5687 expr.c:5692 expr.c:5871 expr.c:5886
+#: expr.c:5684 expr.c:5693 expr.c:5702 expr.c:5707 expr.c:5885 expr.c:5900
msgid "unsupported wide integer operation"
msgstr ""
-#: expr.c:5939
+#: expr.c:5953
#, c-format
msgid "prior parameter's size depends on `%s'"
msgstr ""
-#: expr.c:6337
+#: expr.c:6351
msgid "returned value in block_exit_expr"
msgstr ""
-#: final.c:3382
+#: final.c:3406
#, c-format
msgid "invalid `asm': %s"
msgstr ""
-#: final.c:3385
+#: final.c:3409
#, c-format
msgid "output_operand: %s"
msgstr ""
-#: final.c:3525
+#: final.c:3549
#, c-format
msgid "operand number missing after %-letter"
msgstr ""
-#: final.c:3527 final.c:3560
+#: final.c:3551 final.c:3586
msgid "operand number out of range"
msgstr ""
-#: final.c:3573
+#: final.c:3600
#, ycp-format
msgid "invalid %%-code"
msgstr ""
-#: final.c:3600
+#: final.c:3627
msgid "`%l' operand isn't a label"
msgstr ""
-#: flow.c:3435
+#: flow.c:3575
msgid "ICE: would have deleted prologue/epilogue insn"
msgstr ""
-#: flow.c:6365
+#: flow.c:6620
#, c-format
-msgid "Head insn %d for block %d not found in the insn stream."
+msgid "End insn %d for block %d not found in the insn stream."
msgstr ""
-#: flow.c:6376
+#: flow.c:6634
#, c-format
msgid "Insn %d is in multiple basic blocks (%d and %d)"
msgstr ""
-#: flow.c:6387
+#: flow.c:6645
#, c-format
-msgid "End insn %d for block %d not found in the insn stream."
+msgid "Head insn %d for block %d not found in the insn stream."
msgstr ""
-#: flow.c:6421 flow.c:6448
+#: flow.c:6682 flow.c:6709
#, c-format
msgid "Basic block %i edge lists are corrupted"
msgstr ""
-#: flow.c:6433
+#: flow.c:6694
#, c-format
msgid "Basic block %d pred edge is corrupted"
msgstr ""
-#: flow.c:6463
+#: flow.c:6724
#, c-format
msgid "NOTE_INSN_BASIC_BLOCK is missing for block %d"
msgstr ""
-#: flow.c:6473
+#: flow.c:6732
#, c-format
msgid "NOTE_INSN_BASIC_BLOCK is missing for block %d\n"
msgstr ""
-#: flow.c:6490
+#: flow.c:6748
#, c-format
msgid "NOTE_INSN_BASIC_BLOCK %d in the middle of basic block %d"
msgstr ""
-#: flow.c:6502
+#: flow.c:6760
#, c-format
msgid "In basic block %d:"
msgstr ""
-#: flow.c:6522
+#: flow.c:6779
msgid "Basic blocks not numbered consecutively"
msgstr ""
-#: flow.c:6562
+#: flow.c:6819
#, c-format
msgid "number of bb notes in insn chain (%d) != n_basic_blocks (%d)"
msgstr ""
-#: fold-const.c:3017 fold-const.c:3030
+#: fold-const.c:3016 fold-const.c:3029
#, c-format
msgid "comparison is always %d due to width of bitfield"
msgstr ""
-#: fold-const.c:4073 fold-const.c:4090
+#: fold-const.c:4071 fold-const.c:4088
#, c-format
msgid "comparison is always %d"
msgstr ""
-#: fold-const.c:4221
+#: fold-const.c:4219
msgid "`or' of unmatched not-equal tests is always 1"
msgstr ""
-#: fold-const.c:4226
+#: fold-const.c:4224
msgid "`and' of mutually exclusive equal-tests is always 0"
msgstr ""
-#: function.c:5167
+#: function.c:5223
#, c-format
msgid "`%s' might be used uninitialized in this function"
msgstr ""
-#: function.c:5174
+#: function.c:5230
#, c-format
msgid "variable `%s' might be clobbered by `longjmp' or `vfork'"
msgstr ""
-#: function.c:5192
+#: function.c:5249
#, c-format
msgid "argument `%s' might be clobbered by `longjmp' or `vfork'"
msgstr ""
-#: function.c:5951
+#: function.c:6009
msgid "function returns an aggregate"
msgstr ""
-#: function.c:6460
+#: function.c:6518
#, c-format
msgid "unused parameter `%s'"
msgstr ""
-#: gcc.c:978
+#: gcc.c:901
#, c-format
msgid "Ambiguous abbreviation %s"
msgstr ""
-#: gcc.c:1005
+#: gcc.c:928
#, c-format
msgid "Incomplete `%s' option"
msgstr ""
-#: gcc.c:1016
+#: gcc.c:939
#, c-format
msgid "Missing argument to `%s' option"
msgstr ""
-#: gcc.c:1029
+#: gcc.c:952
#, c-format
msgid "Extraneous argument to `%s' option"
msgstr ""
-#: gcc.c:1196
+#: gcc.c:1123
msgid "Using builtin specs.\n"
msgstr ""
-#: gcc.c:1279
+#: gcc.c:1203
#, c-format
msgid ""
"Setting spec %s to '%s'\n"
"\n"
msgstr ""
-#: gcc.c:1475
+#: gcc.c:1394
#, c-format
msgid "Reading specs from %s\n"
msgstr ""
-#: gcc.c:1572 gcc.c:1590
+#: gcc.c:1491 gcc.c:1509
msgid "specs %%include syntax malformed after %ld characters"
msgstr ""
-#: gcc.c:1598
+#: gcc.c:1517
#, c-format
msgid "Could not find specs file %s\n"
msgstr ""
-#: gcc.c:1614 gcc.c:1622 gcc.c:1631 gcc.c:1640
+#: gcc.c:1533 gcc.c:1541 gcc.c:1550 gcc.c:1559
msgid "specs %%rename syntax malformed after %ld characters"
msgstr ""
-#: gcc.c:1649
+#: gcc.c:1568
#, c-format
msgid "specs %s spec was not found to be renamed"
msgstr ""
-#: gcc.c:1656
+#: gcc.c:1575
#, c-format
msgid "rename spec %s to %s\n"
msgstr ""
-#: gcc.c:1658
+#: gcc.c:1577
#, c-format
msgid ""
"spec is '%s'\n"
"\n"
msgstr ""
-#: gcc.c:1671
+#: gcc.c:1590
msgid "specs unknown %% command after %ld characters"
msgstr ""
-#: gcc.c:1682 gcc.c:1695
+#: gcc.c:1601 gcc.c:1614
#, c-format
msgid "specs file malformed after %ld characters"
msgstr ""
-#: gcc.c:1751
+#: gcc.c:1668
msgid "spec file has no spec for linking"
msgstr ""
-#: gcc.c:2482
+#: gcc.c:2436
+msgid "-pipe not supported"
+msgstr ""
+
+#: gcc.c:2472
+msgid ""
+"\n"
+"Go ahead? (y or n) "
+msgstr ""
+
+#: gcc.c:2571
#, c-format
-msgid "file path prefix `%s%s' never used"
+msgid ""
+"Internal error: %s (program %s)\n"
+"Please submit a full bug report.\n"
+"See %s for instructions."
msgstr ""
-#: gcc.c:2485
+#: gcc.c:2589
#, c-format
-msgid "file path prefix `%s' never used"
+msgid "# %s %.2f %.2f\n"
msgstr ""
-#: gcc.c:2541
-msgid "-pipe not supported"
+#: gcc.c:2716
+#, c-format
+msgid "Usage: %s [options] file...\n"
+msgstr ""
+
+#: gcc.c:2717
+msgid "Options:\n"
+msgstr ""
+
+#: gcc.c:2719
+msgid " -pass-exit-codes Exit with highest error code from a phase\n"
+msgstr ""
+
+#: gcc.c:2720
+msgid " --help Display this information\n"
+msgstr ""
+
+#: gcc.c:2722
+msgid " (Use '-v --help' to display command line options of sub-processes)\n"
+msgstr ""
+
+#: gcc.c:2723
+msgid " -dumpspecs Display all of the built in spec strings\n"
+msgstr ""
+
+#: gcc.c:2724
+msgid " -dumpversion Display the version of the compiler\n"
+msgstr ""
+
+#: gcc.c:2725
+msgid " -dumpmachine Display the compiler's target processor\n"
msgstr ""
-#: gcc.c:2577
+#: gcc.c:2726
msgid ""
-"\n"
-"Go ahead? (y or n) "
+" -print-search-dirs Display the directories in the compiler's search "
+"path\n"
msgstr ""
-#: gcc.c:2664
-#, c-format
-msgid "Internal compiler error: program %s got fatal signal %d"
+#: gcc.c:2727
+msgid ""
+" -print-libgcc-file-name Display the name of the compiler's companion "
+"library\n"
+msgstr ""
+
+#: gcc.c:2728
+msgid " -print-file-name=<lib> Display the full path to library <lib>\n"
+msgstr ""
+
+#: gcc.c:2729
+msgid ""
+" -print-prog-name=<prog> Display the full path to compiler component "
+"<prog>\n"
+msgstr ""
+
+#: gcc.c:2730
+msgid ""
+" -print-multi-directory Display the root directory for versions of "
+"libgcc\n"
+msgstr ""
+
+#: gcc.c:2731
+msgid ""
+" -print-multi-lib Display the mapping between command line options "
+"and\n"
+" multiple library search directories\n"
+msgstr ""
+
+#: gcc.c:2734
+msgid ""
+" -Wa,<options> Pass comma-separated <options> on to the "
+"assembler\n"
+msgstr ""
+
+#: gcc.c:2735
+msgid ""
+" -Wp,<options> Pass comma-separated <options> on to the "
+"preprocessor\n"
+msgstr ""
+
+#: gcc.c:2736
+msgid ""
+" -Wl,<options> Pass comma-separated <options> on to the linker\n"
+msgstr ""
+
+#: gcc.c:2737
+msgid " -Xlinker <arg> Pass <arg> on to the linker\n"
+msgstr ""
+
+#: gcc.c:2738
+msgid " -save-temps Do not delete intermediate files\n"
+msgstr ""
+
+#: gcc.c:2739
+msgid " -pipe Use pipes rather than intermediate files\n"
+msgstr ""
+
+#: gcc.c:2740
+msgid " -time Time the execution of each subprocess\n"
+msgstr ""
+
+#: gcc.c:2741
+msgid ""
+" -specs=<file> Override builtin specs with the contents of "
+"<file>\n"
+msgstr ""
+
+#: gcc.c:2742
+msgid ""
+" -std=<standard> Assume that the input sources are for <standard>\n"
+msgstr ""
+
+#: gcc.c:2743
+msgid ""
+" -B <directory> Add <directory> to the compiler's search paths\n"
+msgstr ""
+
+#: gcc.c:2744
+msgid " -b <machine> Run gcc for target <machine>, if installed\n"
msgstr ""
-#: gcc.c:2679
+#: gcc.c:2745
+msgid ""
+" -V <version> Run gcc version number <version>, if installed\n"
+msgstr ""
+
+#: gcc.c:2746
+msgid ""
+" -v Display the programs invoked by the compiler\n"
+msgstr ""
+
+#: gcc.c:2747
+msgid ""
+" -E Preprocess only; do not compile, assemble or "
+"link\n"
+msgstr ""
+
+#: gcc.c:2748
+msgid " -S Compile only; do not assemble or link\n"
+msgstr ""
+
+#: gcc.c:2749
+msgid " -c Compile and assemble, but do not link\n"
+msgstr ""
+
+#: gcc.c:2750
+msgid " -o <file> Place the output into <file>\n"
+msgstr ""
+
+#: gcc.c:2751
+msgid ""
+" -x <language> Specify the language of the following input "
+"files\n"
+" Permissable languages include: c c++ assembler "
+"none\n"
+" 'none' means revert to the default behaviour of\n"
+" guessing the language based on the file's "
+"extension\n"
+msgstr ""
+
+#: gcc.c:2758
#, c-format
-msgid "# %s %.2f %.2f\n"
+msgid ""
+"\n"
+"Options starting with -g, -f, -m, -O or -W are automatically passed on to\n"
+"the various sub-processes invoked by %s. In order to pass other options\n"
+"on to these processes the -W<letter> options must be used.\n"
msgstr ""
-#: gcc.c:3190
+#: gcc.c:3106
msgid "argument to `-Xlinker' is missing"
msgstr ""
-#: gcc.c:3207
+#: gcc.c:3123
msgid "argument to `-specs' is missing"
msgstr ""
-#: gcc.c:3222
+#: gcc.c:3138
msgid "argument to `-specs=' is missing"
msgstr ""
-#: gcc.c:3244
+#: gcc.c:3160
msgid "argument to `-b' is missing"
msgstr ""
-#: gcc.c:3257
+#: gcc.c:3173
msgid "argument to `-B' is missing"
msgstr ""
-#: gcc.c:3309
+#: gcc.c:3226
msgid "argument to `-V' is missing"
msgstr ""
-#: gcc.c:3330 gcc.c:3337 gcc.c:3344
+#: gcc.c:3247 gcc.c:3254 gcc.c:3261
msgid "invalid version number format"
msgstr ""
-#: gcc.c:3415
+#: gcc.c:3332
msgid "cannot specify -o with -c or -S and multiple compilations"
msgstr ""
-#: gcc.c:3585
+#: gcc.c:3501
msgid "Warning: -pipe ignored since -save-temps specified"
msgstr ""
-#: gcc.c:3589
+#: gcc.c:3505
msgid "Warning: -pipe ignored since -time specified"
msgstr ""
-#: gcc.c:3599
+#: gcc.c:3515
msgid "argument to `-x' is missing"
msgstr ""
-#: gcc.c:3627
+#: gcc.c:3543
#, c-format
msgid "argument to `-%s' is missing"
msgstr ""
-#: gcc.c:3687
+#: gcc.c:3603
#, c-format
msgid "Warning: `-x %s' after last input file has no effect"
msgstr ""
-#: gcc.c:3883
+#: gcc.c:3800
msgid "Invalid specification! Bug in cc."
msgstr ""
#. Catch the case where a spec string contains something like
#. '%{foo:%*}'. ie there is no * in the pattern on the left
#. hand side of the :.
-#: gcc.c:4485
+#: gcc.c:4409
#, ycp-format
msgid "Spec failure: '%%*' has not been initialised by pattern match"
msgstr ""
-#: gcc.c:4494
+#: gcc.c:4418
#, ycp-format
msgid "Warning: use of obsolete %%[ operator in specs"
msgstr ""
-#: gcc.c:4512
+#: gcc.c:4436
#, c-format
msgid "Processing spec %c%s%c, which is '%s'\n"
msgstr ""
-#: gcc.c:4636
+#: gcc.c:4560
#, c-format
msgid "Spec failure: Unrecognised spec option '%c'"
msgstr ""
-#: gcc.c:5425
+#: gcc.c:5348
#, c-format
msgid "unrecognized option `-%s'"
msgstr ""
-#: gcc.c:5495
+#: gcc.c:5354
+#, c-format
+msgid "install: %s%s\n"
+msgstr ""
+
+#: gcc.c:5355
+#, c-format
+msgid "programs: %s\n"
+msgstr ""
+
+#: gcc.c:5356
+#, c-format
+msgid "libraries: %s\n"
+msgstr ""
+
+#: gcc.c:5394
+msgid ""
+"\n"
+"For bug reporting instructions, please see:\n"
+msgstr ""
+
+#: gcc.c:5418
#, c-format
msgid "gcc version %s\n"
msgstr ""
-#: gcc.c:5497
+#: gcc.c:5420
#, c-format
msgid "gcc driver version %s executing gcc version %s\n"
msgstr ""
-#: gcc.c:5505
+#: gcc.c:5428
msgid "No input files"
msgstr ""
-#: gcc.c:5544
+#: gcc.c:5465
#, c-format
msgid "%s: %s compiler not installed on this system"
msgstr ""
-#: gcc.c:5637
+#: gcc.c:5535
#, c-format
msgid "%s: linker input file unused since linking not done"
msgstr ""
-#: gcc.c:5680
+#: gcc.c:5578
#, c-format
msgid "language %s not recognized"
msgstr ""
@@ -8865,11 +8957,11 @@ msgstr ""
msgid "No executable code associated with file %s.\n"
msgstr ""
-#: gcov.c:747 profile.c:982
+#: gcov.c:747 profile.c:978
msgid ".da file contents exhausted too early\n"
msgstr ""
-#: gcov.c:750 profile.c:985
+#: gcov.c:750 profile.c:981
msgid ".da file contents not exhausted\n"
msgstr ""
@@ -9057,173 +9149,186 @@ msgstr ""
msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr ""
-#: integrate.c:154
+#: haifa-sched.c:232
+#, c-format
+msgid "fix_sched_param: unknown param: %s"
+msgstr ""
+
+#: hash.c:52 hash.c:59 hash.c:162 hash.c:239
+msgid "no memory"
+msgstr ""
+
+#: integrate.c:153
msgid "varargs function cannot be inline"
msgstr ""
-#: integrate.c:157
+#: integrate.c:156
msgid "function using alloca cannot be inline"
msgstr ""
-#: integrate.c:160
+#: integrate.c:159
msgid "function using setjmp cannot be inline"
msgstr ""
-#: integrate.c:163
+#: integrate.c:162
msgid "function with nested functions cannot be inline"
msgstr ""
-#: integrate.c:167
+#: integrate.c:166
msgid "function with label addresses used in initializers cannot inline"
msgstr ""
-#: integrate.c:174 integrate.c:218
+#: integrate.c:173 integrate.c:217
msgid "function too large to be inline"
msgstr ""
-#: integrate.c:184
+#: integrate.c:183
msgid "no prototype, and parameter address used; cannot be inline"
msgstr ""
-#: integrate.c:191 integrate.c:247
+#: integrate.c:190 integrate.c:246
msgid "inline functions not supported for this return value type"
msgstr ""
-#: integrate.c:196
+#: integrate.c:195
msgid "function with varying-size return value cannot be inline"
msgstr ""
-#: integrate.c:203
+#: integrate.c:202
msgid "function with varying-size parameter cannot be inline"
msgstr ""
-#: integrate.c:206
+#: integrate.c:205
msgid "function with transparent unit parameter cannot be inline"
msgstr ""
-#: integrate.c:225
+#: integrate.c:224
msgid "function with computed jump cannot inline"
msgstr ""
-#: integrate.c:229
+#: integrate.c:228
msgid "function with nonlocal goto cannot be inline"
msgstr ""
-#: integrate.c:241
+#: integrate.c:240
msgid "function with complex parameters cannot be inline"
msgstr ""
-#: integrate.c:254
+#: integrate.c:253
msgid "function with target specific attribute(s) cannot be inlined"
msgstr ""
-#: objc/objc-act.c:770
+#: objc/objc-act.c:760
msgid "Objective-C text in C source file"
msgstr ""
-#: objc/objc-act.c:981
+#: objc/objc-act.c:814
+msgid "no class name specified as argument to -fconstant-string-class"
+msgstr ""
+
+#: objc/objc-act.c:977
#, c-format
msgid "object does not conform to the `%s' protocol"
msgstr ""
-#: objc/objc-act.c:1019
+#: objc/objc-act.c:1015
#, c-format
msgid "class `%s' does not implement the `%s' protocol"
msgstr ""
-#: objc/objc-act.c:1101
+#: objc/objc-act.c:1097
#, c-format
msgid "`%s' cannot be statically allocated"
msgstr ""
-#: objc/objc-act.c:1102
+#: objc/objc-act.c:1098
msgid "statically allocated objects not supported"
msgstr ""
-#: objc/objc-act.c:1160
+#: objc/objc-act.c:1156
#, c-format
msgid "Unexpected type for `id' (%s)"
msgstr ""
-#: objc/objc-act.c:1164
+#: objc/objc-act.c:1160
msgid "Undefined type `id', please import <objc/objc.h>"
msgstr ""
-#: objc/objc-act.c:1210 objc/objc-act.c:5392
+#: objc/objc-act.c:1206 objc/objc-act.c:5375
#, c-format
msgid "Cannot find protocol declaration for `%s'"
msgstr ""
-#: objc-parse.y:1342 objc/objc-act.c:1447 objc/objc-act.c:5918
-#: objc/objc-act.c:6219 objc/objc-act.c:6268 objc/objc-act.c:6304
+#: objc-parse.y:1358 objc/objc-act.c:1431 objc/objc-act.c:5901
+#: objc/objc-act.c:6202 objc/objc-act.c:6251 objc/objc-act.c:6287
#, c-format
msgid "Cannot find interface declaration for `%s'"
msgstr ""
-#: objc/objc-act.c:2484
+#: objc/objc-act.c:2467
#, c-format
msgid "Cannot find class `%s'"
msgstr ""
-#: objc/objc-act.c:2486
+#: objc/objc-act.c:2469
#, c-format
msgid "Class `%s' already exists"
msgstr ""
#. fatal did not work with 2 args...should fix
-#: objc/objc-act.c:2613
+#: objc/objc-act.c:2596
#, c-format
msgid "Cannot find interface declaration for `%s', superclass of `%s'"
msgstr ""
-#: objc/objc-act.c:2621
+#: objc/objc-act.c:2604
#, c-format
msgid "Circular inheritance in interface declaration for `%s'"
msgstr ""
-#: objc/objc-act.c:3669 objc/objc-act.c:3686
+#: objc/objc-act.c:3652 objc/objc-act.c:3669
msgid "inconsistent instance variable specification"
msgstr ""
-#: objc/objc-act.c:4879
+#: objc/objc-act.c:4862
#, c-format
msgid "multiple declarations for method `%s'"
msgstr ""
-#: objc/objc-act.c:4996
+#: objc/objc-act.c:4979
#, c-format
msgid "invalid receiver type `%s'"
msgstr ""
-#: objc/objc-act.c:5064 objc/objc-act.c:5090 objc/objc-act.c:5138
+#: objc/objc-act.c:5047 objc/objc-act.c:5073 objc/objc-act.c:5121
#, c-format
msgid "`%s' does not respond to `%s'"
msgstr ""
-#: objc/objc-act.c:5070 objc/objc-act.c:7328
+#: objc/objc-act.c:5053 objc/objc-act.c:7311
#, c-format
msgid "no super class declared in interface for `%s'"
msgstr ""
-#: objc/objc-act.c:5168
+#: objc/objc-act.c:5151
msgid "cannot find class (factory) method."
msgstr ""
-#: objc/objc-act.c:5169 objc/objc-act.c:5213
+#: objc/objc-act.c:5152 objc/objc-act.c:5196
#, c-format
msgid "return type for `%s' defaults to id"
msgstr ""
-#: objc/objc-act.c:5186
+#: objc/objc-act.c:5169
#, c-format
msgid "method `%s' not implemented by protocol."
msgstr ""
-#: objc/objc-act.c:5195
+#: objc/objc-act.c:5178
msgid "return type defaults to id"
msgstr ""
-#: objc/objc-act.c:5212
+#: objc/objc-act.c:5195
msgid "cannot find method."
msgstr ""
@@ -9236,112 +9341,112 @@ msgstr ""
#. to an instance variable. It's better to catch the cases
#. where this is done unknowingly than to support the above
#. paradigm.
-#: objc/objc-act.c:5467
+#: objc/objc-act.c:5450
#, c-format
msgid "instance variable `%s' accessed in class method"
msgstr ""
-#: objc/objc-act.c:5719
+#: objc/objc-act.c:5702
#, c-format
msgid "duplicate definition of class method `%s'."
msgstr ""
-#: objc/objc-act.c:5725
+#: objc/objc-act.c:5708
#, c-format
msgid "duplicate declaration of class method `%s'."
msgstr ""
-#: objc/objc-act.c:5761
+#: objc/objc-act.c:5744
#, c-format
msgid "duplicate definition of instance method `%s'."
msgstr ""
-#: objc/objc-act.c:5767
+#: objc/objc-act.c:5750
#, c-format
msgid "duplicate declaration of instance method `%s'."
msgstr ""
-#: objc/objc-act.c:5807
+#: objc/objc-act.c:5790
#, c-format
msgid "duplicate interface declaration for category `%s(%s)'"
msgstr ""
-#: objc/objc-act.c:5893
+#: objc/objc-act.c:5876
#, c-format
msgid "instance variable `%s' is declared private"
msgstr ""
-#: objc/objc-act.c:5940
+#: objc/objc-act.c:5923
#, c-format
msgid "instance variable `%s' is declared %s"
msgstr ""
-#: objc/objc-act.c:5950
+#: objc/objc-act.c:5933
msgid "static access to object of type `id'"
msgstr ""
-#: objc/objc-act.c:5987 objc/objc-act.c:6081
+#: objc/objc-act.c:5970 objc/objc-act.c:6064
#, c-format
msgid "incomplete implementation of class `%s'"
msgstr ""
-#: objc/objc-act.c:5991 objc/objc-act.c:6086
+#: objc/objc-act.c:5974 objc/objc-act.c:6069
#, c-format
msgid "incomplete implementation of category `%s'"
msgstr ""
-#: objc/objc-act.c:5996 objc/objc-act.c:6091
+#: objc/objc-act.c:5979 objc/objc-act.c:6074
#, c-format
msgid "method definition for `%c%s' not found"
msgstr ""
-#: objc/objc-act.c:6132
+#: objc/objc-act.c:6115
#, c-format
msgid "%s `%s' does not fully implement the `%s' protocol"
msgstr ""
-#: objc/objc-act.c:6191
+#: objc/objc-act.c:6174
#, c-format
msgid "reimplementation of class `%s'"
msgstr ""
-#: objc/objc-act.c:6233
+#: objc/objc-act.c:6216
#, c-format
msgid "conflicting super class name `%s'"
msgstr ""
-#: objc/objc-act.c:6248
+#: objc/objc-act.c:6231
#, c-format
msgid "duplicate interface declaration for class `%s'"
msgstr ""
-#: objc/objc-act.c:6494
+#: objc/objc-act.c:6477
#, c-format
msgid "duplicate declaration for protocol `%s'"
msgstr ""
-#: objc/objc-act.c:7369
+#: objc/objc-act.c:7352
msgid "[super ...] must appear in a method context"
msgstr ""
-#: objc/objc-act.c:8321 objc/objc-act.c:8337
+#: objc/objc-act.c:8304 objc/objc-act.c:8320
#, c-format
msgid "potential selector conflict for method `%s'"
msgstr ""
-#: objc-parse.y:2206
+#: objc-parse.y:2095
msgid "`@end' must appear in an implementation context"
msgstr ""
-#: objc-parse.y:2472 objc-parse.y:2497
+#: objc-parse.y:2361 objc-parse.y:2386
msgid "method definition not in class context"
msgstr ""
-#: profile.c:495
+#: profile.c:491
msgid "Arc profiling: some edge counts were bad."
msgstr ""
-#: profile.c:936
+#: profile.c:932
#, c-format
msgid "file %s not found, execution counts assumed to be zero."
msgstr ""
@@ -9406,539 +9511,536 @@ msgstr ""
msgid "%s:%d: declaration of function `%s' takes different forms\n"
msgstr ""
-#: protoize.c:2039
+#: protoize.c:2045
#, c-format
msgid "%s: compiling `%s'\n"
msgstr ""
-#: protoize.c:2062
+#: protoize.c:2068
#, c-format
msgid "%s: wait: %s\n"
msgstr ""
-#: protoize.c:2067
+#: protoize.c:2073
#, c-format
msgid "%s: subprocess got fatal signal %d\n"
msgstr ""
-#: protoize.c:2075
+#: protoize.c:2081
#, c-format
msgid "%s: %s exited with status %d\n"
msgstr ""
-#: protoize.c:2127
+#: protoize.c:2133
#, c-format
msgid "%s: warning: missing SYSCALLS file `%s'\n"
msgstr ""
-#: protoize.c:2136 protoize.c:2165
+#: protoize.c:2142 protoize.c:2171
#, c-format
msgid "%s: can't read aux info file `%s': %s\n"
msgstr ""
-#: protoize.c:2181 protoize.c:2209
+#: protoize.c:2187 protoize.c:2215
#, c-format
msgid "%s: can't get status of aux info file `%s': %s\n"
msgstr ""
-#: protoize.c:2237
+#: protoize.c:2243
#, c-format
msgid "%s: can't open aux info file `%s' for reading: %s\n"
msgstr ""
-#: protoize.c:2255
+#: protoize.c:2261
#, c-format
msgid "%s: error reading aux info file `%s': %s\n"
msgstr ""
-#: protoize.c:2268
+#: protoize.c:2274
#, c-format
msgid "%s: error closing aux info file `%s': %s\n"
msgstr ""
-#: protoize.c:2284
+#: protoize.c:2290
#, c-format
msgid "%s: can't delete aux info file `%s': %s\n"
msgstr ""
-#: protoize.c:2366 protoize.c:4368
+#: protoize.c:2372 protoize.c:4374
#, c-format
msgid "%s: can't delete file `%s': %s\n"
msgstr ""
-#: protoize.c:2445
+#: protoize.c:2451
#, c-format
msgid "%s: warning: can't rename file `%s' to `%s': %s\n"
msgstr ""
-#: protoize.c:2570
+#: protoize.c:2576
#, c-format
msgid "%s: conflicting extern definitions of '%s'\n"
msgstr ""
-#: protoize.c:2574
+#: protoize.c:2580
#, c-format
msgid "%s: declarations of '%s' will not be converted\n"
msgstr ""
-#: protoize.c:2576
+#: protoize.c:2582
#, c-format
msgid "%s: conflict list for '%s' follows:\n"
msgstr ""
-#: protoize.c:2609
+#: protoize.c:2615
#, c-format
msgid "%s: warning: using formals list from %s(%d) for function `%s'\n"
msgstr ""
-#: protoize.c:2649
+#: protoize.c:2655
#, c-format
msgid "%s: %d: `%s' used but missing from SYSCALLS\n"
msgstr ""
-#: protoize.c:2655
+#: protoize.c:2661
#, c-format
msgid "%s: %d: warning: no extern definition for `%s'\n"
msgstr ""
-#: protoize.c:2686
+#: protoize.c:2692
#, c-format
msgid "%s: warning: no static definition for `%s' in file `%s'\n"
msgstr ""
-#: protoize.c:2692
+#: protoize.c:2698
#, c-format
msgid "%s: multiple static defs of `%s' in file `%s'\n"
msgstr ""
-#: protoize.c:2865 protoize.c:2868
+#: protoize.c:2871 protoize.c:2874
#, c-format
msgid "%s: %d: warning: source too confusing\n"
msgstr ""
-#: protoize.c:3074
+#: protoize.c:3080
#, c-format
msgid "%s: %d: warning: varargs function declaration not converted\n"
msgstr ""
-#: protoize.c:3089
+#: protoize.c:3095
#, c-format
msgid "%s: declaration of function `%s' not converted\n"
msgstr ""
-#: protoize.c:3212
+#: protoize.c:3218
#, c-format
msgid "%s: warning: too many parameter lists in declaration of `%s'\n"
msgstr ""
-#: protoize.c:3233
+#: protoize.c:3239
#, c-format
msgid ""
"\n"
"%s: warning: too few parameter lists in declaration of `%s'\n"
msgstr ""
-#: protoize.c:3331
+#: protoize.c:3337
#, c-format
msgid "%s: %d: warning: found `%s' but expected `%s'\n"
msgstr ""
-#: protoize.c:3509
+#: protoize.c:3515
#, c-format
msgid "%s: local declaration for function `%s' not inserted\n"
msgstr ""
-#: protoize.c:3536
+#: protoize.c:3542
#, c-format
msgid ""
"\n"
"%s: %d: warning: can't add declaration of `%s' into macro call\n"
msgstr ""
-#: protoize.c:3610
+#: protoize.c:3616
#, c-format
msgid "%s: global declarations for file `%s' not inserted\n"
msgstr ""
-#: protoize.c:3701 protoize.c:3731
+#: protoize.c:3707 protoize.c:3737
#, c-format
msgid "%s: definition of function `%s' not converted\n"
msgstr ""
-#: protoize.c:3720
+#: protoize.c:3726
#, c-format
msgid "%s: %d: warning: definition of %s not converted\n"
msgstr ""
-#: protoize.c:4050
+#: protoize.c:4056
#, c-format
msgid "%s: found definition of `%s' at %s(%d)\n"
msgstr ""
#. If we make it here, then we did not know about this
#. function definition.
-#: protoize.c:4066
+#: protoize.c:4072
#, c-format
msgid "%s: %d: warning: `%s' excluded by preprocessing\n"
msgstr ""
-#: protoize.c:4069
+#: protoize.c:4075
#, c-format
msgid "%s: function definition not converted\n"
msgstr ""
-#: protoize.c:4128
+#: protoize.c:4134
#, c-format
msgid "%s: `%s' not converted\n"
msgstr ""
-#: protoize.c:4136
+#: protoize.c:4142
#, c-format
msgid "%s: would convert file `%s'\n"
msgstr ""
-#: protoize.c:4139
+#: protoize.c:4145
#, c-format
msgid "%s: converting file `%s'\n"
msgstr ""
-#: protoize.c:4149
+#: protoize.c:4155
#, c-format
msgid "%s: can't get status for file `%s': %s\n"
msgstr ""
-#: protoize.c:4191
+#: protoize.c:4197
#, c-format
msgid "%s: can't open file `%s' for reading: %s\n"
msgstr ""
-#: protoize.c:4206
+#: protoize.c:4212
#, c-format
msgid ""
"\n"
"%s: error reading input file `%s': %s\n"
msgstr ""
-#: protoize.c:4240
+#: protoize.c:4246
#, c-format
msgid "%s: can't create/open clean file `%s': %s\n"
msgstr ""
-#: protoize.c:4345
+#: protoize.c:4351
#, c-format
msgid "%s: warning: file `%s' already saved in `%s'\n"
msgstr ""
-#: protoize.c:4353
+#: protoize.c:4359
#, c-format
msgid "%s: can't link file `%s' to `%s': %s\n"
msgstr ""
-#: protoize.c:4383
+#: protoize.c:4389
#, c-format
msgid "%s: can't create/open output file `%s': %s\n"
msgstr ""
-#: protoize.c:4416
+#: protoize.c:4422
#, c-format
msgid "%s: can't change mode of file `%s': %s\n"
msgstr ""
-#: protoize.c:4589
+#: protoize.c:4595
#, c-format
msgid "%s: cannot get working directory: %s\n"
msgstr ""
-#: protoize.c:4687
+#: protoize.c:4693
#, c-format
msgid "%s: input file names must have .c suffixes: %s\n"
msgstr ""
-#: real.c:788 real.c:955
+#: real.c:798 real.c:975
msgid "conversion from NaN to int"
msgstr ""
-#: real.c:811
+#: real.c:821
msgid "conversion from NaN to unsigned int"
msgstr ""
-#: real.c:2673
+#: real.c:2696
msgid "floating point overflow"
msgstr ""
-#: real.c:4313 real.c:6587 real.c:6668
+#: real.c:4334 real.c:6611 real.c:6692
msgid "overflow on truncation to integer"
msgstr ""
-#: real.c:4385
+#: real.c:4406
msgid "overflow on truncation to unsigned integer"
msgstr ""
-#: real.c:5731
+#: real.c:5752
#, c-format
msgid "%s: argument domain error"
msgstr ""
-#: real.c:5732
+#: real.c:5753
#, c-format
msgid "%s: function singularity"
msgstr ""
-#: real.c:5733
+#: real.c:5754
#, c-format
msgid "%s: overflow range error"
msgstr ""
-#: real.c:5734
+#: real.c:5755
#, c-format
msgid "%s: underflow range error"
msgstr ""
-#: real.c:5735
+#: real.c:5756
#, c-format
msgid "%s: total loss of precision"
msgstr ""
-#: real.c:5736
+#: real.c:5757
#, c-format
msgid "%s: partial loss of precision"
msgstr ""
-#: real.c:5737
+#: real.c:5758
#, c-format
msgid "%s: NaN - producing operation"
msgstr ""
-#: reg-stack.c:661
+#: reg-stack.c:660
#, c-format
msgid "Output constraint %d must specify a single register"
msgstr ""
-#: reg-stack.c:681
+#: reg-stack.c:680
msgid "Output regs must be grouped at top of stack"
msgstr ""
-#: reg-stack.c:718
+#: reg-stack.c:717
msgid "Implicitly popped regs must be grouped at top of stack"
msgstr ""
-#: reg-stack.c:737
+#: reg-stack.c:736
#, c-format
msgid "Output operand %d must use `&' constraint"
msgstr ""
-#: regclass.c:658
+#: regclass.c:660
#, c-format
msgid "can't use '%s' as a %s register"
msgstr ""
-#: regclass.c:669
+#: regclass.c:671
#, c-format
msgid "unknown register name: %s"
msgstr ""
-#: regclass.c:680
+#: regclass.c:682
msgid "global register variable follows a function definition"
msgstr ""
-#: regclass.c:684
+#: regclass.c:686
msgid "register used for two global register variables"
msgstr ""
-#: regclass.c:689
+#: regclass.c:691
msgid "call-clobbered register used for global register variable"
msgstr ""
-#: reload.c:1182
+#: reload.c:1198
msgid "cannot reload integer constant operand in `asm'"
msgstr ""
-#: reload.c:1204
+#: reload.c:1220
msgid "impossible register constraint in `asm'"
msgstr ""
-#: reload.c:3287
+#: reload.c:3319
msgid "`&' constraint used with no register class"
msgstr ""
-#: reload.c:3439 reload.c:3649
+#: reload.c:3471 reload.c:3682
msgid "inconsistent operand constraints in an `asm'"
msgstr ""
-#: reload1.c:1166
+#: reload1.c:1159
msgid "frame size too large for reliable stack checking"
msgstr ""
-#: reload1.c:1169
+#: reload1.c:1162
msgid "try reducing the number of local variables"
msgstr ""
-#: reload1.c:1820
+#: reload1.c:1806
#, c-format
msgid "Can't find a register in class `%s' while reloading `asm'."
msgstr ""
-#: reload1.c:1824
+#: reload1.c:1810
#, c-format
msgid "Unable to find a register to spill in class `%s'."
msgstr ""
-#: reload1.c:3831
+#: reload1.c:3825
msgid "`asm' operand requires impossible reload"
msgstr ""
-#: reload1.c:4883
+#: reload1.c:4877
msgid "`asm' operand constraint incompatible with operand size"
msgstr ""
-#: reload1.c:6444
+#: reload1.c:6443
msgid "output operand is constant in `asm'"
msgstr ""
-#: rtl.c:1123
+#: rtl.c:1147
#, c-format
msgid "RTL check: access of elt %d of `%s' with last elt %d"
msgstr ""
-#: rtl.c:1137
+#: rtl.c:1161
#, c-format
msgid "RTL check: expected elt %d type '%c', have '%c' (rtx %s)"
msgstr ""
-#: rtl.c:1152
+#: rtl.c:1176
#, c-format
msgid "RTL check: expected elt %d type '%c' or '%c', have '%c' (rtx %s)"
msgstr ""
-#: rtl.c:1166
+#: rtl.c:1190
#, c-format
msgid "RTL check: expected code `%s', have `%s'"
msgstr ""
-#: rtl.c:1179
+#: rtl.c:1203
#, c-format
msgid "RTL check: expected code `%s' or `%s', have `%s'"
msgstr ""
-#: rtl.c:1194
+#: rtl.c:1218
#, c-format
msgid "RTL check: access of elt %d of vector with last elt %d"
msgstr ""
-#: rtl.c:1239
-#, c-format
-msgid ""
-"Internal compiler error in `%s', at %s:%d\n"
-"Please submit a full bug report.\n"
-"See %s for instructions."
-msgstr ""
-
-#: stmt.c:919
+#: stmt.c:914
#, c-format
msgid "jump to `%s' invalidly jumps into binding contour"
msgstr ""
-#: stmt.c:1157 stmt.c:3677
+#: stmt.c:1150 stmt.c:3649
#, c-format
msgid "label `%s' used before containing binding contour"
msgstr ""
-#: stmt.c:1283 stmt.c:1354
+#: stmt.c:1280 stmt.c:1352
msgid "`asm' cannot be used in function where memory usage is checked"
msgstr ""
-#: stmt.c:1340
+#: stmt.c:1338
msgid "`asm' cannot be used with `-fcheck-memory-usage'"
msgstr ""
-#: stmt.c:1369
+#: stmt.c:1367
#, c-format
msgid "unknown register name `%s' in `asm'"
msgstr ""
-#: stmt.c:1384
+#: stmt.c:1382
msgid "too many alternatives in `asm'"
msgstr ""
-#: stmt.c:1395
+#: stmt.c:1393
msgid "operand constraints for `asm' differ in number of alternatives"
msgstr ""
-#: stmt.c:1442
+#: stmt.c:1440
msgid "output operand constraint lacks `='"
msgstr ""
-#: stmt.c:1452
+#: stmt.c:1450
#, c-format
msgid "output constraint `%c' for operand %d is not at the beginning"
msgstr ""
-#: stmt.c:1461
+#: stmt.c:1459
#, c-format
msgid "output operand constraint %d contains `+'"
msgstr ""
-#: stmt.c:1470
+#: stmt.c:1468
msgid "operand constraint contains '+' or '=' at illegal position."
msgstr ""
-#: stmt.c:1476 stmt.c:1629
+#: stmt.c:1474 stmt.c:1651
#, ycp-format
msgid "`%%' constraint used with last operand"
msgstr ""
-#: stmt.c:1493
+#: stmt.c:1488
msgid "matching constraint not valid in output operand"
msgstr ""
-#: stmt.c:1541
+#: stmt.c:1514 stmt.c:1711
+#, c-format
+msgid "invalid punctuation `%c' in constraint"
+msgstr ""
+
+#: stmt.c:1558
#, c-format
msgid "output number %d not directly addressable"
msgstr ""
-#: stmt.c:1566
+#: stmt.c:1586
#, c-format
msgid "more than %d operands in `asm'"
msgstr ""
-#: stmt.c:1602
+#: stmt.c:1624
#, c-format
msgid "hard register `%s' listed as input operand to `asm'"
msgstr ""
-#: stmt.c:1619
+#: stmt.c:1641
#, c-format
msgid "input operand constraint contains `%c'"
msgstr ""
-#: stmt.c:1659
+#: stmt.c:1678
msgid "matching constraint references invalid operand number"
msgstr ""
#. ??? Leave this only until we have experience with what
#. happens in combine and elsewhere when constraints are
#. not satisfied.
-#: stmt.c:1701 stmt.c:1726
+#: stmt.c:1745 stmt.c:1770
#, c-format
msgid "asm operand %d probably doesn't match constraints"
msgstr ""
-#: stmt.c:3595
+#: stmt.c:3567
#, c-format
msgid "unused variable `%s'"
msgstr ""
-#: stmt.c:5179
+#: stmt.c:5160
#, c-format
msgid "enumeration value `%s' not handled in switch"
msgstr ""
-#: stmt.c:5205 stmt.c:5225
+#: stmt.c:5186 stmt.c:5206
#, c-format
msgid "case value `%ld' not in enumerated type"
msgstr ""
-#: stmt.c:5208 stmt.c:5228
+#: stmt.c:5189 stmt.c:5209
#, c-format
msgid "case value `%ld' not in enumerated type `%s'"
msgstr ""
@@ -9988,275 +10090,691 @@ msgstr ""
msgid "packed attribute is unnecessary"
msgstr ""
-#: toplev.c:1438 toplev.c:4786
+#: timevar.c:428
+msgid ""
+"\n"
+"Execution times (seconds)\n"
+msgstr ""
+
+#. Print total time.
+#: timevar.c:476
+msgid " TOTAL :"
+msgstr ""
+
+#: timevar.c:515
+msgid "time in %s: %ld.%06ld (%ld%%)\n"
+msgstr ""
+
+#: tlink.c:428
+#, c-format
+msgid "collect: reading %s\n"
+msgstr ""
+
+#: tlink.c:529
+#, c-format
+msgid "collect: recompiling %s\n"
+msgstr ""
+
+#: tlink.c:694
+#, c-format
+msgid "collect: tweaking %s in %s\n"
+msgstr ""
+
+#: tlink.c:741
+msgid "collect: relinking\n"
+msgstr ""
+
+#: tlink.c:750
+#, c-format
+msgid "ld returned %d exit status"
+msgstr ""
+
+#: toplev.c:1456 toplev.c:4878 tradcpp.c:699
#, c-format
msgid "Invalid option `%s'"
msgstr ""
-#: toplev.c:1635
-msgid "output pipe has been closed"
+#: toplev.c:1656
+#, c-format
+msgid ""
+"Internal error: %s.\n"
+"Please submit a full bug report.\n"
+"See %s for instructions."
msgstr ""
-#: toplev.c:1946
+#: toplev.c:1988
#, c-format
msgid "`%s' used but never defined"
msgstr ""
-#: toplev.c:1949
+#: toplev.c:1991
#, c-format
msgid "`%s' declared `static' but never defined"
msgstr ""
-#: toplev.c:1971
+#: toplev.c:2013
#, c-format
msgid "`%s' defined but not used"
msgstr ""
-#: toplev.c:2213
+#: toplev.c:2255
msgid "-ffunction-sections not supported for this target."
msgstr ""
-#: toplev.c:2218
+#: toplev.c:2260
msgid "-fdata-sections not supported for this target."
msgstr ""
-#: toplev.c:2226
+#: toplev.c:2268
msgid "-ffunction-sections disabled; it makes profiling impossible."
msgstr ""
-#: toplev.c:2232
+#: toplev.c:2274
msgid "-ffunction-sections may affect debugging on some targets."
msgstr ""
-#: toplev.c:2292
+#: toplev.c:2334
msgid "Errors detected in input file (your bison.simple is out of date)\n"
msgstr ""
-#: toplev.c:2521
+#: toplev.c:2565
#, c-format
msgid "invalid register name `%s' for register variable"
msgstr ""
-#: toplev.c:3919
+#: toplev.c:3773
+#, c-format
+msgid "Usage: %s input [switches]\n"
+msgstr ""
+
+#: toplev.c:3774
+msgid "Switches:\n"
+msgstr ""
+
+#: toplev.c:3776
+msgid ""
+" -ffixed-<register> Mark <register> as being unavailable to the "
+"compiler\n"
+msgstr ""
+
+#: toplev.c:3777
+msgid ""
+" -fcall-used-<register> Mark <register> as being corrupted by function "
+"calls\n"
+msgstr ""
+
+#: toplev.c:3778
+msgid ""
+" -fcall-saved-<register> Mark <register> as being preserved across "
+"functions\n"
+msgstr ""
+
+#: toplev.c:3779
+msgid ""
+" -finline-limit=<number> Limits the size of inlined functions to <number>\n"
+msgstr ""
+
+#: toplev.c:3780
+msgid ""
+" -fmessage-length=<number> Limits diagnostics messages lengths to <number> "
+"characters per line. 0 suppresses line-wrapping\n"
+msgstr ""
+
+#: toplev.c:3781
+msgid ""
+" -fdiagnostics-show-location=[once | every-line] Indicates how often source "
+"location information should be emitted, as prefix, at the beginning of "
+"diagnostics when line-wrapping\n"
+msgstr ""
+
+#: toplev.c:3792
+msgid " -O[number] Set optimisation level to [number]\n"
+msgstr ""
+
+#: toplev.c:3793
+msgid " -Os Optimise for space rather than speed\n"
+msgstr ""
+
+#: toplev.c:3794
+msgid ""
+" -pedantic Issue warnings needed by strict compliance to ISO "
+"C\n"
+msgstr ""
+
+#: toplev.c:3795
+msgid ""
+" -pedantic-errors Like -pedantic except that errors are produced\n"
+msgstr ""
+
+#: toplev.c:3796
+msgid " -w Suppress warnings\n"
+msgstr ""
+
+#: toplev.c:3797
+msgid " -W Enable extra warnings\n"
+msgstr ""
+
+#: toplev.c:3808
+msgid " -Wunused Enable unused warnings\n"
+msgstr ""
+
+#: toplev.c:3809
+msgid ""
+" -Wid-clash-<num> Warn if 2 identifiers have the same first <num> "
+"chars\n"
+msgstr ""
+
+#: toplev.c:3810
+msgid ""
+" -Wlarger-than-<number> Warn if an object is larger than <number> bytes\n"
+msgstr ""
+
+#: toplev.c:3811
+msgid " -p Enable function profiling\n"
+msgstr ""
+
+#: toplev.c:3813
+msgid " -a Enable block profiling \n"
+msgstr ""
+
+#: toplev.c:3816
+msgid " -ax Enable jump profiling \n"
+msgstr ""
+
+#: toplev.c:3818
+msgid " -o <file> Place output into <file> \n"
+msgstr ""
+
+#: toplev.c:3819
+msgid ""
+" -G <number> Put global and static data smaller than <number>\n"
+" bytes into a special section (on some targets)\n"
+msgstr ""
+
+#: toplev.c:3830
+msgid " -aux-info <file> Emit declaration info into <file>.X\n"
+msgstr ""
+
+#: toplev.c:3831
+msgid ""
+" -quiet Do not display functions compiled or elapsed time\n"
+msgstr ""
+
+#: toplev.c:3832
+msgid " -version Display the compiler's version\n"
+msgstr ""
+
+#: toplev.c:3833
+msgid ""
+" -d[letters] Enable dumps from specific passes of the compiler\n"
+msgstr ""
+
+#: toplev.c:3834
+msgid ""
+" -dumpbase <file> Base name to be used for dumps from specific "
+"passes\n"
+msgstr ""
+
+#: toplev.c:3836
+msgid " -fsched-verbose=<number> Set the verbosity level of the scheduler\n"
+msgstr ""
+
+#: toplev.c:3838
+msgid " --help Display this information\n"
+msgstr ""
+
+#: toplev.c:3853
+msgid ""
+"\n"
+"Language specific options:\n"
+msgstr ""
+
+#: toplev.c:3865
+#, c-format
+msgid " %-23.23s [undocumented]\n"
+msgstr ""
+
+#: toplev.c:3873 toplev.c:3887
+#, c-format
+msgid ""
+"\n"
+"There are undocumented %s specific options as well.\n"
+msgstr ""
+
+#: toplev.c:3877
+#, c-format
+msgid ""
+"\n"
+" Options for %s:\n"
+msgstr ""
+
+#: toplev.c:3900
+msgid ""
+"\n"
+"Target specific options:\n"
+msgstr ""
+
+#: toplev.c:3914 toplev.c:3933
+#, c-format
+msgid " -m%-21.21s [undocumented]\n"
+msgstr ""
+
+#: toplev.c:3942
+msgid ""
+"\n"
+"There are undocumented target specific options as well.\n"
+msgstr ""
+
+#: toplev.c:3944
+msgid " They exist, but they are not documented.\n"
+msgstr ""
+
+#: toplev.c:3996
#, c-format
msgid "unrecognized gcc debugging option: %c"
msgstr ""
-#: toplev.c:3981
+#: toplev.c:4058
#, c-format
msgid "unrecognized register name `%s'"
msgstr ""
-#: toplev.c:4008 toplev.c:4607
+#: toplev.c:4085 toplev.c:4699
#, c-format
msgid "Unrecognized option `%s'"
msgstr ""
-#: toplev.c:4135
+#: toplev.c:4212
#, c-format
msgid "use -gdwarf -g%d for DWARF v1, level %d"
msgstr ""
-#: toplev.c:4138
+#: toplev.c:4215
msgid "use -gdwarf-2 for DWARF v2"
msgstr ""
-#: toplev.c:4143
+#: toplev.c:4220
#, c-format
msgid "ignoring option `%s' due to invalid debug level specification"
msgstr ""
-#: toplev.c:4166 toplev.c:4199
+#: toplev.c:4243 toplev.c:4697
#, c-format
msgid "`%s': unknown or unsupported -g option"
msgstr ""
-#: toplev.c:4173
+#: toplev.c:4250
#, c-format
msgid "`%s' ignored, conflicts with `-g%s'"
msgstr ""
-#: toplev.c:4323
+#: toplev.c:4395
msgid "`-a' option (basic block profile) not supported"
msgstr ""
-#: toplev.c:4331
+#: toplev.c:4403
msgid "`-ax' option (jump profiling) not supported"
msgstr ""
-#: toplev.c:4600
+#: toplev.c:4689
#, c-format
msgid "Ignoring command line option '%s'"
msgstr ""
-#: toplev.c:4602
+#: toplev.c:4692
#, c-format
msgid "(It is valid for %s but not the selected language)"
msgstr ""
-#: toplev.c:4631
+#: toplev.c:4723
msgid "-Wuninitialized is not supported without -O"
msgstr ""
-#: toplev.c:4673
+#: toplev.c:4765
msgid "`-ax' and `-a' are conflicting options. `-a' ignored."
msgstr ""
-#: toplev.c:4694
+#: toplev.c:4786
msgid "instruction scheduling not supported on this target machine"
msgstr ""
-#: toplev.c:4698
+#: toplev.c:4790
msgid "this target machine does not have delayed branches"
msgstr ""
-#: toplev.c:4712
+#: toplev.c:4804
#, c-format
msgid "-f%sleading-underscore not supported on this target machine"
msgstr ""
-#: toplev.c:4732
+#: toplev.c:4824
#, c-format
msgid "Data size %ld.\n"
msgstr ""
-#: toplev.c:4803
+#: toplev.c:4895
#, c-format
msgid ""
"%s%s%s version %s (%s) compiled by GNU C version %s.\n"
"%s%s%s version %s (%s) compiled by CC.\n"
msgstr ""
-#: toplev.c:4858
+#: toplev.c:4950
msgid "options passed: "
msgstr ""
-#: toplev.c:4887
+#: toplev.c:4979
msgid "options enabled: "
msgstr ""
-#: tree.c:1293
+#: tradcpp.c:112
+msgid "macro or #include recursion too deep"
+msgstr ""
+
+#: tradcpp.c:517
+#, c-format
+msgid "Usage: %s [switches] input output"
+msgstr ""
+
+#: tradcpp.c:533
+msgid "-traditional is not supported in C++"
+msgstr ""
+
+#: tradcpp.c:535
+msgid "-traditional and -ansi are mutually exclusive"
+msgstr ""
+
+#: tradcpp.c:549
+msgid "Filename missing after -i option"
+msgstr ""
+
+#: tradcpp.c:567
+msgid "Filename missing after -o option"
+msgstr ""
+
+#: tradcpp.c:618
+msgid "Macro name missing after -D option"
+msgstr ""
+
+#: tradcpp.c:630
+msgid "Macro name missing after -U option"
+msgstr ""
+
+#: tradcpp.c:641
+msgid "-pedantic and -traditional are mutually exclusive"
+msgstr ""
+
+#: tradcpp.c:646
+msgid "-trigraphs and -traditional are mutually exclusive"
+msgstr ""
+
+#: tradcpp.c:672
+msgid "Directory name missing after -I option"
+msgstr ""
+
+#: tradcpp.c:1326 tradcpp.c:3402
+msgid "`/*' within comment"
+msgstr ""
+
+#: tradcpp.c:1701
+#, c-format
+msgid "unterminated #%s conditional"
+msgstr ""
+
+#: tradcpp.c:2060
+msgid "not in any file?!"
+msgstr ""
+
+#: tradcpp.c:2148
+msgid "`defined' must be followed by ident or (ident)"
+msgstr ""
+
+#: tradcpp.c:2152
+msgid "cccp error: invalid special hash type"
+msgstr ""
+
+#: tradcpp.c:2256
+msgid "#include expects \"fname\" or <fname>"
+msgstr ""
+
+#: tradcpp.c:2305
+#, c-format
+msgid "nonexistent file <%.*s> omitted from dependency output"
+msgstr ""
+
+#: tradcpp.c:2485
+msgid "invalid macro name"
+msgstr ""
+
+#: tradcpp.c:2491
+#, c-format
+msgid "invalid macro name `%s'"
+msgstr ""
+
+#: tradcpp.c:2494
+msgid "defining `defined' as a macro"
+msgstr ""
+
+#: tradcpp.c:2519
+msgid "parameter name starts with a digit in #define"
+msgstr ""
+
+#: tradcpp.c:2529
+msgid "badly punctuated parameter list in #define"
+msgstr ""
+
+#: tradcpp.c:2537
+msgid "unterminated parameter list in #define"
+msgstr ""
+
+#: tradcpp.c:2582
+#, c-format
+msgid "\"%.*s\" redefined"
+msgstr ""
+
+#: tradcpp.c:2838
+msgid "# operator should be followed by a macro argument name"
+msgstr ""
+
+#: tradcpp.c:2886 tradcpp.c:2901 tradcpp.c:2919 tradcpp.c:2933 tradcpp.c:2940
+#: tradcpp.c:2965
+msgid "invalid format #line command"
+msgstr ""
+
+#: tradcpp.c:2991
+msgid "undefining `defined'"
+msgstr ""
+
+#: tradcpp.c:2995
+#, c-format
+msgid "undefining `%s'"
+msgstr ""
+
+#: tradcpp.c:3039
+msgid "#elif not within a conditional"
+msgstr ""
+
+#: tradcpp.c:3282
+#, c-format
+msgid "#%s not within a conditional"
+msgstr ""
+
+#: tradcpp.c:3290
+msgid "#else or #elif after #else"
+msgstr ""
+
+#: tradcpp.c:3331
+msgid "#else not within a conditional"
+msgstr ""
+
+#: tradcpp.c:3363
+msgid "unbalanced #endif"
+msgstr ""
+
+#: tradcpp.c:3457
+msgid "unterminated string or character constant"
+msgstr ""
+
+#: tradcpp.c:3613
+#, c-format
+msgid "arguments given to macro `%s'"
+msgstr ""
+
+#: tradcpp.c:3619
+#, c-format
+msgid "no args to macro `%s'"
+msgstr ""
+
+#: tradcpp.c:3621
+#, c-format
+msgid "only 1 arg to macro `%s'"
+msgstr ""
+
+#: tradcpp.c:3623
+#, c-format
+msgid "only %d args to macro `%s'"
+msgstr ""
+
+#: tradcpp.c:3625
+#, c-format
+msgid "too many (%d) args to macro `%s'"
+msgstr ""
+
+#: tradcpp.c:4251
+#, c-format
+msgid ""
+"Internal error in %s, at tradcpp.c:%d\n"
+"Please submit a full bug report.\n"
+"See %s for instructions."
+msgstr ""
+
+#: tree.c:1295
#, c-format
msgid "`%s' and `%s' identical in first %d characters"
msgstr ""
-#: tree.c:4750
+#: tree.c:4749
msgid "arrays of functions are not meaningful"
msgstr ""
-#: tree.c:4807
+#: tree.c:4806
msgid "function return type cannot be function"
msgstr ""
-#: tree.c:5534
+#: tree.c:5541
msgid "invalid initializer for bit string"
msgstr ""
-#: tree.c:5592
+#: tree.c:5600
#, c-format
msgid "Tree check: expected %s, have %s"
msgstr ""
-#: tree.c:5607
+#: tree.c:5616
#, c-format
msgid "Tree check: expected class '%c', have '%c' (%s)"
msgstr ""
-#: varasm.c:702
+#: varasm.c:726
#, c-format
msgid "register name not specified for `%s'"
msgstr ""
-#: varasm.c:706
+#: varasm.c:728
#, c-format
msgid "invalid register name for `%s'"
msgstr ""
-#: varasm.c:711
-#, c-format
-msgid "register name given for non-register variable `%s'"
-msgstr ""
-
-#: varasm.c:716
+#: varasm.c:731
#, c-format
msgid "data type of `%s' isn't suitable for a register"
msgstr ""
-#: varasm.c:721
+#: varasm.c:734
#, c-format
-msgid "register number for `%s' isn't suitable for data type"
+msgid "register specified for `%s' isn't suitable for data type"
msgstr ""
-#: varasm.c:730
+#: varasm.c:743
msgid "global register variable has initial value"
msgstr ""
-#: varasm.c:733
+#: varasm.c:746
msgid "volatile register variables don't work as you might wish"
msgstr ""
-#: varasm.c:1419
+#: varasm.c:781
+#, c-format
+msgid "register name given for non-register variable `%s'"
+msgstr ""
+
+#: varasm.c:1417
#, c-format
msgid "size of variable `%s' is too large"
msgstr ""
-#: varasm.c:1459
+#: varasm.c:1457
#, c-format
msgid ""
"alignment of `%s' is greater than maximum object file alignment. Using %d."
msgstr ""
-#: varasm.c:1505
+#: varasm.c:1504
#, c-format
msgid "requested alignment for %s is greater than implemented alignment of %d."
msgstr ""
-#: varasm.c:1977
+#: varasm.c:1976
msgid "floating point trap outputting a constant"
msgstr ""
-#: varasm.c:4287
+#: varasm.c:4286
msgid "initializer for integer value is too complicated"
msgstr ""
-#: varasm.c:4293
+#: varasm.c:4292
msgid "initializer for floating value is not a floating constant"
msgstr ""
-#: varasm.c:4350
+#: varasm.c:4349
msgid "unknown set constructor type"
msgstr ""
-#: varasm.c:4496
+#: varasm.c:4494
#, c-format
msgid "invalid initial value for member `%s'"
msgstr ""
-#: varasm.c:4675
+#: varasm.c:4676
#, c-format
msgid "weak declaration of `%s' must be public"
msgstr ""
-#: varasm.c:4677
+#: varasm.c:4678
#, c-format
msgid "weak declaration of `%s' must precede definition"
msgstr ""
-#: varasm.c:4770
+#: varasm.c:4771
msgid "only weak aliases are supported in this configuration"
msgstr ""
-#: varasm.c:4775
+#: varasm.c:4776
msgid "alias definitions not supported in this configuration; ignored"
msgstr ""
+#: varray.c:87
+#, c-format
+msgid "Virtual array %s[%lu]: element %lu out of bounds"
+msgstr ""
+
#. Print an error message for unrecognized stab codes.
#: xcoffout.c:182
#, c-format
msgid "Unknown stab %s: : 0x%x\n"
msgstr ""
-#: config/arc/arc.h:60 config/mips/mips.h:908
+#: config/arc/arc.h:60 config/mips/mips.h:910
msgid "may not use both -EB and -EL"
msgstr ""
@@ -10272,6 +10790,10 @@ msgstr ""
msgid "-mbig-endian and -mlittle-endian may not be used together"
msgstr ""
+#: config/arm/arm.h:246
+msgid "Incompatible interworking options"
+msgstr ""
+
#: config/arm/riscix.h:73 config/arm/riscix.h:135
msgid "-mbsd and -pedantic incompatible"
msgstr ""
@@ -10324,15 +10846,15 @@ msgstr ""
msgid "-p option not supported: use -pg instead"
msgstr ""
-#: config/mips/mips.h:764
+#: config/mips/mips.h:766
msgid "-pipe is not supported."
msgstr ""
-#: config/mips/mips.h:903
+#: config/mips/mips.h:905
msgid "may not use both -mfp64 and -msingle-float"
msgstr ""
-#: config/mips/mips.h:904
+#: config/mips/mips.h:906
msgid "may not use both -mfp64 and -m4650"
msgstr ""
@@ -10348,27 +10870,22 @@ msgstr ""
msgid "-p profiling is no longer supported. Use -pg instead."
msgstr ""
-#: config/vax/vax.h:37 config/vax/vax.h:38
+#: config/vax/vax.h:41 config/vax/vax.h:42
msgid "profiling not supported with -mg\n"
msgstr ""
-#: cp/lang-specs.h:35 cp/lang-specs.h:71
-msgid "GNU C++ does not support -C without using -E"
+#: gcc.c:558
+msgid "GNU C does not support -C without using -E"
msgstr ""
-#: cp/lang-specs.h:64 cp/lang-specs.h:89 cp/lang-specs.h:101 gcc.c:657
-#: gcc.c:684 gcc.c:732
+#: gcc.c:573
msgid "-pg and -fomit-frame-pointer are incompatible"
msgstr ""
-#: gcc.c:627 gcc.c:665 gcc.c:694 gcc.c:712 gcc.c:745
-msgid "GNU C does not support -C without using -E"
-msgstr ""
-
#: gcc.c:707
msgid "-E required when input is from standard input"
msgstr ""
-#: gcc.c:710
+#: gcc.c:711
msgid "Compilation of header file requested"
msgstr ""
diff --git a/gcc/print-rtl.c b/gcc/print-rtl.c
index 5d7cd5feebb..25f7e01bc8a 100644
--- a/gcc/print-rtl.c
+++ b/gcc/print-rtl.c
@@ -55,6 +55,11 @@ static int indent;
static void print_rtx PARAMS ((rtx));
+/* String printed at beginning of each RTL when it is dumped.
+ This string is set to ASM_COMMENT_START when the RTL is dumped in
+ the assembly output file. */
+char *print_rtx_head = "";
+
/* Nonzero means suppress output of instruction numbers and line number
notes in debugging dumps.
This must be defined here so that programs like gencodes can be linked. */
@@ -63,6 +68,9 @@ int flag_dump_unnumbered = 0;
/* Nonzero if we are dumping graphical description. */
int dump_for_graph;
+/* Nonzero to dump all call_placeholder alternatives. */
+static int debug_call_placeholder_verbose;
+
/* Print IN_RTX onto OUTFILE. This is the recursive part of printing. */
static void
@@ -77,8 +85,9 @@ print_rtx (in_rtx)
if (sawclose)
{
- fprintf (outfile, "\n%s",
- (xspaces + (sizeof xspaces - 1 - indent * 2)));
+ fprintf (outfile, "\n%s%s",
+ print_rtx_head,
+ (xspaces + (sizeof xspaces - 1 - indent * 2)));
sawclose = 0;
}
@@ -253,7 +262,8 @@ print_rtx (in_rtx)
indent += 2;
if (sawclose)
{
- fprintf (outfile, "\n%s",
+ fprintf (outfile, "\n%s%s",
+ print_rtx_head,
(xspaces + (sizeof xspaces - 1 - indent * 2)));
sawclose = 0;
}
@@ -270,7 +280,8 @@ print_rtx (in_rtx)
indent -= 2;
}
if (sawclose)
- fprintf (outfile, "\n%s",
+ fprintf (outfile, "\n%s%s",
+ print_rtx_head,
(xspaces + (sizeof xspaces - 1 - indent * 2)));
fputs ("] ", outfile);
@@ -421,6 +432,37 @@ print_rtx (in_rtx)
break;
case CALL_PLACEHOLDER:
+ if (debug_call_placeholder_verbose)
+ {
+ fputs (" (cond [\n (const_string \"normal\") (sequence [", outfile);
+ for (tem = XEXP (in_rtx, 0); tem != 0; tem = NEXT_INSN (tem))
+ {
+ fputs ("\n ", outfile);
+ print_inline_rtx (outfile, tem, 4);
+ }
+
+ tem = XEXP (in_rtx, 1);
+ if (tem)
+ fputs ("\n ])\n (const_string \"tail_call\") (sequence [", outfile);
+ for (; tem != 0; tem = NEXT_INSN (tem))
+ {
+ fputs ("\n ", outfile);
+ print_inline_rtx (outfile, tem, 4);
+ }
+
+ tem = XEXP (in_rtx, 2);
+ if (tem)
+ fputs ("\n ])\n (const_string \"tail_recursion\") (sequence [", outfile);
+ for (; tem != 0; tem = NEXT_INSN (tem))
+ {
+ fputs ("\n ", outfile);
+ print_inline_rtx (outfile, tem, 4);
+ }
+
+ fputs ("\n ])\n ])", outfile);
+ break;
+ }
+
for (tem = XEXP (in_rtx, 0); tem != 0; tem = NEXT_INSN (tem))
if (GET_CODE (tem) == CALL_INSN)
{
@@ -566,7 +608,10 @@ print_rtl (outf, rtx_first)
sawclose = 0;
if (rtx_first == 0)
- fputs ("(nil)\n", outf);
+ {
+ fputs (print_rtx_head, outf);
+ fputs ("(nil)\n", outf);
+ }
else
switch (GET_CODE (rtx_first))
{
@@ -580,12 +625,14 @@ print_rtl (outf, rtx_first)
if (! flag_dump_unnumbered
|| GET_CODE (tmp_rtx) != NOTE || NOTE_LINE_NUMBER (tmp_rtx) < 0)
{
+ fputs (print_rtx_head, outfile);
print_rtx (tmp_rtx);
fprintf (outfile, "\n");
}
break;
default:
+ fputs (print_rtx_head, outfile);
print_rtx (rtx_first);
}
}
@@ -603,6 +650,7 @@ print_rtl_single (outf, x)
if (! flag_dump_unnumbered
|| GET_CODE (x) != NOTE || NOTE_LINE_NUMBER (x) < 0)
{
+ fputs (print_rtx_head, outfile);
print_rtx (x);
putc ('\n', outf);
return 1;
diff --git a/gcc/profile.c b/gcc/profile.c
index fa6b2302bd2..809e43f3e05 100644
--- a/gcc/profile.c
+++ b/gcc/profile.c
@@ -48,7 +48,7 @@ Boston, MA 02111-1307, USA. */
#include "ggc.h"
#include "hard-reg-set.h"
#include "basic-block.h"
-
+#include "defaults.h"
/* Additional information about the edges we need. */
struct edge_info
@@ -119,10 +119,6 @@ static void compute_branch_probabilities PARAMS ((void));
static basic_block find_group PARAMS ((basic_block));
static void union_groups PARAMS ((basic_block, basic_block));
-#ifndef LONG_TYPE_SIZE
-#define LONG_TYPE_SIZE BITS_PER_WORD
-#endif
-
/* If non-zero, we need to output a constructor to set up the
per-object-file data. */
static int need_func_profiler = 0;
diff --git a/gcc/recog.c b/gcc/recog.c
index 76c46177dd5..f1d5dee6c46 100644
--- a/gcc/recog.c
+++ b/gcc/recog.c
@@ -482,10 +482,7 @@ validate_replace_rtx_1 (loc, from, to, object)
in that case. If it fails, substitute in something that we know
won't be recognized. */
if (GET_MODE (to) == VOIDmode
- && (XEXP (x, 0) == from
- || (GET_CODE (XEXP (x, 0)) == REG && GET_CODE (from) == REG
- && GET_MODE (XEXP (x, 0)) == GET_MODE (from)
- && REGNO (XEXP (x, 0)) == REGNO (from))))
+ && rtx_equal_p (XEXP (x, 0), from))
{
rtx new = simplify_unary_operation (code, GET_MODE (x), to,
GET_MODE (from));
@@ -498,14 +495,69 @@ validate_replace_rtx_1 (loc, from, to, object)
break;
case SUBREG:
+ /* In case we are replacing by constant, attempt to simplify it to non-SUBREG
+ expression. We can't do this later, since the information about inner mode
+ may be lost. */
+ if (CONSTANT_P (to) && rtx_equal_p (SUBREG_REG (x), from))
+ {
+ if (GET_MODE_SIZE (GET_MODE (x)) == UNITS_PER_WORD
+ && GET_MODE_SIZE (GET_MODE (from)) > UNITS_PER_WORD
+ && GET_MODE_CLASS (GET_MODE (x)) == MODE_INT)
+ {
+ rtx temp = operand_subword (to, SUBREG_WORD (x),
+ 0, GET_MODE (from));
+ if (temp)
+ {
+ validate_change (object, loc, temp, 1);
+ return;
+ }
+ }
+ if (subreg_lowpart_p (x))
+ {
+ rtx new = gen_lowpart_if_possible (GET_MODE (x), to);
+ if (new)
+ {
+ validate_change (object, loc, new, 1);
+ return;
+ }
+ }
+
+ /* A paradoxical SUBREG of a VOIDmode constant is the same constant,
+ since we are saying that the high bits don't matter. */
+ if (GET_MODE (to) == VOIDmode
+ && GET_MODE_SIZE (GET_MODE (x)) > GET_MODE_SIZE (GET_MODE (from)))
+ {
+ validate_change (object, loc, to, 1);
+ return;
+ }
+ }
+
+ /* Changing mode twice with SUBREG => just change it once,
+ or not at all if changing back to starting mode. */
+ if (GET_CODE (to) == SUBREG
+ && rtx_equal_p (SUBREG_REG (x), from))
+ {
+ if (GET_MODE (x) == GET_MODE (SUBREG_REG (to))
+ && SUBREG_WORD (x) == 0 && SUBREG_WORD (to) == 0)
+ {
+ validate_change (object, loc, SUBREG_REG (to), 1);
+ return;
+ }
+
+ validate_change (object, loc,
+ gen_rtx_SUBREG (GET_MODE (x), SUBREG_REG (to),
+ SUBREG_WORD (x) + SUBREG_WORD (to)), 1);
+ return;
+ }
+
/* If we have a SUBREG of a register that we are replacing and we are
replacing it with a MEM, make a new MEM and try replacing the
SUBREG with it. Don't do this if the MEM has a mode-dependent address
or if we would be widening it. */
- if (SUBREG_REG (x) == from
- && GET_CODE (from) == REG
+ if (GET_CODE (from) == REG
&& GET_CODE (to) == MEM
+ && rtx_equal_p (SUBREG_REG (x), from)
&& ! mode_dependent_address_p (XEXP (to, 0))
&& ! MEM_VOLATILE_P (to)
&& GET_MODE_SIZE (GET_MODE (x)) <= GET_MODE_SIZE (GET_MODE (to)))
@@ -533,7 +585,8 @@ validate_replace_rtx_1 (loc, from, to, object)
likely to be an insertion operation; if it was, nothing bad will
happen, we might just fail in some cases). */
- if (XEXP (x, 0) == from && GET_CODE (from) == REG && GET_CODE (to) == MEM
+ if (GET_CODE (from) == REG && GET_CODE (to) == MEM
+ && rtx_equal_p (XEXP (x, 0), from)
&& GET_CODE (XEXP (x, 1)) == CONST_INT
&& GET_CODE (XEXP (x, 2)) == CONST_INT
&& ! mode_dependent_address_p (XEXP (to, 0))
@@ -1992,6 +2045,31 @@ adj_offsettable_operand (op, offset)
abort ();
}
+/* Like extract_insn, but save insn extracted and don't extract again, when
+ called again for the same insn expecting that recog_data still contain the
+ valid information. This is used primary by gen_attr infrastructure that
+ often does extract insn again and again. */
+void
+extract_insn_cached (insn)
+ rtx insn;
+{
+ if (recog_data.insn == insn && INSN_CODE (insn) >= 0)
+ return;
+ extract_insn (insn);
+ recog_data.insn = insn;
+}
+/* Do cached extract_insn, constrain_operand and complain about failures.
+ Used by insn_attrtab. */
+void
+extract_constrain_insn_cached (insn)
+ rtx insn;
+{
+ extract_insn_cached (insn);
+ if (which_alternative == -1
+ && !constrain_operands (reload_completed))
+ fatal_insn_not_found (insn);
+}
+
/* Analyze INSN and fill in recog_data. */
void
@@ -2003,9 +2081,11 @@ extract_insn (insn)
int noperands;
rtx body = PATTERN (insn);
+ recog_data.insn = NULL;
recog_data.n_operands = 0;
recog_data.n_alternatives = 0;
recog_data.n_dups = 0;
+ which_alternative = -1;
switch (GET_CODE (body))
{
@@ -2539,6 +2619,7 @@ constrain_operands (strict)
which_alternative++;
}
+ which_alternative = -1;
/* If we are about to reject this, but we are not to test strictly,
try a very loose test. Only return failure if it fails also. */
if (strict == 0)
diff --git a/gcc/recog.h b/gcc/recog.h
index d4fd4fd6934..3328af6850a 100644
--- a/gcc/recog.h
+++ b/gcc/recog.h
@@ -116,6 +116,8 @@ extern int recog PARAMS ((rtx, rtx, int *));
extern void add_clobbers PARAMS ((rtx, int));
extern void insn_extract PARAMS ((rtx));
extern void extract_insn PARAMS ((rtx));
+extern void extract_constrain_insn_cached PARAMS ((rtx));
+extern void extract_insn_cached PARAMS ((rtx));
extern void preprocess_constraints PARAMS ((void));
extern rtx peep2_next_insn PARAMS ((int));
extern int peep2_regno_dead_p PARAMS ((int, int));
@@ -186,6 +188,9 @@ struct recog_data
/* The number of alternatives in the constraints for the insn. */
char n_alternatives;
+
+ /* In case we are caching, hold insn data was generated for. */
+ rtx insn;
};
extern struct recog_data recog_data;
diff --git a/gcc/reload.c b/gcc/reload.c
index d83b1f69e31..848a40d078c 100644
--- a/gcc/reload.c
+++ b/gcc/reload.c
@@ -946,7 +946,8 @@ push_reload (in, out, inloc, outloc, class,
if (in != 0 && GET_CODE (in) == SUBREG
&& (SUBREG_WORD (in) == 0 || strict_low)
#ifdef CLASS_CANNOT_CHANGE_MODE
- && class != CLASS_CANNOT_CHANGE_MODE
+ && (class != CLASS_CANNOT_CHANGE_MODE
+ || ! CLASS_CANNOT_CHANGE_MODE_P (GET_MODE (SUBREG_REG (in)), inmode))
#endif
&& (CONSTANT_P (SUBREG_REG (in))
|| GET_CODE (SUBREG_REG (in)) == PLUS
@@ -1051,7 +1052,9 @@ push_reload (in, out, inloc, outloc, class,
if (out != 0 && GET_CODE (out) == SUBREG
&& (SUBREG_WORD (out) == 0 || strict_low)
#ifdef CLASS_CANNOT_CHANGE_MODE
- && class != CLASS_CANNOT_CHANGE_MODE
+ && (class != CLASS_CANNOT_CHANGE_MODE
+ || ! CLASS_CANNOT_CHANGE_MODE_P (GET_MODE (SUBREG_REG (out)),
+ outmode))
#endif
&& (CONSTANT_P (SUBREG_REG (out))
|| strict_low
@@ -6557,7 +6560,7 @@ regno_clobbered_p (regno, insn, mode)
{
int test = REGNO (XEXP (PATTERN (insn), 0));
- return regno >= test && test < endregno;
+ return test >= regno && test < endregno;
}
if (GET_CODE (PATTERN (insn)) == PARALLEL)
@@ -6571,7 +6574,7 @@ regno_clobbered_p (regno, insn, mode)
{
int test = REGNO (XEXP (elt, 0));
- if (regno >= test && test < endregno)
+ if (test >= regno && test < endregno)
return 1;
}
}
diff --git a/gcc/reload1.c b/gcc/reload1.c
index b09f9eb8222..fb840477ba7 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -5304,8 +5304,13 @@ choose_reload_regs (chain)
i = REGNO (last_reg) + word;
last_class = REGNO_REG_CLASS (i);
- need_mode = smallest_mode_for_size ((word+1) * UNITS_PER_WORD,
- GET_MODE_CLASS (mode));
+ if (word == 0)
+ need_mode = mode;
+ else
+ need_mode
+ = smallest_mode_for_size (GET_MODE_SIZE (mode)
+ + word * UNITS_PER_WORD,
+ GET_MODE_CLASS (mode));
if (
#ifdef CLASS_CANNOT_CHANGE_MODE
diff --git a/gcc/rtl.h b/gcc/rtl.h
index a2f9087f066..d1d76968e73 100644
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -1633,6 +1633,16 @@ extern void push_obstacks PARAMS ((struct obstack *,
struct obstack *));
/* In cse.c */
struct cse_basic_block_data;
+
+/* Return the right cost to give to an operation
+ to make the cost of the corresponding register-to-register instruction
+ N times that of a fast register-to-register instruction. */
+#define COSTS_N_INSNS(N) ((N) * 4)
+
+/* Maximum cost of a rtl expression. This value has the special meaning
+ not to use an rtx with this cost under any circumstances. */
+#define MAX_COST INT_MAX
+
extern int rtx_cost PARAMS ((rtx, enum rtx_code));
extern int address_cost PARAMS ((rtx, enum machine_mode));
extern void delete_trivially_dead_insns PARAMS ((rtx, int));
@@ -1737,6 +1747,7 @@ extern void schedule_insns PARAMS ((FILE *));
extern void fix_sched_param PARAMS ((const char *, const char *));
/* In print-rtl.c */
+extern char *print_rtx_head;
extern void debug_rtx PARAMS ((rtx));
extern void debug_rtx_list PARAMS ((rtx, int));
extern void debug_rtx_range PARAMS ((rtx, rtx));
diff --git a/gcc/rtl.texi b/gcc/rtl.texi
index 247807a4000..17dea1ae2ec 100644
--- a/gcc/rtl.texi
+++ b/gcc/rtl.texi
@@ -2057,6 +2057,34 @@ it may not be apparent why this is so. Therefore, the compiler will
not attempt to delete previous instructions whose only effect is to
store a value in @var{x}. @var{x} must be a @code{reg} expression.
+In some situations, it may be tempting to add a @code{use} of a
+register in a @code{parallel} to describe a situation where the value
+of a special register will modify the behaviour of the instruction.
+An hypothetical example might be a pattern for an addition that can
+either wrap around or use saturating addition depending on the value
+of a special control register:
+
+@example
+(parallel [(set (reg:SI 2) (unspec:SI [(reg:SI 3) (reg:SI 4)] 0))
+ (use (reg:SI 1))])
+@end example
+
+@noindent
+
+This will not work, several of the optimizers only look at expressions
+locally; it is very likely that if you have multiple insns with
+identical inputs to the @code{unspec}, they will be optimized away even
+if register 1 changes in between.
+
+This means that @code{use} can @emph{only} be used to describe
+that the register is live. You should think twice before adding
+@code{use} statements, more often you will want to use @code{unspec}
+instead. The @code{use} RTX is most commonly useful to describe that
+a fixed register is implicitly used in an insn. It is also safe to use
+in patterns where the compiler knows for other reasons that the result
+of the whole pattern is variable, such as @samp{movstr@var{m}} or
+@samp{call} patterns.
+
During the reload phase, an insn that has a @code{use} as pattern
can carry a reg_equal note. These @code{use} insns will be deleted
before the reload phase exits.
diff --git a/gcc/sdbout.c b/gcc/sdbout.c
index f0075d56260..0461b384065 100644
--- a/gcc/sdbout.c
+++ b/gcc/sdbout.c
@@ -123,40 +123,6 @@ static void sdbout_one_type PARAMS ((tree));
static void sdbout_parms PARAMS ((tree));
static void sdbout_reg_parms PARAMS ((tree));
-/* Define the default sizes for various types. */
-
-#ifndef CHAR_TYPE_SIZE
-#define CHAR_TYPE_SIZE BITS_PER_UNIT
-#endif
-
-#ifndef SHORT_TYPE_SIZE
-#define SHORT_TYPE_SIZE (BITS_PER_UNIT * MIN ((UNITS_PER_WORD + 1) / 2, 2))
-#endif
-
-#ifndef INT_TYPE_SIZE
-#define INT_TYPE_SIZE BITS_PER_WORD
-#endif
-
-#ifndef LONG_TYPE_SIZE
-#define LONG_TYPE_SIZE BITS_PER_WORD
-#endif
-
-#ifndef LONG_LONG_TYPE_SIZE
-#define LONG_LONG_TYPE_SIZE (BITS_PER_WORD * 2)
-#endif
-
-#ifndef FLOAT_TYPE_SIZE
-#define FLOAT_TYPE_SIZE BITS_PER_WORD
-#endif
-
-#ifndef DOUBLE_TYPE_SIZE
-#define DOUBLE_TYPE_SIZE (BITS_PER_WORD * 2)
-#endif
-
-#ifndef LONG_DOUBLE_TYPE_SIZE
-#define LONG_DOUBLE_TYPE_SIZE (BITS_PER_WORD * 2)
-#endif
-
/* Random macros describing parts of SDB data. */
/* Put something here if lines get too long */
diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c
index 701b7ba1721..0091d727092 100644
--- a/gcc/simplify-rtx.c
+++ b/gcc/simplify-rtx.c
@@ -1976,10 +1976,12 @@ simplify_ternary_operation (code, mode, op0_mode, op0, op1, op2)
/* Convert a == b ? b : a to "a". */
if (GET_CODE (op0) == NE && ! side_effects_p (op0)
+ && (! FLOAT_MODE_P (mode) || flag_fast_math)
&& rtx_equal_p (XEXP (op0, 0), op1)
&& rtx_equal_p (XEXP (op0, 1), op2))
return op1;
else if (GET_CODE (op0) == EQ && ! side_effects_p (op0)
+ && (! FLOAT_MODE_P (mode) || flag_fast_math)
&& rtx_equal_p (XEXP (op0, 1), op1)
&& rtx_equal_p (XEXP (op0, 0), op2))
return op2;
diff --git a/gcc/stmt.c b/gcc/stmt.c
index 6726840f0e5..1144afec869 100644
--- a/gcc/stmt.c
+++ b/gcc/stmt.c
@@ -240,8 +240,6 @@ struct nesting
tree index_expr;
/* Type that INDEX_EXPR should be converted to. */
tree nominal_type;
- /* Number of range exprs in case statement. */
- int num_ranges;
/* Name of this kind of statement, for warnings. */
const char *printname;
/* Used to save no_line_numbers till we see the first case label.
@@ -421,7 +419,6 @@ static int node_has_high_bound PARAMS ((case_node_ptr, tree));
static int node_is_bounded PARAMS ((case_node_ptr, tree));
static void emit_jump_if_reachable PARAMS ((rtx));
static void emit_case_nodes PARAMS ((rtx, case_node_ptr, rtx, tree));
-static int add_case_node PARAMS ((tree, tree, tree, tree *));
static struct case_node *case_tree2list PARAMS ((case_node *, case_node *));
static void mark_cond_nesting PARAMS ((struct nesting *));
static void mark_loop_nesting PARAMS ((struct nesting *));
@@ -4431,7 +4428,6 @@ expand_start_case (exit_flag, expr, type, printname)
thiscase->data.case_stmt.index_expr = expr;
thiscase->data.case_stmt.nominal_type = type;
thiscase->data.case_stmt.default_label = 0;
- thiscase->data.case_stmt.num_ranges = 0;
thiscase->data.case_stmt.printname = printname;
thiscase->data.case_stmt.line_number_status = force_line_numbers ();
case_stack = thiscase;
@@ -4469,7 +4465,6 @@ expand_start_case_dummy ()
thiscase->data.case_stmt.start = 0;
thiscase->data.case_stmt.nominal_type = 0;
thiscase->data.case_stmt.default_label = 0;
- thiscase->data.case_stmt.num_ranges = 0;
case_stack = thiscase;
nesting_stack = thiscase;
start_cleanup_deferral ();
@@ -4585,21 +4580,7 @@ pushcase (value, converter, label, duplicate)
|| ! int_fits_type_p (value, index_type)))
return 3;
- /* Fail if this is a duplicate or overlaps another entry. */
- if (value == 0)
- {
- if (case_stack->data.case_stmt.default_label != 0)
- {
- *duplicate = case_stack->data.case_stmt.default_label;
- return 2;
- }
- case_stack->data.case_stmt.default_label = label;
- }
- else
- return add_case_node (value, value, label, duplicate);
-
- expand_label (label);
- return 0;
+ return add_case_node (value, value, label, duplicate);
}
/* Like pushcase but this case applies to all values between VALUE1 and
@@ -4675,7 +4656,7 @@ pushcase_range (value1, value2, converter, label, duplicate)
into case_stack->data.case_stmt.case_list. Use an AVL tree to avoid
slowdown for large switch statements. */
-static int
+int
add_case_node (low, high, label, duplicate)
tree low, high;
tree label;
@@ -4683,6 +4664,25 @@ add_case_node (low, high, label, duplicate)
{
struct case_node *p, **q, *r;
+ /* If there's no HIGH value, then this is not a case range; it's
+ just a simple case label. But that's just a degenerate case
+ range. */
+ if (!high)
+ high = low;
+
+ /* Handle default labels specially. */
+ if (!high && !low)
+ {
+ if (case_stack->data.case_stmt.default_label != 0)
+ {
+ *duplicate = case_stack->data.case_stmt.default_label;
+ return 2;
+ }
+ case_stack->data.case_stmt.default_label = label;
+ expand_label (label);
+ return 0;
+ }
+
q = &case_stack->data.case_stmt.case_list;
p = *q;
@@ -4714,14 +4714,10 @@ add_case_node (low, high, label, duplicate)
r->low = copy_node (low);
/* If the bounds are equal, turn this into the one-value case. */
-
if (tree_int_cst_equal (low, high))
r->high = r->low;
else
- {
- r->high = copy_node (high);
- case_stack->data.case_stmt.num_ranges++;
- }
+ r->high = copy_node (high);
r->code_label = label;
expand_label (label);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index ff26a525f26..523b7628da9 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,46 @@
+2000-09-12 Alexandre Oliva <aoliva@redhat.com>
+
+ * g++.other/inline13.C: New test.
+
+2000-09-12 Andreas Jaeger <aj@suse.de>
+
+ * gcc.c-torture/execute/widechar-2.c: New test for wchar_t
+ constant by Ulrich Drepper <drepper@redhat.com>.
+
+Tue Sep 12 18:32:07 2000 J"orn Rennecke <amylaar@redhat.co.uk>
+
+ * gcc.c-torture/compile/981006-1.x: No -fpic for sh-coff / sh-hms.
+
+2000-09-12 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * gcc.dg/wtr-union-init-2.c, gcc.dg/wtr-union-init-3.c: New tests.
+
+2000-09-11 Zack Weinberg <zack@wolery.cumb.org>
+
+ * gcc.dg/cpp/backslash.c: New test.
+
+2000-09-11 Alexandre Oliva <aoliva@redhat.com>
+
+ * gcc.c-torture/execute/20000910-1.c: New test.
+ * gcc.c-torture/execute/20000910-2.c: Likewise.
+
+2000-09-11 Robert Lipe <robertl@sco.com>
+
+ * gcc.dg/pragma-align.c: New test.
+
+2000-09-11 Nathan Sidwell <nathan@codesourcery.com>
+
+ * g++.old-deja/g++.pt/explicit82.C: New test.
+ * g++.old-deja/g++.pt/explicit83.C: New test.
+
+2000-09-10 Zack Weinberg <zack@wolery.cumb.org>
+
+ * gcc.dg/asm-names.c: New test.
+
+2000-09-09 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * gcc.dg/cpp/tr-warn6.c: New test
+
2000-09-07 Joseph S. Myers <jsm28@cam.ac.uk>
* gcc.dg/format-ext-3.c: Test %#b and %#h as formats that should
diff --git a/gcc/testsuite/gcc.c-torture/compile/981006-1.x b/gcc/testsuite/gcc.c-torture/compile/981006-1.x
index 5c8d9f0ece5..6f8a1a6346c 100644
--- a/gcc/testsuite/gcc.c-torture/compile/981006-1.x
+++ b/gcc/testsuite/gcc.c-torture/compile/981006-1.x
@@ -4,6 +4,8 @@ if { [istarget rs6000-*-aix*]
|| [istarget arm*-*-*]
|| [istarget strongarm*-*-*]
|| [istarget fr30-*-*]
+ || [istarget sh-*-hms]
+ || [istarget sh-*-coff]
} {
set options "-Wuninitialized -Werror"
} else {
diff --git a/gcc/tm.texi b/gcc/tm.texi
index 3655248c461..4e26902a2f5 100644
--- a/gcc/tm.texi
+++ b/gcc/tm.texi
@@ -7717,33 +7717,62 @@ C++, which is to pretend that the file's contents are enclosed in
@samp{extern "C" @{@dots{}@}}.
@findex HANDLE_PRAGMA
+@item HANDLE_PRAGMA (@var{getc}, @var{ungetc}, @var{name})
+This macro is no longer supported. You must use
+@code{REGISTER_TARGET_PRAGMAS} instead.
+
+@findex REGISTER_TARGET_PRAGMAS
@findex #pragma
@findex pragma
-@item HANDLE_PRAGMA (@var{getc}, @var{ungetc}, @var{name})
-Define this macro if you want to implement any pragmas. If defined, it
-is a C expression whose value is 1 if the pragma was handled by the
-macro, zero otherwise. The argument @var{getc} is a function of type
-@samp{int (*)(void)} which will return the next character in the input
-stream, or EOF if no characters are left. The argument @var{ungetc} is
-a function of type @samp{void (*)(int)} which will push a character back
-into the input stream. The argument @var{name} is the word following
-#pragma in the input stream. The input stream pointer will be pointing
-just beyond the end of this word. The input stream should be left
-undistrubed if the expression returns zero, otherwise it should be
-pointing at the next character after the end of the pragma. Any
-characters remaining on the line will be ignored.
-
-It is generally a bad idea to implement new uses of @code{#pragma}. The
-only reason to define this macro is for compatibility with other
-compilers that do support @code{#pragma} for the sake of any user
-programs which already use it.
+@item REGISTER_TARGET_PRAGMAS (@var{pfile})
+Define this macro if you want to implement any target-specific pragmas.
+If defined, it is a C expression which makes a series of calls to the
+@code{cpp_register_pragma} and/or @code{cpp_register_pragma_space}
+functions. The @var{pfile} argument is the first argument to supply to
+these functions. The macro may also do setup required for the pragmas.
+
+The primary reason to define this macro is to provide compatibility with
+other compilers for the same target. In general, we discourage
+definition of target-specific pragmas for GCC.
If the pragma can be implemented by atttributes then the macro
@samp{INSERT_ATTRIBUTES} might be a useful one to define as well.
-Note: older versions of this macro only had two arguments: @var{stream}
-and @var{token}. The macro was changed in order to allow it to work
-when gcc is built both with and without a cpp library.
+Preprocessor macros that appear on pragma lines are not expanded. All
+@samp{#pragma} directives that do not match any registered pragma are
+silently ignored, unless the user specifies @samp{-Wunknown-pragmas}.
+
+@deftypefun void cpp_register_pragma (cpp_reader *@var{pfile}, const char *@var{space}, const char *@var{name}, void (*@var{callback}) (cpp_reader *))
+
+Each call to @code{cpp_register_pragma} establishes one pragma. The
+@var{callback} routine will be called when the preprocessor encounters a
+pragma of the form
+
+@smallexample
+#pragma [@var{space}] @var{name} @dots{}
+@end smallexample
+
+@var{space} must have been the subject of a previous call to
+@code{cpp_register_pragma_space}, or else be a null pointer. The
+callback routine receives @var{pfile} as its first argument, but must
+not use it for anything (this may change in the future). It may read
+any text after the @var{name} by making calls to @code{c_lex}. Text
+which is not read by the callback will be silently ignored.
+
+Note that both @var{space} and @var{name} are case sensitive.
+
+For an example use of this routine, see @file{c4x.h} and the callback
+routines defined in @file{c4x.c}.
+@end deftypefun
+
+@deftypefun void cpp_register_pragma_space (cpp_reader *@var{pfile}, const char *@var{space})
+This routine establishes a namespace for pragmas, which will be
+registered by subsequent calls to @code{cpp_register_pragma}. For
+example, pragmas defined by the C standard are in the @samp{STDC}
+namespace, and pragmas specific to GCC are in the @samp{GCC} namespace.
+
+For an example use of this routine in a target header, see @file{v850.h}.
+@end deftypefun
@findex HANDLE_SYSV_PRAGMA
@findex #pragma
diff --git a/gcc/toplev.c b/gcc/toplev.c
index 7c76e4779b0..3aec103f13f 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -795,6 +795,10 @@ int flag_verbose_asm = 0;
int flag_debug_asm = 0;
+/* -dP causes the rtl to be emitted as a comment in assembly. */
+
+int flag_dump_rtl_in_asm = 0;
+
/* -fgnu-linker specifies use of the GNU linker for initializations.
(Or, more generally, a linker that handles initializations.)
-fno-gnu-linker says that collect2 will be used. */
@@ -3218,7 +3222,7 @@ rest_of_compilation (decl)
/* Discover and record the loop depth at the head of each basic
block. The loop infrastructure does the real job for us. */
- flow_loops_find (&loops);
+ flow_loops_find (&loops, LOOP_TREE);
/* Estimate using heuristics if no profiling info is available. */
estimate_probability (&loops);
@@ -3977,6 +3981,10 @@ decode_d_option (arg)
case 'p':
flag_print_asm_name = 1;
break;
+ case 'P':
+ flag_dump_rtl_in_asm = 1;
+ flag_print_asm_name = 1;
+ break;
case 'v':
graph_dump_format = vcg;
break;
diff --git a/gcc/tradcif.y b/gcc/tradcif.y
index 4a70bed89a3..082977d45e3 100644
--- a/gcc/tradcif.y
+++ b/gcc/tradcif.y
@@ -26,6 +26,7 @@ Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
%{
#include "config.h"
#include "system.h"
+#include "defaults.h"
#include <setjmp.h>
int yylex PARAMS ((void));
@@ -44,9 +45,6 @@ Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
/* some external tables of character types */
extern unsigned char is_idstart[], is_idchar[];
-#ifndef CHAR_TYPE_SIZE
-#define CHAR_TYPE_SIZE BITS_PER_UNIT
-#endif
%}
%union {
diff --git a/gcc/tree.c b/gcc/tree.c
index 9112688556d..dc71a6c49f6 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -44,6 +44,7 @@ Boston, MA 02111-1307, USA. */
#include "ggc.h"
#include "hashtab.h"
#include "output.h"
+#include "defaults.h"
#define obstack_chunk_alloc xmalloc
#define obstack_chunk_free free
@@ -4424,6 +4425,21 @@ tree_int_cst_lt (t1, t2)
return INT_CST_LT_UNSIGNED (t1, t2);
}
+/* Returns -1 if T1 < T2, 0 if T1 == T2, and 1 if T1 > T2. */
+
+int
+tree_int_cst_compare (t1, t2)
+ tree t1;
+ tree t2;
+{
+ if (tree_int_cst_lt (t1, t2))
+ return -1;
+ else if (tree_int_cst_lt (t2, t1))
+ return 1;
+ else
+ return 0;
+}
+
/* Return 1 if T is an INTEGER_CST that can be represented in a single
HOST_WIDE_INT value. If POS is nonzero, the result must be positive. */
@@ -5887,38 +5903,6 @@ finish_vector_type (t)
}
}
-#ifndef CHAR_TYPE_SIZE
-#define CHAR_TYPE_SIZE BITS_PER_UNIT
-#endif
-
-#ifndef SHORT_TYPE_SIZE
-#define SHORT_TYPE_SIZE (BITS_PER_UNIT * MIN ((UNITS_PER_WORD + 1) / 2, 2))
-#endif
-
-#ifndef INT_TYPE_SIZE
-#define INT_TYPE_SIZE BITS_PER_WORD
-#endif
-
-#ifndef LONG_TYPE_SIZE
-#define LONG_TYPE_SIZE BITS_PER_WORD
-#endif
-
-#ifndef LONG_LONG_TYPE_SIZE
-#define LONG_LONG_TYPE_SIZE (BITS_PER_WORD * 2)
-#endif
-
-#ifndef FLOAT_TYPE_SIZE
-#define FLOAT_TYPE_SIZE BITS_PER_WORD
-#endif
-
-#ifndef DOUBLE_TYPE_SIZE
-#define DOUBLE_TYPE_SIZE (BITS_PER_WORD * 2)
-#endif
-
-#ifndef LONG_DOUBLE_TYPE_SIZE
-#define LONG_DOUBLE_TYPE_SIZE (BITS_PER_WORD * 2)
-#endif
-
/* Create nodes for all integer types (and error_mark_node) using the sizes
of C datatypes. The caller should call set_sizetype soon after calling
this function to select one of the types as sizetype. */
diff --git a/gcc/tree.h b/gcc/tree.h
index 570dad348f1..a5bdc1e3021 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -96,6 +96,9 @@ enum built_in_function
/* Names for the above. */
extern const char *const built_in_names[(int) END_BUILTINS];
+
+/* An array of _DECL trees for the above. */
+extern union tree_node *built_in_decls[(int) END_BUILTINS];
/* The definition of tree nodes fills the next several pages. */
@@ -1991,6 +1994,7 @@ extern int attribute_list_equal PARAMS ((tree, tree));
extern int attribute_list_contained PARAMS ((tree, tree));
extern int tree_int_cst_equal PARAMS ((tree, tree));
extern int tree_int_cst_lt PARAMS ((tree, tree));
+extern int tree_int_cst_compare PARAMS ((tree, tree));
extern int host_integerp PARAMS ((tree, int));
extern HOST_WIDE_INT tree_low_cst PARAMS ((tree, int));
extern int tree_int_cst_msb PARAMS ((tree));
@@ -2549,6 +2553,8 @@ extern int expand_dcc_cleanup PARAMS ((tree));
extern void expand_start_case PARAMS ((int, tree, tree,
const char *));
extern void expand_end_case PARAMS ((tree));
+extern int add_case_node PARAMS ((tree, tree,
+ tree, tree *));
extern int pushcase PARAMS ((tree,
tree (*) (tree, tree),
tree, tree *));
diff --git a/gcc/unroll.c b/gcc/unroll.c
index 36e6c57b9f8..255e1039336 100644
--- a/gcc/unroll.c
+++ b/gcc/unroll.c
@@ -1,6 +1,6 @@
/* Try to unroll loops, and split induction variables.
- Copyright (C) 1992, 1993, 1994, 1995, 1997, 1998,
- 1999, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1992, 1993, 1994, 1995, 1997, 1998, 1999, 2000
+ Free Software Foundation, Inc.
Contributed by James E. Wilson, Cygnus Support/UC Berkeley.
This file is part of GNU CC.
@@ -140,12 +140,17 @@ Boston, MA 02111-1307, USA. */
#define NUM_FACTORS 4
-struct _factor { int factor, count; } factors[NUM_FACTORS]
- = { {2, 0}, {3, 0}, {5, 0}, {7, 0}};
+struct _factor { int factor, count; }
+factors[NUM_FACTORS] = { {2, 0}, {3, 0}, {5, 0}, {7, 0}};
/* Describes the different types of loop unrolling performed. */
-enum unroll_types { UNROLL_COMPLETELY, UNROLL_MODULO, UNROLL_NAIVE };
+enum unroll_types
+{
+ UNROLL_COMPLETELY,
+ UNROLL_MODULO,
+ UNROLL_NAIVE
+};
#include "config.h"
#include "system.h"
@@ -201,18 +206,18 @@ static void init_reg_map PARAMS ((struct inline_remap *, int));
static rtx calculate_giv_inc PARAMS ((rtx, rtx, unsigned int));
static rtx initial_reg_note_copy PARAMS ((rtx, struct inline_remap *));
static void final_reg_note_copy PARAMS ((rtx, struct inline_remap *));
-static void copy_loop_body PARAMS ((rtx, rtx, struct inline_remap *, rtx, int,
- enum unroll_types, rtx, rtx, rtx, rtx));
-static void iteration_info PARAMS ((const struct loop *, rtx, rtx *, rtx *));
+static void copy_loop_body PARAMS ((struct loop *, rtx, rtx,
+ struct inline_remap *, rtx, int,
+ enum unroll_types, rtx, rtx, rtx, rtx));
static int find_splittable_regs PARAMS ((const struct loop *,
enum unroll_types, rtx, int));
-static int find_splittable_givs PARAMS ((const struct loop *,
+static int find_splittable_givs PARAMS ((const struct loop *,
struct iv_class *, enum unroll_types,
rtx, int));
static int reg_dead_after_loop PARAMS ((const struct loop *, rtx));
static rtx fold_rtx_mult_add PARAMS ((rtx, rtx, rtx, enum machine_mode));
static int verify_addresses PARAMS ((struct induction *, rtx, int));
-static rtx remap_split_bivs PARAMS ((rtx));
+static rtx remap_split_bivs PARAMS ((struct loop *, rtx));
static rtx find_common_reg_term PARAMS ((rtx, rtx));
static rtx subtract_reg_term PARAMS ((rtx, rtx));
static rtx loop_find_equiv_value PARAMS ((const struct loop *, rtx));
@@ -236,6 +241,8 @@ unroll_loop (loop, insn_count, end_insert_before, strength_reduce_p)
rtx end_insert_before;
int strength_reduce_p;
{
+ struct loop_info *loop_info = LOOP_INFO (loop);
+ struct loop_ivs *ivs = LOOP_IVS (loop);
int i, j;
unsigned int r;
unsigned HOST_WIDE_INT temp;
@@ -262,7 +269,6 @@ unroll_loop (loop, insn_count, end_insert_before, strength_reduce_p)
rtx last_loop_insn;
rtx loop_start = loop->start;
rtx loop_end = loop->end;
- struct loop_info *loop_info = LOOP_INFO (loop);
/* Don't bother unrolling huge loops. Since the minimum factor is
two, loops greater than one half of MAX_UNROLLED_INSNS will never
@@ -356,7 +362,7 @@ unroll_loop (loop, insn_count, end_insert_before, strength_reduce_p)
rtx ujump = ujump_to_loop_cont (loop->start, loop->cont);
if (ujump)
delete_insn (ujump);
-
+
/* If number of iterations is exactly 1, then eliminate the compare and
branch at the end of the loop since they will never be taken.
Then return, since no other action is needed here. */
@@ -442,14 +448,12 @@ unroll_loop (loop, insn_count, end_insert_before, strength_reduce_p)
if (unroll_number == 1)
{
if (loop_dump_stream)
- fprintf (loop_dump_stream,
- "Loop unrolling: No factors found.\n");
+ fprintf (loop_dump_stream, "Loop unrolling: No factors found.\n");
}
else
unroll_type = UNROLL_MODULO;
}
-
/* Default case, calculate number of times to unroll loop based on its
size. */
if (unroll_type == UNROLL_NAIVE)
@@ -465,9 +469,7 @@ unroll_loop (loop, insn_count, end_insert_before, strength_reduce_p)
/* Now we know how many times to unroll the loop. */
if (loop_dump_stream)
- fprintf (loop_dump_stream,
- "Unrolling loop %d times.\n", unroll_number);
-
+ fprintf (loop_dump_stream, "Unrolling loop %d times.\n", unroll_number);
if (unroll_type == UNROLL_COMPLETELY || unroll_type == UNROLL_MODULO)
{
@@ -766,9 +768,7 @@ unroll_loop (loop, insn_count, end_insert_before, strength_reduce_p)
for (i = 0; i < len; i++)
{
label = XEXP (XVECEXP (pat, diff_vec_p, i), 0);
- set_label_in_map (map,
- CODE_LABEL_NUMBER (label),
- label);
+ set_label_in_map (map, CODE_LABEL_NUMBER (label), label);
}
}
}
@@ -827,7 +827,8 @@ unroll_loop (loop, insn_count, end_insert_before, strength_reduce_p)
/* If we have a target that uses cc0, then we also must not duplicate
the insn that sets cc0 before the jump insn, if one is present. */
#ifdef HAVE_cc0
- if (GET_CODE (copy_end) == JUMP_INSN && sets_cc0_p (PREV_INSN (copy_end)))
+ if (GET_CODE (copy_end) == JUMP_INSN
+ && sets_cc0_p (PREV_INSN (copy_end)))
copy_end_luid--;
#endif
@@ -873,7 +874,7 @@ unroll_loop (loop, insn_count, end_insert_before, strength_reduce_p)
}
/* Givs that have been created from multiple biv increments always have
local registers. */
- for (r = first_increment_giv; r <= last_increment_giv; r++)
+ for (r = ivs->first_increment_giv; r <= ivs->last_increment_giv; r++)
{
local_regno[r] = 1;
if (loop_dump_stream)
@@ -912,7 +913,7 @@ unroll_loop (loop, insn_count, end_insert_before, strength_reduce_p)
&initial_value, &final_value, &increment,
&mode))
{
- register rtx diff ;
+ register rtx diff;
rtx *labels;
int abs_inc, neg_inc;
@@ -935,7 +936,7 @@ unroll_loop (loop, insn_count, end_insert_before, strength_reduce_p)
abs_inc = INTVAL (increment);
if (abs_inc < 0)
{
- abs_inc = - abs_inc;
+ abs_inc = -abs_inc;
neg_inc = 1;
}
@@ -1070,8 +1071,8 @@ unroll_loop (loop, insn_count, end_insert_before, strength_reduce_p)
{
copy_end = PREV_INSN (last_loop_insn);
#ifdef HAVE_cc0
- /* The immediately preceding insn may be a compare which we do not
- want to copy. */
+ /* The immediately preceding insn may be a compare which
+ we do not want to copy. */
if (sets_cc0_p (PREV_INSN (copy_end)))
copy_end = PREV_INSN (copy_end);
#endif
@@ -1116,7 +1117,7 @@ unroll_loop (loop, insn_count, end_insert_before, strength_reduce_p)
/* None of the copies are the `last_iteration', so just
pass zero for that parameter. */
- copy_loop_body (copy_start, copy_end, map, exit_label, 0,
+ copy_loop_body (loop, copy_start, copy_end, map, exit_label, 0,
unroll_type, start_label, loop_end,
loop_start, copy_end);
}
@@ -1131,8 +1132,9 @@ unroll_loop (loop, insn_count, end_insert_before, strength_reduce_p)
{
insert_before = last_loop_insn;
#ifdef HAVE_cc0
- /* The instruction immediately before the JUMP_INSN may be a compare
- instruction which we do not want to copy or delete. */
+ /* The instruction immediately before the JUMP_INSN may
+ be a compare instruction which we do not want to copy
+ or delete. */
if (sets_cc0_p (PREV_INSN (insert_before)))
insert_before = PREV_INSN (insert_before);
#endif
@@ -1153,7 +1155,8 @@ unroll_loop (loop, insn_count, end_insert_before, strength_reduce_p)
if (unroll_type == UNROLL_NAIVE && ! flag_unroll_all_loops)
{
if (loop_dump_stream)
- fprintf (loop_dump_stream, "Unrolling failure: Naive unrolling not being done.\n");
+ fprintf (loop_dump_stream,
+ "Unrolling failure: Naive unrolling not being done.\n");
goto egress;
}
@@ -1194,7 +1197,7 @@ unroll_loop (loop, insn_count, end_insert_before, strength_reduce_p)
/* Search the list of bivs and givs to find ones which need to be remapped
when split, and set their reg_map entry appropriately. */
- for (bl = loop_iv_list; bl; bl = bl->next)
+ for (bl = ivs->loop_iv_list; bl; bl = bl->next)
{
if (REGNO (bl->biv->src_reg) != bl->regno)
map->reg_map[bl->regno] = bl->biv->src_reg;
@@ -1220,7 +1223,7 @@ unroll_loop (loop, insn_count, end_insert_before, strength_reduce_p)
{
insn = NEXT_INSN (copy_end);
if (GET_CODE (insn) == INSN || GET_CODE (insn) == JUMP_INSN)
- PATTERN (insn) = remap_split_bivs (PATTERN (insn));
+ PATTERN (insn) = remap_split_bivs (loop, PATTERN (insn));
}
/* For unroll_number times, make a copy of each instruction
@@ -1264,7 +1267,7 @@ unroll_loop (loop, insn_count, end_insert_before, strength_reduce_p)
LABEL_NUSES (tem)++;
}
- copy_loop_body (copy_start, copy_end, map, exit_label,
+ copy_loop_body (loop, copy_start, copy_end, map, exit_label,
i == unroll_number - 1, unroll_type, start_label,
loop_end, insert_before, insert_before);
}
@@ -1418,7 +1421,7 @@ precondition_loop_p (loop, initial_value, final_value, increment, mode)
return 0;
}
else if ((exact_log2 (INTVAL (loop_info->increment)) < 0)
- && (exact_log2 (- INTVAL (loop_info->increment)) < 0))
+ && (exact_log2 (-INTVAL (loop_info->increment)) < 0))
{
if (loop_dump_stream)
fprintf (loop_dump_stream,
@@ -1477,7 +1480,7 @@ precondition_loop_p (loop, initial_value, final_value, increment, mode)
return 0;
}
- /* Note that iteration_info biases the initial value for GIV iterators
+ /* Note that loop_iterations biases the initial value for GIV iterators
such as "while (i-- > 0)" so that we can calculate the number of
iterations just like for BIV iterators.
@@ -1509,7 +1512,6 @@ precondition_loop_p (loop, initial_value, final_value, increment, mode)
return 1;
}
-
/* All pseudo-registers must be mapped to themselves. Two hard registers
must be mapped, VIRTUAL_STACK_VARS_REGNUM and VIRTUAL_INCOMING_ARGS_
REGNUM, to avoid function-inlining specific conversions of these
@@ -1708,9 +1710,10 @@ final_reg_note_copy (notes, map)
This is very similar to a loop in expand_inline_function. */
static void
-copy_loop_body (copy_start, copy_end, map, exit_label, last_iteration,
+copy_loop_body (loop, copy_start, copy_end, map, exit_label, last_iteration,
unroll_type, start_label, loop_end, insert_before,
copy_notes_from)
+ struct loop *loop;
rtx copy_start, copy_end;
struct inline_remap *map;
rtx exit_label;
@@ -1718,6 +1721,7 @@ copy_loop_body (copy_start, copy_end, map, exit_label, last_iteration,
enum unroll_types unroll_type;
rtx start_label, loop_end, insert_before, copy_notes_from;
{
+ struct loop_ivs *ivs = LOOP_IVS (loop);
rtx insn, pattern;
rtx set, tem, copy = NULL_RTX;
int dest_reg_was_split, i;
@@ -1736,8 +1740,7 @@ copy_loop_body (copy_start, copy_end, map, exit_label, last_iteration,
if (! last_iteration)
{
final_label = gen_label_rtx ();
- set_label_in_map (map, CODE_LABEL_NUMBER (start_label),
- final_label);
+ set_label_in_map (map, CODE_LABEL_NUMBER (start_label), final_label);
}
else
set_label_in_map (map, CODE_LABEL_NUMBER (start_label), start_label);
@@ -1781,7 +1784,7 @@ copy_loop_body (copy_start, copy_end, map, exit_label, last_iteration,
unsigned int regno = REGNO (SET_DEST (set));
v = addr_combined_regs[REGNO (SET_DEST (set))];
- bl = reg_biv_class[REGNO (v->src_reg)];
+ bl = ivs->reg_biv_class[REGNO (v->src_reg)];
/* Although the giv_inc amount is not needed here, we must call
calculate_giv_inc here since it might try to delete the
@@ -1854,7 +1857,7 @@ copy_loop_body (copy_start, copy_end, map, exit_label, last_iteration,
We must subtract the const_adjust factor added in
above. */
tv->dest_reg = plus_constant (dest_reg,
- - tv->const_adjust);
+ -tv->const_adjust);
*tv->location = tv->dest_reg;
}
}
@@ -1936,9 +1939,9 @@ copy_loop_body (copy_start, copy_end, map, exit_label, last_iteration,
induction entry by find_splittable_regs. */
if (regno < max_reg_before_loop
- && REG_IV_TYPE (regno) == BASIC_INDUCT)
+ && REG_IV_TYPE (ivs, regno) == BASIC_INDUCT)
{
- giv_src_reg = reg_biv_class[regno]->biv->src_reg;
+ giv_src_reg = ivs->reg_biv_class[regno]->biv->src_reg;
giv_dest_reg = giv_src_reg;
}
@@ -2070,7 +2073,7 @@ copy_loop_body (copy_start, copy_end, map, exit_label, last_iteration,
emit_label_after (lab, jmp);
LABEL_NUSES (lab) = 0;
if (!redirect_jump (copy, lab, 0))
- abort();
+ abort ();
}
}
@@ -2206,7 +2209,7 @@ copy_loop_body (copy_start, copy_end, map, exit_label, last_iteration,
/* VTOP and CONT notes are valid only before the loop exit test.
If placed anywhere else, loop may generate bad code. */
/* BASIC_BLOCK notes exist to stabilize basic block structures with
- the associated rtl. We do not want to share the structure in
+ the associated rtl. We do not want to share the structure in
this new block. */
if (NOTE_LINE_NUMBER (insn) != NOTE_INSN_DELETED
@@ -2427,123 +2430,6 @@ biv_total_increment (bl)
return result;
}
-/* Determine the initial value of the iteration variable, and the amount
- that it is incremented each loop. Use the tables constructed by
- the strength reduction pass to calculate these values.
-
- Initial_value and/or increment are set to zero if their values could not
- be calculated. */
-
-static void
-iteration_info (loop, iteration_var, initial_value, increment)
- const struct loop *loop ATTRIBUTE_UNUSED;
- rtx iteration_var, *initial_value, *increment;
-{
- struct iv_class *bl;
-
- /* Clear the result values, in case no answer can be found. */
- *initial_value = 0;
- *increment = 0;
-
- /* The iteration variable can be either a giv or a biv. Check to see
- which it is, and compute the variable's initial value, and increment
- value if possible. */
-
- /* If this is a new register, can't handle it since we don't have any
- reg_iv_type entry for it. */
- if ((unsigned) REGNO (iteration_var) >= reg_iv_type->num_elements)
- {
- if (loop_dump_stream)
- fprintf (loop_dump_stream,
- "Loop unrolling: No reg_iv_type entry for iteration var.\n");
- return;
- }
-
- /* Reject iteration variables larger than the host wide int size, since they
- could result in a number of iterations greater than the range of our
- `unsigned HOST_WIDE_INT' variable loop_info->n_iterations. */
- else if ((GET_MODE_BITSIZE (GET_MODE (iteration_var))
- > HOST_BITS_PER_WIDE_INT))
- {
- if (loop_dump_stream)
- fprintf (loop_dump_stream,
- "Loop unrolling: Iteration var rejected because mode too large.\n");
- return;
- }
- else if (GET_MODE_CLASS (GET_MODE (iteration_var)) != MODE_INT)
- {
- if (loop_dump_stream)
- fprintf (loop_dump_stream,
- "Loop unrolling: Iteration var not an integer.\n");
- return;
- }
- else if (REG_IV_TYPE (REGNO (iteration_var)) == BASIC_INDUCT)
- {
- /* When reg_iv_type / reg_iv_info is resized for biv increments
- that are turned into givs, reg_biv_class is not resized.
- So check here that we don't make an out-of-bounds access. */
- if (REGNO (iteration_var) >= max_reg_before_loop)
- abort ();
-
- /* Grab initial value, only useful if it is a constant. */
- bl = reg_biv_class[REGNO (iteration_var)];
- *initial_value = bl->initial_value;
-
- *increment = biv_total_increment (bl);
- }
- else if (REG_IV_TYPE (REGNO (iteration_var)) == GENERAL_INDUCT)
- {
- HOST_WIDE_INT offset = 0;
- struct induction *v = REG_IV_INFO (REGNO (iteration_var));
-
- if (REGNO (v->src_reg) >= max_reg_before_loop)
- abort ();
-
- bl = reg_biv_class[REGNO (v->src_reg)];
-
- /* Increment value is mult_val times the increment value of the biv. */
-
- *increment = biv_total_increment (bl);
- if (*increment)
- {
- struct induction *biv_inc;
-
- *increment
- = fold_rtx_mult_add (v->mult_val, *increment, const0_rtx, v->mode);
- /* The caller assumes that one full increment has occured at the
- first loop test. But that's not true when the biv is incremented
- after the giv is set (which is the usual case), e.g.:
- i = 6; do {;} while (i++ < 9) .
- Therefore, we bias the initial value by subtracting the amount of
- the increment that occurs between the giv set and the giv test. */
- for (biv_inc = bl->biv; biv_inc; biv_inc = biv_inc->next_iv)
- {
- if (loop_insn_first_p (v->insn, biv_inc->insn))
- offset -= INTVAL (biv_inc->add_val);
- }
- offset *= INTVAL (v->mult_val);
- }
- if (loop_dump_stream)
- fprintf (loop_dump_stream,
- "Loop unrolling: Giv iterator, initial value bias %ld.\n",
- (long) offset);
- /* Initial value is mult_val times the biv's initial value plus
- add_val. Only useful if it is a constant. */
- *initial_value
- = fold_rtx_mult_add (v->mult_val,
- plus_constant (bl->initial_value, offset),
- v->add_val, v->mode);
- }
- else
- {
- if (loop_dump_stream)
- fprintf (loop_dump_stream,
- "Loop unrolling: Not basic or general induction var.\n");
- return;
- }
-}
-
-
/* For each biv and giv, determine whether it can be safely split into
a different variable for each unrolled copy of the loop body. If it
is safe to split, then indicate that by saving some useful info
@@ -2575,6 +2461,7 @@ find_splittable_regs (loop, unroll_type, end_insert_before, unroll_number)
rtx end_insert_before;
int unroll_number;
{
+ struct loop_ivs *ivs = LOOP_IVS (loop);
struct iv_class *bl;
struct induction *v;
rtx increment, tem;
@@ -2584,7 +2471,7 @@ find_splittable_regs (loop, unroll_type, end_insert_before, unroll_number)
rtx loop_start = loop->start;
rtx loop_end = loop->end;
- for (bl = loop_iv_list; bl; bl = bl->next)
+ for (bl = ivs->loop_iv_list; bl; bl = bl->next)
{
/* Biv_total_increment must return a constant value,
otherwise we can not calculate the split values. */
@@ -2653,7 +2540,8 @@ find_splittable_regs (loop, unroll_type, end_insert_before, unroll_number)
loop_start);
if (loop_dump_stream)
- fprintf (loop_dump_stream, "Biv %d initial value remapped to %d.\n",
+ fprintf (loop_dump_stream,
+ "Biv %d initial value remapped to %d.\n",
bl->regno, REGNO (tem));
splittable_regs[bl->regno] = tem;
@@ -2680,7 +2568,7 @@ find_splittable_regs (loop, unroll_type, end_insert_before, unroll_number)
depend on it may be splittable if the biv is live outside the
loop, and the givs aren't. */
- result += find_splittable_givs (loop, bl, unroll_type, increment,
+ result += find_splittable_givs (loop, bl, unroll_type, increment,
unroll_number);
/* If final value is non-zero, then must emit an instruction which sets
@@ -2768,6 +2656,7 @@ find_splittable_givs (loop, bl, unroll_type, increment, unroll_number)
rtx increment;
int unroll_number;
{
+ struct loop_ivs *ivs = LOOP_IVS (loop);
struct induction *v, *v2;
rtx final_value;
rtx tem;
@@ -2837,8 +2726,8 @@ find_splittable_givs (loop, bl, unroll_type, increment, unroll_number)
>= INSN_LUID (loop->end)))
/* Givs made from biv increments are missed by the above test, so
test explicitly for them. */
- && (REGNO (v->dest_reg) < first_increment_giv
- || REGNO (v->dest_reg) > last_increment_giv)
+ && (REGNO (v->dest_reg) < ivs->first_increment_giv
+ || REGNO (v->dest_reg) > ivs->last_increment_giv)
&& ! (final_value = v->final_value))
continue;
@@ -2895,6 +2784,7 @@ find_splittable_givs (loop, bl, unroll_type, increment, unroll_number)
loop->start);
biv_initial_value = tem;
}
+ biv_initial_value = extend_value_for_giv (v, biv_initial_value);
value = fold_rtx_mult_add (v->mult_val, biv_initial_value,
v->add_val, v->mode);
}
@@ -3037,7 +2927,7 @@ find_splittable_givs (loop, bl, unroll_type, increment, unroll_number)
/* Save the negative of the eliminated const, so
that we can calculate the dest_reg's increment
value later. */
- v->const_adjust = - INTVAL (XEXP (new_reg, 1));
+ v->const_adjust = -INTVAL (XEXP (new_reg, 1));
new_reg = XEXP (new_reg, 0);
if (loop_dump_stream)
@@ -3200,7 +3090,7 @@ find_splittable_givs (loop, bl, unroll_type, increment, unroll_number)
{
int count = 1;
if (! v->ignore)
- count = reg_biv_class[REGNO (v->src_reg)]->biv_count;
+ count = ivs->reg_biv_class[REGNO (v->src_reg)]->biv_count;
if (count > 1 && v->derived_from)
/* In this case, there is one set where the giv insn was and one
@@ -3265,7 +3155,7 @@ reg_dead_after_loop (loop, reg)
label = gen_rtx_LABEL_REF (VOIDmode, loop->end);
LABEL_NEXTREF (label) = loop->exit_labels;
- for ( ; label; label = LABEL_NEXTREF (label))
+ for (; label; label = LABEL_NEXTREF (label))
{
/* Succeed if find an insn which sets the biv or if reach end of
function. Fail if find an insn that uses the biv, or if come to
@@ -3325,7 +3215,7 @@ final_biv_value (loop, bl)
return 0;
/* The final value for reversed bivs must be calculated differently than
- for ordinary bivs. In this case, there is already an insn after the
+ for ordinary bivs. In this case, there is already an insn after the
loop which sets this biv's final value (if necessary), and there are
no other loop exits, so we can return any value. */
if (bl->reversed)
@@ -3393,6 +3283,7 @@ final_giv_value (loop, v)
const struct loop *loop;
struct induction *v;
{
+ struct loop_ivs *ivs = LOOP_IVS (loop);
struct iv_class *bl;
rtx insn;
rtx increment, tem;
@@ -3400,7 +3291,7 @@ final_giv_value (loop, v)
rtx loop_end = loop->end;
unsigned HOST_WIDE_INT n_iterations = LOOP_INFO (loop)->n_iterations;
- bl = reg_biv_class[REGNO (v->src_reg)];
+ bl = ivs->reg_biv_class[REGNO (v->src_reg)];
/* The final value for givs which depend on reversed bivs must be calculated
differently than for ordinary givs. In this case, there is already an
@@ -3456,10 +3347,11 @@ final_giv_value (loop, v)
insert_before = NEXT_INSN (loop_end);
/* Put the final biv value in tem. */
- tem = gen_reg_rtx (bl->biv->mode);
+ tem = gen_reg_rtx (v->mode);
record_base_value (REGNO (tem), bl->biv->add_val, 0);
emit_iv_add_mult (increment, GEN_INT (n_iterations),
- bl->initial_value, tem, insert_before);
+ extend_value_for_giv (v, bl->initial_value),
+ tem, insert_before);
/* Subtract off extra increments as we find them. */
for (insn = NEXT_INSN (v->insn); insn != loop_end;
@@ -3481,8 +3373,7 @@ final_giv_value (loop, v)
}
/* Now calculate the giv's final value. */
- emit_iv_add_mult (tem, v->mult_val, v->add_val, tem,
- insert_before);
+ emit_iv_add_mult (tem, v->mult_val, v->add_val, tem, insert_before);
if (loop_dump_stream)
fprintf (loop_dump_stream,
@@ -3511,7 +3402,6 @@ final_giv_value (loop, v)
return 0;
}
-
/* Look back before LOOP->START for then insn that sets REG and return
the equivalent constant if there is a REG_EQUAL note otherwise just
the SET_SRC of REG. */
@@ -3526,7 +3416,7 @@ loop_find_equiv_value (loop, reg)
rtx ret;
ret = reg;
- for (insn = PREV_INSN (loop_start); insn ; insn = PREV_INSN (insn))
+ for (insn = PREV_INSN (loop_start); insn; insn = PREV_INSN (insn))
{
if (GET_CODE (insn) == CODE_LABEL)
break;
@@ -3537,7 +3427,7 @@ loop_find_equiv_value (loop, reg)
If it sets the entire register, and has a REG_EQUAL note,
then use the value of the REG_EQUAL note. */
if ((set = single_set (insn))
- && (SET_DEST (set) == reg))
+ && (SET_DEST (set) == reg))
{
rtx note = find_reg_note (insn, REG_EQUAL, NULL_RTX);
@@ -3588,7 +3478,6 @@ subtract_reg_term (op, reg)
abort ();
}
-
/* Find and return register term common to both expressions OP0 and
OP1 or NULL_RTX if no such term exists. Each expression must be a
REG or a PLUS of a REG. */
@@ -3626,13 +3515,16 @@ find_common_reg_term (op0, op1)
return NULL_RTX;
}
-/* Calculate the number of loop iterations. Returns the exact number of loop
- iterations if it can be calculated, otherwise returns zero. */
+/* Determine the loop iterator and calculate the number of loop
+ iterations. Returns the exact number of loop iterations if it can
+ be calculated, otherwise returns zero. */
unsigned HOST_WIDE_INT
loop_iterations (loop)
struct loop *loop;
{
+ struct loop_info *loop_info = LOOP_INFO (loop);
+ struct loop_ivs *ivs = LOOP_IVS (loop);
rtx comparison, comparison_value;
rtx iteration_var, initial_value, increment, final_value;
enum rtx_code comparison_code;
@@ -3643,7 +3535,7 @@ loop_iterations (loop)
int unsigned_p, compare_dir, final_larger;
rtx last_loop_insn;
rtx reg_term;
- struct loop_info *loop_info = LOOP_INFO (loop);
+ struct iv_class *bl;
loop_info->n_iterations = 0;
loop_info->initial_value = 0;
@@ -3654,6 +3546,7 @@ loop_iterations (loop)
loop_info->increment = 0;
loop_info->iteration_var = 0;
loop_info->unroll_number = 1;
+ loop_info->iv = 0;
/* We used to use prev_nonnote_insn here, but that fails because it might
accidentally get the branch for a contained loop if the branch for this
@@ -3716,14 +3609,119 @@ loop_iterations (loop)
will propagate a new pseudo into the old iteration register but
this will be marked by having the REG_USERVAR_P bit set. */
- if ((unsigned) REGNO (iteration_var) >= reg_iv_type->num_elements
+ if ((unsigned) REGNO (iteration_var) >= ivs->reg_iv_type->num_elements
&& ! REG_USERVAR_P (iteration_var))
abort ();
- iteration_info (loop, iteration_var, &initial_value, &increment);
+ /* Determine the initial value of the iteration variable, and the amount
+ that it is incremented each loop. Use the tables constructed by
+ the strength reduction pass to calculate these values. */
+
+ /* Clear the result values, in case no answer can be found. */
+ initial_value = 0;
+ increment = 0;
+
+ /* The iteration variable can be either a giv or a biv. Check to see
+ which it is, and compute the variable's initial value, and increment
+ value if possible. */
+
+ /* If this is a new register, can't handle it since we don't have any
+ reg_iv_type entry for it. */
+ if ((unsigned) REGNO (iteration_var) >= ivs->reg_iv_type->num_elements)
+ {
+ if (loop_dump_stream)
+ fprintf (loop_dump_stream,
+ "Loop iterations: No reg_iv_type entry for iteration var.\n");
+ return 0;
+ }
+
+ /* Reject iteration variables larger than the host wide int size, since they
+ could result in a number of iterations greater than the range of our
+ `unsigned HOST_WIDE_INT' variable loop_info->n_iterations. */
+ else if ((GET_MODE_BITSIZE (GET_MODE (iteration_var))
+ > HOST_BITS_PER_WIDE_INT))
+ {
+ if (loop_dump_stream)
+ fprintf (loop_dump_stream,
+ "Loop iterations: Iteration var rejected because mode too large.\n");
+ return 0;
+ }
+ else if (GET_MODE_CLASS (GET_MODE (iteration_var)) != MODE_INT)
+ {
+ if (loop_dump_stream)
+ fprintf (loop_dump_stream,
+ "Loop iterations: Iteration var not an integer.\n");
+ return 0;
+ }
+ else if (REG_IV_TYPE (ivs, REGNO (iteration_var)) == BASIC_INDUCT)
+ {
+ /* When reg_iv_type / reg_iv_info is resized for biv increments
+ that are turned into givs, reg_biv_class is not resized.
+ So check here that we don't make an out-of-bounds access. */
+ if (REGNO (iteration_var) >= max_reg_before_loop)
+ abort ();
+
+ /* Grab initial value, only useful if it is a constant. */
+ bl = ivs->reg_biv_class[REGNO (iteration_var)];
+ initial_value = bl->initial_value;
+
+ increment = biv_total_increment (bl);
+ }
+ else if (REG_IV_TYPE (ivs, REGNO (iteration_var)) == GENERAL_INDUCT)
+ {
+ HOST_WIDE_INT offset = 0;
+ struct induction *v = REG_IV_INFO (ivs, REGNO (iteration_var));
+ rtx biv_initial_value;
+
+ if (REGNO (v->src_reg) >= max_reg_before_loop)
+ abort ();
+
+ bl = ivs->reg_biv_class[REGNO (v->src_reg)];
+
+ /* Increment value is mult_val times the increment value of the biv. */
+
+ increment = biv_total_increment (bl);
+ if (increment)
+ {
+ struct induction *biv_inc;
+
+ increment
+ = fold_rtx_mult_add (v->mult_val, increment, const0_rtx, v->mode);
+ /* The caller assumes that one full increment has occured at the
+ first loop test. But that's not true when the biv is incremented
+ after the giv is set (which is the usual case), e.g.:
+ i = 6; do {;} while (i++ < 9) .
+ Therefore, we bias the initial value by subtracting the amount of
+ the increment that occurs between the giv set and the giv test. */
+ for (biv_inc = bl->biv; biv_inc; biv_inc = biv_inc->next_iv)
+ {
+ if (loop_insn_first_p (v->insn, biv_inc->insn))
+ offset -= INTVAL (biv_inc->add_val);
+ }
+ offset *= INTVAL (v->mult_val);
+ }
+ if (loop_dump_stream)
+ fprintf (loop_dump_stream,
+ "Loop iterations: Giv iterator, initial value bias %ld.\n",
+ (long) offset);
+
+ /* Initial value is mult_val times the biv's initial value plus
+ add_val. Only useful if it is a constant. */
+ biv_initial_value = extend_value_for_giv (v, bl->initial_value);
+ initial_value
+ = fold_rtx_mult_add (v->mult_val,
+ plus_constant (biv_initial_value, offset),
+ v->add_val, v->mode);
+ }
+ else
+ {
+ if (loop_dump_stream)
+ fprintf (loop_dump_stream,
+ "Loop iterations: Not basic or general induction var.\n");
+ return 0;
+ }
if (initial_value == 0)
- /* iteration_info already printed a message. */
return 0;
unsigned_p = 0;
@@ -3766,7 +3764,7 @@ loop_iterations (loop)
its value from the insns before the start of the loop. */
final_value = comparison_value;
- if (GET_CODE (comparison_value) == REG
+ if (GET_CODE (comparison_value) == REG
&& loop_invariant_p (loop, comparison_value))
{
final_value = loop_find_equiv_value (loop, comparison_value);
@@ -3804,6 +3802,7 @@ loop_iterations (loop)
loop_info->increment = increment;
loop_info->iteration_var = iteration_var;
loop_info->comparison_code = comparison_code;
+ loop_info->iv = bl;
/* Try to determine the iteration count for loops such
as (for i = init; i < init + const; i++). When running the
@@ -3852,12 +3851,12 @@ loop_iterations (loop)
{
rtx temp;
- /* When running the loop optimizer twice, check_dbra_loop
- further obfuscates reversible loops of the form:
- for (i = init; i < init + const; i++). We often end up with
- final_value = 0, initial_value = temp, temp = temp2 - init,
- where temp2 = init + const. If the loop has a vtop we
- can replace initial_value with const. */
+ /* When running the loop optimizer twice, check_dbra_loop
+ further obfuscates reversible loops of the form:
+ for (i = init; i < init + const; i++). We often end up with
+ final_value = 0, initial_value = temp, temp = temp2 - init,
+ where temp2 = init + const. If the loop has a vtop we
+ can replace initial_value with const. */
temp = loop_find_equiv_value (loop, reg1);
@@ -3895,7 +3894,7 @@ loop_iterations (loop)
Check this now so that we won't leave an invalid value if we
return early for any other reason. */
if (comparison_code == EQ)
- loop_info->final_equiv_value = loop_info->final_value = 0;
+ loop_info->final_equiv_value = loop_info->final_value = 0;
if (increment == 0)
{
@@ -3941,8 +3940,7 @@ loop_iterations (loop)
else if (comparison_code == EQ)
{
if (loop_dump_stream)
- fprintf (loop_dump_stream,
- "Loop iterations: EQ comparison loop.\n");
+ fprintf (loop_dump_stream, "Loop iterations: EQ comparison loop.\n");
return 0;
}
else if (GET_CODE (final_value) != CONST_INT)
@@ -4009,8 +4007,7 @@ loop_iterations (loop)
else
{
if (loop_dump_stream)
- fprintf (loop_dump_stream,
- "Loop iterations: Not normal loop.\n");
+ fprintf (loop_dump_stream, "Loop iterations: Not normal loop.\n");
return 0;
}
@@ -4043,15 +4040,16 @@ loop_iterations (loop)
return loop_info->n_iterations;
}
-
/* Replace uses of split bivs with their split pseudo register. This is
for original instructions which remain after loop unrolling without
copying. */
static rtx
-remap_split_bivs (x)
+remap_split_bivs (loop, x)
+ struct loop *loop;
rtx x;
{
+ struct loop_ivs *ivs = LOOP_IVS (loop);
register enum rtx_code code;
register int i;
register const char *fmt;
@@ -4078,8 +4076,8 @@ remap_split_bivs (x)
have to remap those givs also. */
#endif
if (REGNO (x) < max_reg_before_loop
- && REG_IV_TYPE (REGNO (x)) == BASIC_INDUCT)
- return reg_biv_class[REGNO (x)]->biv->src_reg;
+ && REG_IV_TYPE (ivs, REGNO (x)) == BASIC_INDUCT)
+ return ivs->reg_biv_class[REGNO (x)]->biv->src_reg;
break;
default:
@@ -4090,12 +4088,12 @@ remap_split_bivs (x)
for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--)
{
if (fmt[i] == 'e')
- XEXP (x, i) = remap_split_bivs (XEXP (x, i));
+ XEXP (x, i) = remap_split_bivs (loop, XEXP (x, i));
else if (fmt[i] == 'E')
{
register int j;
for (j = 0; j < XVECLEN (x, i); j++)
- XVECEXP (x, i, j) = remap_split_bivs (XVECEXP (x, i, j));
+ XVECEXP (x, i, j) = remap_split_bivs (loop, XVECEXP (x, i, j));
}
}
return x;
@@ -4130,7 +4128,7 @@ set_dominates_use (regno, first_uid, last_uid, copy_start, copy_end)
while (INSN_UID (p) != first_uid)
{
if (GET_CODE (p) == JUMP_INSN)
- passed_jump= 1;
+ passed_jump = 1;
/* Could not find FIRST_UID. */
if (p == copy_end)
return 0;
@@ -4167,10 +4165,11 @@ set_dominates_use (regno, first_uid, last_uid, copy_start, copy_end)
unconditional branch to the loop continuation note (or a label just after).
In this case, the unconditional branch that starts the loop needs to be
deleted so that we execute the single iteration. */
+
static rtx
ujump_to_loop_cont (loop_start, loop_cont)
- rtx loop_start;
- rtx loop_cont;
+ rtx loop_start;
+ rtx loop_cont;
{
rtx x, label, label_ref;
@@ -4191,11 +4190,8 @@ ujump_to_loop_cont (loop_start, loop_cont)
return NULL_RTX;
/* Return the loop start if the branch label matches the code label. */
- if (CODE_LABEL_NUMBER (label) == CODE_LABEL_NUMBER (XEXP (label_ref,0)))
+ if (CODE_LABEL_NUMBER (label) == CODE_LABEL_NUMBER (XEXP (label_ref, 0)))
return loop_start;
else
return NULL_RTX;
-
}
-
-
diff --git a/gcc/varasm.c b/gcc/varasm.c
index 0a883483f14..d18cb49cbfd 100644
--- a/gcc/varasm.c
+++ b/gcc/varasm.c
@@ -867,9 +867,15 @@ make_decl_rtl (decl, asmspec, top_level)
new_name = label;
}
- /* ASMSPEC is given, and not the name of a register. */
else if (reg_number == -2)
- new_name = asmspec;
+ {
+ /* ASMSPEC is given, and not the name of a register. Mark the
+ name with a star so assemble_name won't munge it. */
+ char *starred = alloca (strlen (asmspec) + 2);
+ starred[0] = '*';
+ strcpy (starred + 1, asmspec);
+ new_name = starred;
+ }
/* When -fprefix-function-name is used, the functions
names are prefixed. Only nested function names are not
diff --git a/gcc/version.c b/gcc/version.c
index 404c39802ea..a532d4b50ff 100644
--- a/gcc/version.c
+++ b/gcc/version.c
@@ -1,4 +1,4 @@
#include "gansidecl.h"
#include "version.h"
-const char *const version_string = "2.96 20000907 (experimental)";
+const char *const version_string = "2.96 20000914 (experimental)";
diff --git a/include/ChangeLog b/include/ChangeLog
index 95a00be6eef..30f281e11a7 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,7 @@
+2000-09-10 Mark Mitchell <mark@codesourcery.com>
+
+ * splay-tree.h (splay_tree_predecessor): Declare.
+
2000-09-05 John David Anglin <dave@hiauly1.hia.nrc.ca>
* md5.h (md5_uint32): Choose via INT_MAX instead of UINT_MAX.
diff --git a/include/splay-tree.h b/include/splay-tree.h
index 60b3e6e559c..ae3345f83f6 100644
--- a/include/splay-tree.h
+++ b/include/splay-tree.h
@@ -104,6 +104,12 @@ extern void splay_tree_remove PARAMS((splay_tree,
extern splay_tree_node splay_tree_lookup
PARAMS((splay_tree,
splay_tree_key));
+extern splay_tree_node splay_tree_predecessor
+ PARAMS((splay_tree,
+ splay_tree_key));
+extern splay_tree_node splay_tree_successor
+ PARAMS((splay_tree,
+ splay_tree_key));
extern int splay_tree_foreach PARAMS((splay_tree,
splay_tree_foreach_fn,
void*));
diff --git a/libf2c/libF77/Version.c b/libf2c/libF77/Version.c
index 5c95dfb572c..3f257b7aff7 100644
--- a/libf2c/libF77/Version.c
+++ b/libf2c/libF77/Version.c
@@ -3,7 +3,7 @@ static char junk[] = "\n@(#)LIBF77 VERSION 19991115\n";
/*
*/
-char __G77_LIBF77_VERSION__[] = "0.5.26 20000907 (prerelease)";
+char __G77_LIBF77_VERSION__[] = "0.5.26 20000914 (prerelease)";
/*
2.00 11 June 1980. File version.c added to library.
diff --git a/libf2c/libI77/Version.c b/libf2c/libI77/Version.c
index 8b608c4e2fb..7f2bdc75524 100644
--- a/libf2c/libI77/Version.c
+++ b/libf2c/libI77/Version.c
@@ -3,7 +3,7 @@ static char junk[] = "\n@(#) LIBI77 VERSION pjw,dmg-mods 19991115\n";
/*
*/
-char __G77_LIBI77_VERSION__[] = "0.5.26 20000907 (prerelease)";
+char __G77_LIBI77_VERSION__[] = "0.5.26 20000914 (prerelease)";
/*
2.01 $ format added
diff --git a/libf2c/libU77/Version.c b/libf2c/libU77/Version.c
index edbc74d99e6..cc8bb20d8d2 100644
--- a/libf2c/libU77/Version.c
+++ b/libf2c/libU77/Version.c
@@ -1,6 +1,6 @@
static char junk[] = "\n@(#) LIBU77 VERSION 19980709\n";
-char __G77_LIBU77_VERSION__[] = "0.5.26 20000907 (prerelease)";
+char __G77_LIBU77_VERSION__[] = "0.5.26 20000914 (prerelease)";
#include <stdio.h>
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index 597e840e0dc..bb91224f4af 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,29 @@
+2000-09-14 Hans-Peter Nilsson <hp@axis.com>
+
+ * testsuite/demangle-expected: Add two tests for anonymous
+ namespaces.
+ * cplus-dem.c (gnu_special): Handle anonymous namespaces.
+
+2000-09-10 Mark Mitchell <mark@codesourcery.com>
+
+ * splay-tree.c (splay_tree_predecessor): New function.
+ (splay_tree_successor): Likewise.
+
+2000-09-10 Hans-Peter Nilsson <hp@axis.com>
+
+ * testsuite/demangle-expected: Add four tests for type_info
+ mangling.
+ * cplus-dem.c (gnu_special): Use do_type, not demangle_fund_type,
+ for a non-template non-qualified type_info function or node.
+
+2000-09-08 Alex Samuel <samuel@codesourcery.com>
+
+ * cp-demangle.c: Fix copyright banner.
+
+2000-09-07 Michael Sokolov <msokolov@ivan.Harhan.ORG>
+
+ * md5.c: #include "ansidecl.h".
+
2000-09-06 Alex Samuel <samuel@codesourcery.com>
* cp-demangle.c (status_allocation_failed): Rearrange whitespace.
diff --git a/libiberty/cp-demangle.c b/libiberty/cp-demangle.c
index 5b16c4e3507..e543edfd766 100644
--- a/libiberty/cp-demangle.c
+++ b/libiberty/cp-demangle.c
@@ -1,7 +1,9 @@
/* Demangler for IA64 / g++ standard C++ ABI.
- Copyright (C) 2000 CodeSourcery LLC.
+ Copyright (C) 2000 Free Software Foundation, Inc.
Written by Alex Samuel <samuel@codesourcery.com>.
+ This file is part of GNU CC.
+
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
diff --git a/libiberty/cplus-dem.c b/libiberty/cplus-dem.c
index e00f787e75c..3fe70b4030d 100644
--- a/libiberty/cplus-dem.c
+++ b/libiberty/cplus-dem.c
@@ -2811,6 +2811,25 @@ gnu_special (work, mangled, declp)
success = 0;
break;
}
+
+ if (n > 10 && strncmp (*mangled, "_GLOBAL_", 8) == 0
+ && (*mangled)[9] == 'N'
+ && (*mangled)[8] == (*mangled)[10]
+ && strchr (cplus_markers, (*mangled)[8]))
+ {
+ /* A member of the anonymous namespace. There's information
+ about what identifier or filename it was keyed to, but
+ it's just there to make the mangled name unique; we just
+ step over it. */
+ string_append (declp, "{anonymous}");
+ (*mangled) += n;
+
+ /* Now p points to the marker before the N, so we need to
+ update it to the first marker after what we consumed. */
+ p = strpbrk (*mangled, cplus_markers);
+ break;
+ }
+
string_appendn (declp, *mangled, n);
(*mangled) += n;
}
@@ -2872,7 +2891,7 @@ gnu_special (work, mangled, declp)
success = demangle_template (work, mangled, declp, 0, 1, 1);
break;
default:
- success = demangle_fund_type (work, mangled, declp);
+ success = do_type (work, mangled, declp);
break;
}
if (success && **mangled != '\0')
diff --git a/libiberty/md5.c b/libiberty/md5.c
index d742c54f665..0c0507dfeb1 100644
--- a/libiberty/md5.c
+++ b/libiberty/md5.c
@@ -35,6 +35,7 @@
# endif
#endif
+#include "ansidecl.h"
#include "md5.h"
#ifdef _LIBC
diff --git a/libiberty/splay-tree.c b/libiberty/splay-tree.c
index de66d11bf56..9a684899d4a 100644
--- a/libiberty/splay-tree.c
+++ b/libiberty/splay-tree.c
@@ -1,5 +1,5 @@
/* A splay-tree datatype.
- Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
Contributed by Mark Mitchell (mark@markmitchell.com).
This file is part of GNU CC.
@@ -366,6 +366,72 @@ splay_tree_lookup (sp, key)
return 0;
}
+/* Return the immediate predecessor KEY, or NULL if there is no
+ predecessor. KEY need not be present in the tree. */
+
+splay_tree_node
+splay_tree_predecessor (sp, key)
+ splay_tree sp;
+ splay_tree_key key;
+{
+ int comparison;
+ splay_tree_node node;
+
+ /* If the tree is empty, there is certainly no predecessor. */
+ if (!sp->root)
+ return NULL;
+
+ /* Splay the tree around KEY. That will leave either the KEY
+ itself, its predecessor, or its successor at the root. */
+ splay_tree_splay (sp, key);
+ comparison = (*sp->comp)(sp->root->key, key);
+
+ /* If the predecessor is at the root, just return it. */
+ if (comparison < 0)
+ return sp->root;
+
+ /* Otherwise, find the rightmost element of the left subtree. */
+ node = sp->root->left;
+ if (node)
+ while (node->right)
+ node = node->right;
+
+ return node;
+}
+
+/* Return the immediate successor KEY, or NULL if there is no
+ predecessor. KEY need not be present in the tree. */
+
+splay_tree_node
+splay_tree_successor (sp, key)
+ splay_tree sp;
+ splay_tree_key key;
+{
+ int comparison;
+ splay_tree_node node;
+
+ /* If the tree is empty, there is certainly no predecessor. */
+ if (!sp->root)
+ return NULL;
+
+ /* Splay the tree around KEY. That will leave either the KEY
+ itself, its predecessor, or its successor at the root. */
+ splay_tree_splay (sp, key);
+ comparison = (*sp->comp)(sp->root->key, key);
+
+ /* If the successor is at the root, just return it. */
+ if (comparison > 0)
+ return sp->root;
+
+ /* Otherwise, find the rightmost element of the left subtree. */
+ node = sp->root->right;
+ if (node)
+ while (node->left)
+ node = node->left;
+
+ return node;
+}
+
/* Call FN, passing it the DATA, for every node in SP, following an
in-order traversal. If FN every returns a non-zero value, the
iteration ceases immediately, and the value is returned.
diff --git a/libiberty/testsuite/demangle-expected b/libiberty/testsuite/demangle-expected
index 0f947924a62..a5d72fab0fe 100644
--- a/libiberty/testsuite/demangle-expected
+++ b/libiberty/testsuite/demangle-expected
@@ -2542,3 +2542,27 @@ TA<int, N___A___<-99> >::foo__bar___foobar___(void)
--format=gnu
foo__bar___foobar_____t2TA2ZiZt4N__A1i9
TA<int, N__A<9> >::foo__bar___foobar___(void)
+#
+--format=gnu
+__tfP8sockaddr
+sockaddr * type_info function
+#
+--format=gnu
+__tfPQ25libcwt16option_event_tct1Z12burst_app_ct
+libcw::option_event_tct<burst_app_ct> * type_info function
+#
+--format=gnu
+__tiP8sockaddr
+sockaddr * type_info node
+#
+--format=gnu
+__tiPQ25libcwt16option_event_tct1Z12burst_app_ct
+libcw::option_event_tct<burst_app_ct> * type_info node
+#
+--format=gnu
+_27_GLOBAL_.N.__12burst_app_ct.app_instance
+{anonymous}::app_instance
+#
+--format=gnu
+_26_GLOBAL_\$N\$_tmp_n.iilg4Gya\$app_instance
+{anonymous}::app_instance
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index c61d9ef196d..77283e1aeaf 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,75 @@
+2000-09-12 Benjamin Kosnik <bkoz@purist.soma.redhat.com>
+
+ * testsuite/22_locale/global_templates.cc (test01): Add negative
+ tests for use_facet.
+
+ * bits/localefwd.h (locale::operator()): Minor tweaks.
+ * bits/locale_facets.tcc (locale::operator()): Same.
+ * testsuite/22_locale/operators.cc: New file.
+
+ * testsuite/22_locale/facet.cc (output_iterator): Remove
+ gnu_input_iterator, gnu_output_iterator.
+
+2000-09-11 Benjamin Kosnik <bkoz@purist.soma.redhat.com>
+
+ * acinclude.m4 (GLIBCPP_CHECK_GNU_MAKE): Remove test != "0".
+ * aclocal.m4: Regenerate.
+ * configure: Regenerate.
+
+ * bits/c++config (__GLIBCPP__): Update, in the hopes of making a
+ snapshot release soon.
+ (_GNU_SOURCE): Define this in the header files, as ISO C99 support
+ is pretty much assumed.
+
+ * testsuite/22_locale/global_templates.cc: New file. Add tests for
+ use_facet and has_facet.
+
+ * bits/codecvt.h (codecvt<_InT, _ExT, __enc_traits>::do_out):
+ Modify/correct iconv signatures for glibc2.2.
+
+2000-09-10 Branko Cibej <branko.cibej@hermes.si>
+
+ * acinclude.m4 (GLIBCPP_CHECK_GNU_MAKE): Replace "grep -q" with
+ "grep -c".
+
+2000-09-09 Benjamin Kosnik <bkoz@purist.soma.redhat.com>
+
+ * bits/localefwd.h (locale::_Impl): Scope out types to public.
+ (locale): Make _Impl declaration public.
+
+2000-09-08 Felix Natter <fnatter@gmx.net>
+
+ * docs/17_intro/porting-howto.html: New version.
+
+2000-09-07 Benjamin Kosnik <bkoz@purist.soma.redhat.com>
+
+ * config/cpu/i386/bits/atomicity.h (__exchange_and_add): Change unused
+ to __unused__.
+ * config/cpu/ia64/bits/atomicity.h (__exchange_and_add): And here.
+ * config/cpu/i486/bits/atomicity.h (__exchange_and_add): And here.
+
+2000-09-07 Phil Edwards <pme@sources.redhat.com>
+
+ Add bits for --enable-maintainer-mode:
+ - turns on enable_debug
+ (doing "--enable-maint --disable-debug" will DTRT)
+ - turns on -Werror, now off by default
+ * acinclude.m4: Add bits.
+ * aclocal.m4: Regenerate.
+ * configure.in: Add defaults for GLIBCPP_ENABLE_DEBUG.
+ * configure: Regenerate.
+
+2000-09-07 Benjamin Kosnik <bkoz@cygnus.com>
+
+ * bits/std_cwctype.h: Remove yesterday's hacks.
+
+2000-09-07 Brad Garcia <bgarcia@laurelnetworks.com>
+
+ * bits/stl_tree.h: Make operators !=, == type safe for map, set.
+ * testsuite/23_containers/set_operators.cc: New file. Should not
+ compile.
+ * testsuite/23_containers/map_operators.cc: New file. Ditto.
+
2000-09-06 Richard Henderson <rth@cygnus.com>
Benjamin Kosnik <bkoz@cygnus.com>
diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index 9daa284d786..29e9d7e682d 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -180,8 +180,9 @@ dnl here.
dnl
dnl Define WFMT_FLAGS='-fdiagnostics-show-location=once' if possible
dnl
-dnl Define WERROR='-Werror' if possible; g++'s that lack the new inlining
-dnl code or the new system_header pragma will die.
+dnl Define WERROR='-Werror' if requested and possible; g++'s that lack the
+dnl new inlining code or the new system_header pragma will die on -Werror.
+dnl Leave it out by default and use maint-mode to use it.
dnl
dnl Define SECTION_FLAGS='-ffunction-sections -fdata-sections' if
dnl compiler supports it.
@@ -194,23 +195,13 @@ AC_DEFUN(GLIBCPP_CHECK_COMPILER_FEATURES, [
AC_LANG_CPLUSPLUS
ac_test_CXXFLAGS="${CXXFLAGS+set}"
ac_save_CXXFLAGS="$CXXFLAGS"
- WERROR='-Werror'
- # Check for pragma system_header.
- AC_MSG_CHECKING([for g++ that supports pragma system_header])
- CXXFLAGS='-Wunknown-pragmas -Werror'
- AC_TRY_COMPILE([#pragma GCC system_header], [int foo;
- ], [ac_newpragma=yes], [ac_newpragma=no])
- if test "$ac_test_CXXFLAGS" = set; then
- CXXFLAGS="$ac_save_CXXFLAGS"
+ # Check for maintainer-mode bits.
+ if test x"$USE_MAINTAINER_MODE" = xno; then
+ WERROR=''
else
- # this is the suspicious part
- CXXFLAGS=''
- fi
- if test "$ac_newpragma" = "no"; then
- WERROR="$WERROR -Wno-unknown-pragmas"
+ WERROR='-Werror'
fi
- AC_MSG_RESULT($ac_newpragma)
# Check for more sophisticated diagnostic control.
AC_MSG_CHECKING([for g++ that supports -fdiagnostics-show-location=once])
@@ -1063,7 +1054,7 @@ dnl GLIBCPP_ENABLE_DEBUG
dnl --enable-debug sets '-ggdb -O0'.
dnl --disable-debug sets '-g' and whatever optimization options the
dnl compiler can handle.
-dnl + Perhaps --enable-maintainer-mode should automatically turn this on?
+dnl + --enable-maintainer-mode automatically defaults this to on.
dnl + Perhaps -D/-U of NDEBUG, DEBUG, DEBUG_ASSERT, ...?
dnl + Usage: GLIBCPP_ENABLE_DEBUG[(DEFAULT)]
dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
@@ -1566,14 +1557,16 @@ dnl @version 1.1 #### replaced Id string now that Id is for lib-v3; pme
dnl
dnl #### Changes for libstdc++-v3: reformatting and linewrapping; prepending
dnl #### GLIBCPP_ to the macro name; adding the :-make fallback in the
-dnl #### conditional's subshell (" --version" is not a command).
+dnl #### conditional's subshell (" --version" is not a command), using a
+dnl #### different option to grep(1).
dnl #### -pme
AC_DEFUN(
GLIBCPP_CHECK_GNU_MAKE, [AC_CACHE_CHECK( for GNU make,_cv_gnu_make_command,
_cv_gnu_make_command='' ;
dnl Search all the common names for GNU make
for a in "${MAKE:-make}" make gmake gnumake ; do
- if ( $a --version 2> /dev/null | grep -q GNU ) ; then
+ if ( $a --version 2> /dev/null | grep -c GNU )
+ then
_cv_gnu_make_command=$a ;
break;
fi
@@ -1597,4 +1590,4 @@ ifelse(,,,[AC_SUBST(LIBTOOL)
AC_DEFUN([AM_PROG_LIBTOOL])
AC_DEFUN([AC_LIBTOOL_DLOPEN])
AC_DEFUN([AC_PROG_LD])
-]) \ No newline at end of file
+])
diff --git a/libstdc++-v3/aclocal.m4 b/libstdc++-v3/aclocal.m4
index 18677f7509d..43bfaa2f171 100644
--- a/libstdc++-v3/aclocal.m4
+++ b/libstdc++-v3/aclocal.m4
@@ -192,8 +192,9 @@ dnl here.
dnl
dnl Define WFMT_FLAGS='-fdiagnostics-show-location=once' if possible
dnl
-dnl Define WERROR='-Werror' if possible; g++'s that lack the new inlining
-dnl code or the new system_header pragma will die.
+dnl Define WERROR='-Werror' if requested and possible; g++'s that lack the
+dnl new inlining code or the new system_header pragma will die on -Werror.
+dnl Leave it out by default and use maint-mode to use it.
dnl
dnl Define SECTION_FLAGS='-ffunction-sections -fdata-sections' if
dnl compiler supports it.
@@ -206,23 +207,13 @@ AC_DEFUN(GLIBCPP_CHECK_COMPILER_FEATURES, [
AC_LANG_CPLUSPLUS
ac_test_CXXFLAGS="${CXXFLAGS+set}"
ac_save_CXXFLAGS="$CXXFLAGS"
- WERROR='-Werror'
- # Check for pragma system_header.
- AC_MSG_CHECKING([for g++ that supports pragma system_header])
- CXXFLAGS='-Wunknown-pragmas -Werror'
- AC_TRY_COMPILE([#pragma GCC system_header], [int foo;
- ], [ac_newpragma=yes], [ac_newpragma=no])
- if test "$ac_test_CXXFLAGS" = set; then
- CXXFLAGS="$ac_save_CXXFLAGS"
+ # Check for maintainer-mode bits.
+ if test x"$USE_MAINTAINER_MODE" = xno; then
+ WERROR=''
else
- # this is the suspicious part
- CXXFLAGS=''
- fi
- if test "$ac_newpragma" = "no"; then
- WERROR="$WERROR -Wno-unknown-pragmas"
+ WERROR='-Werror'
fi
- AC_MSG_RESULT($ac_newpragma)
# Check for more sophisticated diagnostic control.
AC_MSG_CHECKING([for g++ that supports -fdiagnostics-show-location=once])
@@ -1075,7 +1066,7 @@ dnl GLIBCPP_ENABLE_DEBUG
dnl --enable-debug sets '-ggdb -O0'.
dnl --disable-debug sets '-g' and whatever optimization options the
dnl compiler can handle.
-dnl + Perhaps --enable-maintainer-mode should automatically turn this on?
+dnl + --enable-maintainer-mode automatically defaults this to on.
dnl + Perhaps -D/-U of NDEBUG, DEBUG, DEBUG_ASSERT, ...?
dnl + Usage: GLIBCPP_ENABLE_DEBUG[(DEFAULT)]
dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
@@ -1578,14 +1569,16 @@ dnl @version 1.1 #### replaced Id string now that Id is for lib-v3; pme
dnl
dnl #### Changes for libstdc++-v3: reformatting and linewrapping; prepending
dnl #### GLIBCPP_ to the macro name; adding the :-make fallback in the
-dnl #### conditional's subshell (" --version" is not a command).
+dnl #### conditional's subshell (" --version" is not a command), using a
+dnl #### different option to grep(1).
dnl #### -pme
AC_DEFUN(
GLIBCPP_CHECK_GNU_MAKE, [AC_CACHE_CHECK( for GNU make,_cv_gnu_make_command,
_cv_gnu_make_command='' ;
dnl Search all the common names for GNU make
for a in "${MAKE:-make}" make gmake gnumake ; do
- if ( $a --version 2> /dev/null | grep -q GNU ) ; then
+ if ( $a --version 2> /dev/null | grep -c GNU )
+ then
_cv_gnu_make_command=$a ;
break;
fi
@@ -1610,6 +1603,7 @@ AC_DEFUN([AM_PROG_LIBTOOL])
AC_DEFUN([AC_LIBTOOL_DLOPEN])
AC_DEFUN([AC_PROG_LD])
])
+
# Do all the work for Automake. This macro actually does too much --
# some checks are only needed if your package does certain things.
# But this isn't really a big deal.
diff --git a/libstdc++-v3/bits/c++config b/libstdc++-v3/bits/c++config
index 780d3e11cb1..6b1430f8fc6 100644
--- a/libstdc++-v3/bits/c++config
+++ b/libstdc++-v3/bits/c++config
@@ -31,7 +31,11 @@
#define _CPP_CPPCONFIG 1
// The current version of the C++ library in compressed ISO date format.
-#define __GLIBCPP__ 20000324
+#define __GLIBCPP__ 20000911
+
+// By enabling this, __USE_ISOC99 is also enabled, along with other
+// bits like POSIX, SVID, X/Open and GNU extensions.
+#define _GNU_SOURCE 1
// This flag controls the error handling in string, and perhaps other
// bits as time goes on: check out bits/basic_string.h for more
diff --git a/libstdc++-v3/bits/codecvt.h b/libstdc++-v3/bits/codecvt.h
index bc427add940..1306434a18c 100644
--- a/libstdc++-v3/bits/codecvt.h
+++ b/libstdc++-v3/bits/codecvt.h
@@ -372,7 +372,7 @@ namespace std
// Argument list for iconv specifies a byte sequence. Thus,
// all to/from arrays must be brutally casted to char*.
- const char* __cfrom = reinterpret_cast<const char*>(__from);
+ char* __cfrom = reinterpret_cast<char*>(const_cast<intern_type*>(__from));
char* __cto = reinterpret_cast<char*>(__to);
size_t __conv = iconv(*__desc, &__cfrom, &__flen, &__cto, &__tlen);
@@ -452,7 +452,7 @@ namespace std
// Argument list for iconv specifies a byte sequence. Thus,
// all to/from arrays must be brutally casted to char*.
- const char* __cfrom = reinterpret_cast<const char*>(__from);
+ char* __cfrom = reinterpret_cast<char*>(const_cast<extern_type*>(__from));
char* __cto = reinterpret_cast<char*>(__to);
size_t __conv = iconv(*__desc, &__cfrom, &__flen, &__cto, &__tlen);
diff --git a/libstdc++-v3/bits/locale_facets.tcc b/libstdc++-v3/bits/locale_facets.tcc
index 199aa16fdac..594e6047a31 100644
--- a/libstdc++-v3/bits/locale_facets.tcc
+++ b/libstdc++-v3/bits/locale_facets.tcc
@@ -54,8 +54,8 @@ namespace std
template<typename _CharT, typename _Traits, typename _Alloc>
bool
- locale::operator()(const basic_string<_CharT,_Traits,_Alloc>& __s1,
- const basic_string<_CharT,_Traits,_Alloc>& __s2) const
+ locale::operator()(const basic_string<_CharT, _Traits, _Alloc>& __s1,
+ const basic_string<_CharT, _Traits, _Alloc>& __s2) const
{
// XXX should not need to qualify here.
// typedef collate<_CharT> __collate_type;
diff --git a/libstdc++-v3/bits/localefwd.h b/libstdc++-v3/bits/localefwd.h
index e7cbd1dedaf..f30dd40c8da 100644
--- a/libstdc++-v3/bits/localefwd.h
+++ b/libstdc++-v3/bits/localefwd.h
@@ -209,8 +209,15 @@ namespace std
// 22.1.1 Class locale
class locale
{
- // Forwrd decls and friends:
+ public:
+ // Types:
+ typedef int category;
+
+ // Forward decls and friends:
+ class facet;
+ class id;
class _Impl;
+
friend class _Impl;
template<typename _Facet>
@@ -221,12 +228,6 @@ namespace std
friend bool
has_facet(const locale&) throw();
- public:
- // Types:
- class facet;
- class id;
- typedef int category;
-
// Category values:
// NB much depends on the order in which these appear:
static const category none = 0;
@@ -279,8 +280,8 @@ namespace std
template<typename _Char, typename _Traits, typename _Alloc>
bool
- operator()(const basic_string<_Char,_Traits,_Alloc>& __s1,
- const basic_string<_Char,_Traits,_Alloc>& __s2) const;
+ operator()(const basic_string<_Char, _Traits, _Alloc>& __s1,
+ const basic_string<_Char, _Traits, _Alloc>& __s2) const;
// Global locale objects:
static locale
@@ -317,13 +318,14 @@ namespace std
// locale implementation object
class locale::_Impl
{
+ public:
// Types.
typedef vector<facet*, allocator<facet*> > __vec_facet;
typedef vector<string, allocator<string> > __vec_string;
// Friends.
friend class locale;
- friend class facet;
+ friend class locale::facet;
template<typename _Facet>
friend const _Facet&
@@ -333,13 +335,21 @@ namespace std
friend bool
has_facet(const locale&) throw();
+ private:
// Data Members.
- size_t _M_num_references;
- __vec_facet* _M_facets;
- __vec_string* _M_category_names;
- bool _M_has_name;
- bool _M_cached_name_ok;
- string _M_cached_name;
+ size_t _M_num_references;
+ __vec_facet* _M_facets;
+ __vec_string* _M_category_names;
+ bool _M_has_name;
+ bool _M_cached_name_ok;
+ string _M_cached_name;
+ static const locale::id* const _S_id_collate[];
+ static const locale::id* const _S_id_ctype[];
+ static const locale::id* const _S_id_monetary[];
+ static const locale::id* const _S_id_numeric[];
+ static const locale::id* const _S_id_time[];
+ static const locale::id* const _S_id_messages[];
+ static const locale::id* const* const _S_facet_categories[];
inline void
_M_add_reference() throw()
@@ -400,14 +410,6 @@ namespace std
category
_M_normalize_category_names(const string&, category __cats);
-
- static const locale::id* const _S_id_collate[];
- static const locale::id* const _S_id_ctype[];
- static const locale::id* const _S_id_monetary[];
- static const locale::id* const _S_id_numeric[];
- static const locale::id* const _S_id_time[];
- static const locale::id* const _S_id_messages[];
- static const locale::id* const* const _S_facet_categories[];
};
// class locale inlines, that need declaration of locale::_Imp
diff --git a/libstdc++-v3/bits/std_cwctype.h b/libstdc++-v3/bits/std_cwctype.h
index 47e9f8b078a..c67f2ba9720 100644
--- a/libstdc++-v3/bits/std_cwctype.h
+++ b/libstdc++-v3/bits/std_cwctype.h
@@ -34,12 +34,6 @@
#ifndef _CPP_CWCTYPE
#define _CPP_CWCTYPE 1
-// XXX 2000-09-06 get unsigned warnings in glibc 2.1.x
-// XXX either remove -Werror or do this hackery
-#if __GLIBC__ >= 2 && __GLIBC_MINOR__ < 2 && defined(__OPTIMIZE__)
-#undef __OPTIMIZE__
-#endif
-
# pragma GCC system_header
# include_next <wctype.h>
diff --git a/libstdc++-v3/bits/stl_tree.h b/libstdc++-v3/bits/stl_tree.h
index 9ab9dafcbeb..1c78fd2aa45 100644
--- a/libstdc++-v3/bits/stl_tree.h
+++ b/libstdc++-v3/bits/stl_tree.h
@@ -184,13 +184,15 @@ struct _Rb_tree_iterator : public _Rb_tree_base_iterator
}
};
-inline bool operator==(const _Rb_tree_base_iterator& __x,
- const _Rb_tree_base_iterator& __y) {
+template <class _Value, class _Ref, class _Ptr>
+inline bool operator==(const _Rb_tree_iterator<_Value, _Ref, _Ptr>& __x,
+ const _Rb_tree_iterator<_Value, _Ref, _Ptr>& __y) {
return __x._M_node == __y._M_node;
}
-inline bool operator!=(const _Rb_tree_base_iterator& __x,
- const _Rb_tree_base_iterator& __y) {
+template <class _Value, class _Ref, class _Ptr>
+inline bool operator!=(const _Rb_tree_iterator<_Value, _Ref, _Ptr>& __x,
+ const _Rb_tree_iterator<_Value, _Ref, _Ptr>& __y) {
return __x._M_node != __y._M_node;
}
diff --git a/libstdc++-v3/config/cpu/i386/bits/atomicity.h b/libstdc++-v3/config/cpu/i386/bits/atomicity.h
index 924866be6fd..b3e07f754c4 100644
--- a/libstdc++-v3/config/cpu/i386/bits/atomicity.h
+++ b/libstdc++-v3/config/cpu/i386/bits/atomicity.h
@@ -23,7 +23,7 @@
typedef int _Atomic_word;
static inline _Atomic_word
-__attribute__ ((unused))
+__attribute__ ((__unused__))
__exchange_and_add (volatile _Atomic_word *__mem, int __val)
{
register _Atomic_word __result;
@@ -43,3 +43,7 @@ __atomic_add (volatile _Atomic_word* __mem, int __val)
}
#endif /* atomicity.h */
+
+
+
+
diff --git a/libstdc++-v3/config/cpu/i486/bits/atomicity.h b/libstdc++-v3/config/cpu/i486/bits/atomicity.h
index c81e909f744..617be5ef659 100644
--- a/libstdc++-v3/config/cpu/i486/bits/atomicity.h
+++ b/libstdc++-v3/config/cpu/i486/bits/atomicity.h
@@ -23,7 +23,7 @@
typedef int _Atomic_word;
static inline _Atomic_word
-__attribute__ ((unused))
+__attribute__ ((__unused__))
__exchange_and_add (volatile _Atomic_word *__mem, int __val)
{
register _Atomic_word __result;
@@ -56,3 +56,5 @@ __compare_and_swap (volatile long* __p, long __oldval, long __newval)
}
#endif /* atomicity.h */
+
+
diff --git a/libstdc++-v3/config/cpu/ia64/bits/atomicity.h b/libstdc++-v3/config/cpu/ia64/bits/atomicity.h
index 18b3ac05ec3..d229331de72 100644
--- a/libstdc++-v3/config/cpu/ia64/bits/atomicity.h
+++ b/libstdc++-v3/config/cpu/ia64/bits/atomicity.h
@@ -25,7 +25,7 @@
typedef int _Atomic_word;
static inline _Atomic_word
-__attribute__ ((unused))
+__attribute__ ((__unused__))
__exchange_and_add (volatile _Atomic_word *__mem, int __val)
{
return __sync_fetch_and_add (__mem, __val);
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index 6c66c4e1cf4..b37851a62c4 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -2481,7 +2481,8 @@ if eval "test \"`echo '$''{'_cv_gnu_make_command'+set}'`\" = set"; then
else
_cv_gnu_make_command='' ;
for a in "${MAKE:-make}" make gmake gnumake ; do
- if ( $a --version 2> /dev/null | grep -q GNU ) ; then
+ if ( $a --version 2> /dev/null | grep -c GNU )
+ then
_cv_gnu_make_command=$a ;
break;
fi
@@ -2506,7 +2507,7 @@ echo "$ac_t""$_cv_gnu_make_command" 1>&6 ;
# Check for c++ or library specific bits that don't require linking.
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:2510: checking how to run the C preprocessor" >&5
+echo "configure:2511: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -2521,13 +2522,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 2525 "configure"
+#line 2526 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2531: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2532: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@@ -2538,13 +2539,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 2542 "configure"
+#line 2543 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2548: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2549: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@@ -2555,13 +2556,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 2559 "configure"
+#line 2560 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2565: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2566: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@@ -2588,9 +2589,9 @@ echo "$ac_t""$CPP" 1>&6
# Sanity check that g++ is capable of dealing with v-3.
echo $ac_n "checking for g++ that will successfully compile this code""... $ac_c" 1>&6
-echo "configure:2592: checking for g++ that will successfully compile this code" >&5
+echo "configure:2593: checking for g++ that will successfully compile this code" >&5
cat > conftest.$ac_ext <<EOF
-#line 2594 "configure"
+#line 2595 "configure"
#include "confdefs.h"
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
@@ -2612,7 +2613,7 @@ rm -f conftest*
echo $ac_n "checking for cpu primitives directory""... $ac_c" 1>&6
-echo "configure:2616: checking for cpu primitives directory" >&5
+echo "configure:2617: checking for cpu primitives directory" >&5
CPU_FLAGS=
case "${target_cpu}" in
alpha*)
@@ -2722,7 +2723,7 @@ esac
echo $ac_n "checking for cstdio to use""... $ac_c" 1>&6
-echo "configure:2726: checking for cstdio to use" >&5
+echo "configure:2727: checking for cstdio to use" >&5
# Check whether --enable-cstdio or --disable-cstdio was given.
if test "${enable_cstdio+set}" = set; then
enableval="$enable_cstdio"
@@ -2746,17 +2747,17 @@ fi
# see if we are on a system with libio native (ie, linux)
ac_safe=`echo "libio.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for libio.h""... $ac_c" 1>&6
-echo "configure:2750: checking for libio.h" >&5
+echo "configure:2751: checking for libio.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2755 "configure"
+#line 2756 "configure"
#include "confdefs.h"
#include <libio.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2760: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2761: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -2786,9 +2787,9 @@ fi
case "$target" in
*-*-linux*)
echo $ac_n "checking for glibc version >= 2.2""... $ac_c" 1>&6
-echo "configure:2790: checking for glibc version >= 2.2" >&5
+echo "configure:2791: checking for glibc version >= 2.2" >&5
cat > conftest.$ac_ext <<EOF
-#line 2792 "configure"
+#line 2793 "configure"
#include "confdefs.h"
#include <features.h>
@@ -2898,12 +2899,12 @@ fi
# Check for the existance of functions used if long long is enabled.
echo $ac_n "checking for strtoll""... $ac_c" 1>&6
-echo "configure:2902: checking for strtoll" >&5
+echo "configure:2903: checking for strtoll" >&5
if eval "test \"`echo '$''{'ac_cv_func_strtoll'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2907 "configure"
+#line 2908 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char strtoll(); below. */
@@ -2926,7 +2927,7 @@ strtoll();
; return 0; }
EOF
-if { (eval echo configure:2930: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2931: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_strtoll=yes"
else
@@ -2947,12 +2948,12 @@ ac_strtoll=no
fi
echo $ac_n "checking for strtoull""... $ac_c" 1>&6
-echo "configure:2951: checking for strtoull" >&5
+echo "configure:2952: checking for strtoull" >&5
if eval "test \"`echo '$''{'ac_cv_func_strtoull'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2956 "configure"
+#line 2957 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char strtoull(); below. */
@@ -2975,7 +2976,7 @@ strtoull();
; return 0; }
EOF
-if { (eval echo configure:2979: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2980: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_strtoull=yes"
else
@@ -2997,7 +2998,7 @@ fi
echo $ac_n "checking for enabled long long""... $ac_c" 1>&6
-echo "configure:3001: checking for enabled long long" >&5
+echo "configure:3002: checking for enabled long long" >&5
if test x"$ac_strtoll" = xno || test x"$ac_strtoull" = xno; then
enable_long_long=no;
fi;
@@ -3012,7 +3013,7 @@ EOF
esac
echo $ac_n "checking for enabled cshadow headers""... $ac_c" 1>&6
-echo "configure:3016: checking for enabled cshadow headers" >&5
+echo "configure:3017: checking for enabled cshadow headers" >&5
# Check whether --enable-cshadow-headers or --disable-cshadow-headers was given.
if test "${enable_cshadow_headers+set}" = set; then
enableval="$enable_cshadow_headers"
@@ -3053,7 +3054,7 @@ fi
echo $ac_n "checking for threads package to use""... $ac_c" 1>&6
-echo "configure:3057: checking for threads package to use" >&5
+echo "configure:3058: checking for threads package to use" >&5
# Check whether --enable-threads or --disable-threads was given.
if test "${enable_threads+set}" = set; then
enableval="$enable_threads"
@@ -3116,17 +3117,17 @@ fi
posix)
ac_safe=`echo "pthread.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for pthread.h""... $ac_c" 1>&6
-echo "configure:3120: checking for pthread.h" >&5
+echo "configure:3121: checking for pthread.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3125 "configure"
+#line 3126 "configure"
#include "confdefs.h"
#include <pthread.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3130: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3131: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -3324,17 +3325,17 @@ else
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3328: checking for $ac_hdr" >&5
+echo "configure:3329: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3333 "configure"
+#line 3334 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3338: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3339: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -3375,48 +3376,20 @@ cross_compiling=$ac_cv_prog_cxx_cross
ac_test_CXXFLAGS="${CXXFLAGS+set}"
ac_save_CXXFLAGS="$CXXFLAGS"
- WERROR='-Werror'
- # Check for pragma system_header.
- echo $ac_n "checking for g++ that supports pragma system_header""... $ac_c" 1>&6
-echo "configure:3383: checking for g++ that supports pragma system_header" >&5
- CXXFLAGS='-Wunknown-pragmas -Werror'
- cat > conftest.$ac_ext <<EOF
-#line 3386 "configure"
-#include "confdefs.h"
-#pragma GCC system_header
-int main() {
-int foo;
-
-; return 0; }
-EOF
-if { (eval echo configure:3394: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_newpragma=yes
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- ac_newpragma=no
-fi
-rm -f conftest*
- if test "$ac_test_CXXFLAGS" = set; then
- CXXFLAGS="$ac_save_CXXFLAGS"
+ # Check for maintainer-mode bits.
+ if test x"$USE_MAINTAINER_MODE" = xno; then
+ WERROR=''
else
- # this is the suspicious part
- CXXFLAGS=''
- fi
- if test "$ac_newpragma" = "no"; then
- WERROR="$WERROR -Wno-unknown-pragmas"
+ WERROR='-Werror'
fi
- echo "$ac_t""$ac_newpragma" 1>&6
# Check for more sophisticated diagnostic control.
echo $ac_n "checking for g++ that supports -fdiagnostics-show-location=once""... $ac_c" 1>&6
-echo "configure:3417: checking for g++ that supports -fdiagnostics-show-location=once" >&5
+echo "configure:3390: checking for g++ that supports -fdiagnostics-show-location=once" >&5
CXXFLAGS='-fdiagnostics-show-location=once'
cat > conftest.$ac_ext <<EOF
-#line 3420 "configure"
+#line 3393 "configure"
#include "confdefs.h"
int main() {
@@ -3424,7 +3397,7 @@ int foo;
; return 0; }
EOF
-if { (eval echo configure:3428: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3401: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_gabydiags=yes
else
@@ -3447,10 +3420,10 @@ rm -f conftest*
# Check for -ffunction-sections -fdata-sections
echo $ac_n "checking for g++ that supports -ffunction-sections -fdata-sections""... $ac_c" 1>&6
-echo "configure:3451: checking for g++ that supports -ffunction-sections -fdata-sections" >&5
+echo "configure:3424: checking for g++ that supports -ffunction-sections -fdata-sections" >&5
CXXFLAGS='-ffunction-sections -fdata-sections'
cat > conftest.$ac_ext <<EOF
-#line 3454 "configure"
+#line 3427 "configure"
#include "confdefs.h"
int main() {
@@ -3458,7 +3431,7 @@ int foo;
; return 0; }
EOF
-if { (eval echo configure:3462: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3435: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_fdsections=yes
else
@@ -3509,12 +3482,12 @@ cross_compiling=$ac_cv_prog_cc_cross
# Check for -Wl,--gc-sections
echo $ac_n "checking for ld that supports -Wl,--gc-sections""... $ac_c" 1>&6
-echo "configure:3513: checking for ld that supports -Wl,--gc-sections" >&5
+echo "configure:3486: checking for ld that supports -Wl,--gc-sections" >&5
if test "$cross_compiling" = yes; then
ac_sectionLDflags=yes
else
cat > conftest.$ac_ext <<EOF
-#line 3518 "configure"
+#line 3491 "configure"
#include "confdefs.h"
int main(void)
@@ -3525,7 +3498,7 @@ else
}
EOF
-if { (eval echo configure:3529: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3502: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_sectionLDflags=yes
else
@@ -3556,7 +3529,7 @@ fi
echo $ac_n "checking for __builtin_abs declaration""... $ac_c" 1>&6
-echo "configure:3560: checking for __builtin_abs declaration" >&5
+echo "configure:3533: checking for __builtin_abs declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_abs_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3570,14 +3543,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 3574 "configure"
+#line 3547 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_abs(0);
; return 0; }
EOF
-if { (eval echo configure:3581: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3554: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func___builtin_abs_use=yes
else
@@ -3600,20 +3573,20 @@ fi
echo "$ac_t""$glibcpp_cv_func___builtin_abs_use" 1>&6
if test x$glibcpp_cv_func___builtin_abs_use = x"yes"; then
echo $ac_n "checking for __builtin_abs linkage""... $ac_c" 1>&6
-echo "configure:3604: checking for __builtin_abs linkage" >&5
+echo "configure:3577: checking for __builtin_abs linkage" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_abs_link'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3610 "configure"
+#line 3583 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_abs(0);
; return 0; }
EOF
-if { (eval echo configure:3617: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3590: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
glibcpp_cv_func___builtin_abs_link=yes
else
@@ -3638,7 +3611,7 @@ EOF
echo $ac_n "checking for __builtin_fabsf declaration""... $ac_c" 1>&6
-echo "configure:3642: checking for __builtin_fabsf declaration" >&5
+echo "configure:3615: checking for __builtin_fabsf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_fabsf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3652,14 +3625,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 3656 "configure"
+#line 3629 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_fabsf(0);
; return 0; }
EOF
-if { (eval echo configure:3663: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3636: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func___builtin_fabsf_use=yes
else
@@ -3682,20 +3655,20 @@ fi
echo "$ac_t""$glibcpp_cv_func___builtin_fabsf_use" 1>&6
if test x$glibcpp_cv_func___builtin_fabsf_use = x"yes"; then
echo $ac_n "checking for __builtin_fabsf linkage""... $ac_c" 1>&6
-echo "configure:3686: checking for __builtin_fabsf linkage" >&5
+echo "configure:3659: checking for __builtin_fabsf linkage" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_fabsf_link'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3692 "configure"
+#line 3665 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_fabsf(0);
; return 0; }
EOF
-if { (eval echo configure:3699: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3672: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
glibcpp_cv_func___builtin_fabsf_link=yes
else
@@ -3720,7 +3693,7 @@ EOF
echo $ac_n "checking for __builtin_fabs declaration""... $ac_c" 1>&6
-echo "configure:3724: checking for __builtin_fabs declaration" >&5
+echo "configure:3697: checking for __builtin_fabs declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_fabs_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3734,14 +3707,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 3738 "configure"
+#line 3711 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_fabs(0);
; return 0; }
EOF
-if { (eval echo configure:3745: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3718: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func___builtin_fabs_use=yes
else
@@ -3764,20 +3737,20 @@ fi
echo "$ac_t""$glibcpp_cv_func___builtin_fabs_use" 1>&6
if test x$glibcpp_cv_func___builtin_fabs_use = x"yes"; then
echo $ac_n "checking for __builtin_fabs linkage""... $ac_c" 1>&6
-echo "configure:3768: checking for __builtin_fabs linkage" >&5
+echo "configure:3741: checking for __builtin_fabs linkage" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_fabs_link'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3774 "configure"
+#line 3747 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_fabs(0);
; return 0; }
EOF
-if { (eval echo configure:3781: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3754: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
glibcpp_cv_func___builtin_fabs_link=yes
else
@@ -3802,7 +3775,7 @@ EOF
echo $ac_n "checking for __builtin_fabsl declaration""... $ac_c" 1>&6
-echo "configure:3806: checking for __builtin_fabsl declaration" >&5
+echo "configure:3779: checking for __builtin_fabsl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_fabsl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3816,14 +3789,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 3820 "configure"
+#line 3793 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_fabsl(0);
; return 0; }
EOF
-if { (eval echo configure:3827: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3800: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func___builtin_fabsl_use=yes
else
@@ -3846,20 +3819,20 @@ fi
echo "$ac_t""$glibcpp_cv_func___builtin_fabsl_use" 1>&6
if test x$glibcpp_cv_func___builtin_fabsl_use = x"yes"; then
echo $ac_n "checking for __builtin_fabsl linkage""... $ac_c" 1>&6
-echo "configure:3850: checking for __builtin_fabsl linkage" >&5
+echo "configure:3823: checking for __builtin_fabsl linkage" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_fabsl_link'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3856 "configure"
+#line 3829 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_fabsl(0);
; return 0; }
EOF
-if { (eval echo configure:3863: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3836: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
glibcpp_cv_func___builtin_fabsl_link=yes
else
@@ -3884,7 +3857,7 @@ EOF
echo $ac_n "checking for __builtin_labs declaration""... $ac_c" 1>&6
-echo "configure:3888: checking for __builtin_labs declaration" >&5
+echo "configure:3861: checking for __builtin_labs declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_labs_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3898,14 +3871,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 3902 "configure"
+#line 3875 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_labs(0);
; return 0; }
EOF
-if { (eval echo configure:3909: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3882: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func___builtin_labs_use=yes
else
@@ -3928,20 +3901,20 @@ fi
echo "$ac_t""$glibcpp_cv_func___builtin_labs_use" 1>&6
if test x$glibcpp_cv_func___builtin_labs_use = x"yes"; then
echo $ac_n "checking for __builtin_labs linkage""... $ac_c" 1>&6
-echo "configure:3932: checking for __builtin_labs linkage" >&5
+echo "configure:3905: checking for __builtin_labs linkage" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_labs_link'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3938 "configure"
+#line 3911 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_labs(0);
; return 0; }
EOF
-if { (eval echo configure:3945: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3918: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
glibcpp_cv_func___builtin_labs_link=yes
else
@@ -3967,7 +3940,7 @@ EOF
echo $ac_n "checking for __builtin_sqrtf declaration""... $ac_c" 1>&6
-echo "configure:3971: checking for __builtin_sqrtf declaration" >&5
+echo "configure:3944: checking for __builtin_sqrtf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_sqrtf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3981,14 +3954,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 3985 "configure"
+#line 3958 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_sqrtf(0);
; return 0; }
EOF
-if { (eval echo configure:3992: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3965: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func___builtin_sqrtf_use=yes
else
@@ -4011,20 +3984,20 @@ fi
echo "$ac_t""$glibcpp_cv_func___builtin_sqrtf_use" 1>&6
if test x$glibcpp_cv_func___builtin_sqrtf_use = x"yes"; then
echo $ac_n "checking for __builtin_sqrtf linkage""... $ac_c" 1>&6
-echo "configure:4015: checking for __builtin_sqrtf linkage" >&5
+echo "configure:3988: checking for __builtin_sqrtf linkage" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_sqrtf_link'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4021 "configure"
+#line 3994 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_sqrtf(0);
; return 0; }
EOF
-if { (eval echo configure:4028: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4001: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
glibcpp_cv_func___builtin_sqrtf_link=yes
else
@@ -4049,7 +4022,7 @@ EOF
echo $ac_n "checking for __builtin_fsqrt declaration""... $ac_c" 1>&6
-echo "configure:4053: checking for __builtin_fsqrt declaration" >&5
+echo "configure:4026: checking for __builtin_fsqrt declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_fsqrt_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -4063,14 +4036,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 4067 "configure"
+#line 4040 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_fsqrt(0);
; return 0; }
EOF
-if { (eval echo configure:4074: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4047: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func___builtin_fsqrt_use=yes
else
@@ -4093,20 +4066,20 @@ fi
echo "$ac_t""$glibcpp_cv_func___builtin_fsqrt_use" 1>&6
if test x$glibcpp_cv_func___builtin_fsqrt_use = x"yes"; then
echo $ac_n "checking for __builtin_fsqrt linkage""... $ac_c" 1>&6
-echo "configure:4097: checking for __builtin_fsqrt linkage" >&5
+echo "configure:4070: checking for __builtin_fsqrt linkage" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_fsqrt_link'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4103 "configure"
+#line 4076 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_fsqrt(0);
; return 0; }
EOF
-if { (eval echo configure:4110: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4083: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
glibcpp_cv_func___builtin_fsqrt_link=yes
else
@@ -4131,7 +4104,7 @@ EOF
echo $ac_n "checking for __builtin_sqrtl declaration""... $ac_c" 1>&6
-echo "configure:4135: checking for __builtin_sqrtl declaration" >&5
+echo "configure:4108: checking for __builtin_sqrtl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_sqrtl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -4145,14 +4118,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 4149 "configure"
+#line 4122 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_sqrtl(0);
; return 0; }
EOF
-if { (eval echo configure:4156: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4129: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func___builtin_sqrtl_use=yes
else
@@ -4175,20 +4148,20 @@ fi
echo "$ac_t""$glibcpp_cv_func___builtin_sqrtl_use" 1>&6
if test x$glibcpp_cv_func___builtin_sqrtl_use = x"yes"; then
echo $ac_n "checking for __builtin_sqrtl linkage""... $ac_c" 1>&6
-echo "configure:4179: checking for __builtin_sqrtl linkage" >&5
+echo "configure:4152: checking for __builtin_sqrtl linkage" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_sqrtl_link'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4185 "configure"
+#line 4158 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_sqrtl(0);
; return 0; }
EOF
-if { (eval echo configure:4192: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4165: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
glibcpp_cv_func___builtin_sqrtl_link=yes
else
@@ -4214,7 +4187,7 @@ EOF
echo $ac_n "checking for __builtin_sinf declaration""... $ac_c" 1>&6
-echo "configure:4218: checking for __builtin_sinf declaration" >&5
+echo "configure:4191: checking for __builtin_sinf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_sinf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -4228,14 +4201,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 4232 "configure"
+#line 4205 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_sinf(0);
; return 0; }
EOF
-if { (eval echo configure:4239: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4212: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func___builtin_sinf_use=yes
else
@@ -4258,20 +4231,20 @@ fi
echo "$ac_t""$glibcpp_cv_func___builtin_sinf_use" 1>&6
if test x$glibcpp_cv_func___builtin_sinf_use = x"yes"; then
echo $ac_n "checking for __builtin_sinf linkage""... $ac_c" 1>&6
-echo "configure:4262: checking for __builtin_sinf linkage" >&5
+echo "configure:4235: checking for __builtin_sinf linkage" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_sinf_link'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4268 "configure"
+#line 4241 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_sinf(0);
; return 0; }
EOF
-if { (eval echo configure:4275: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4248: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
glibcpp_cv_func___builtin_sinf_link=yes
else
@@ -4296,7 +4269,7 @@ EOF
echo $ac_n "checking for __builtin_sin declaration""... $ac_c" 1>&6
-echo "configure:4300: checking for __builtin_sin declaration" >&5
+echo "configure:4273: checking for __builtin_sin declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_sin_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -4310,14 +4283,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 4314 "configure"
+#line 4287 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_sin(0);
; return 0; }
EOF
-if { (eval echo configure:4321: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4294: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func___builtin_sin_use=yes
else
@@ -4340,20 +4313,20 @@ fi
echo "$ac_t""$glibcpp_cv_func___builtin_sin_use" 1>&6
if test x$glibcpp_cv_func___builtin_sin_use = x"yes"; then
echo $ac_n "checking for __builtin_sin linkage""... $ac_c" 1>&6
-echo "configure:4344: checking for __builtin_sin linkage" >&5
+echo "configure:4317: checking for __builtin_sin linkage" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_sin_link'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4350 "configure"
+#line 4323 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_sin(0);
; return 0; }
EOF
-if { (eval echo configure:4357: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4330: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
glibcpp_cv_func___builtin_sin_link=yes
else
@@ -4378,7 +4351,7 @@ EOF
echo $ac_n "checking for __builtin_sinl declaration""... $ac_c" 1>&6
-echo "configure:4382: checking for __builtin_sinl declaration" >&5
+echo "configure:4355: checking for __builtin_sinl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_sinl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -4392,14 +4365,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 4396 "configure"
+#line 4369 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_sinl(0);
; return 0; }
EOF
-if { (eval echo configure:4403: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4376: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func___builtin_sinl_use=yes
else
@@ -4422,20 +4395,20 @@ fi
echo "$ac_t""$glibcpp_cv_func___builtin_sinl_use" 1>&6
if test x$glibcpp_cv_func___builtin_sinl_use = x"yes"; then
echo $ac_n "checking for __builtin_sinl linkage""... $ac_c" 1>&6
-echo "configure:4426: checking for __builtin_sinl linkage" >&5
+echo "configure:4399: checking for __builtin_sinl linkage" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_sinl_link'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4432 "configure"
+#line 4405 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_sinl(0);
; return 0; }
EOF
-if { (eval echo configure:4439: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4412: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
glibcpp_cv_func___builtin_sinl_link=yes
else
@@ -4461,7 +4434,7 @@ EOF
echo $ac_n "checking for __builtin_cosf declaration""... $ac_c" 1>&6
-echo "configure:4465: checking for __builtin_cosf declaration" >&5
+echo "configure:4438: checking for __builtin_cosf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_cosf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -4475,14 +4448,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 4479 "configure"
+#line 4452 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_cosf(0);
; return 0; }
EOF
-if { (eval echo configure:4486: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4459: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func___builtin_cosf_use=yes
else
@@ -4505,20 +4478,20 @@ fi
echo "$ac_t""$glibcpp_cv_func___builtin_cosf_use" 1>&6
if test x$glibcpp_cv_func___builtin_cosf_use = x"yes"; then
echo $ac_n "checking for __builtin_cosf linkage""... $ac_c" 1>&6
-echo "configure:4509: checking for __builtin_cosf linkage" >&5
+echo "configure:4482: checking for __builtin_cosf linkage" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_cosf_link'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4515 "configure"
+#line 4488 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_cosf(0);
; return 0; }
EOF
-if { (eval echo configure:4522: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4495: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
glibcpp_cv_func___builtin_cosf_link=yes
else
@@ -4543,7 +4516,7 @@ EOF
echo $ac_n "checking for __builtin_cos declaration""... $ac_c" 1>&6
-echo "configure:4547: checking for __builtin_cos declaration" >&5
+echo "configure:4520: checking for __builtin_cos declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_cos_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -4557,14 +4530,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 4561 "configure"
+#line 4534 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_cos(0);
; return 0; }
EOF
-if { (eval echo configure:4568: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4541: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func___builtin_cos_use=yes
else
@@ -4587,20 +4560,20 @@ fi
echo "$ac_t""$glibcpp_cv_func___builtin_cos_use" 1>&6
if test x$glibcpp_cv_func___builtin_cos_use = x"yes"; then
echo $ac_n "checking for __builtin_cos linkage""... $ac_c" 1>&6
-echo "configure:4591: checking for __builtin_cos linkage" >&5
+echo "configure:4564: checking for __builtin_cos linkage" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_cos_link'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4597 "configure"
+#line 4570 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_cos(0);
; return 0; }
EOF
-if { (eval echo configure:4604: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4577: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
glibcpp_cv_func___builtin_cos_link=yes
else
@@ -4625,7 +4598,7 @@ EOF
echo $ac_n "checking for __builtin_cosl declaration""... $ac_c" 1>&6
-echo "configure:4629: checking for __builtin_cosl declaration" >&5
+echo "configure:4602: checking for __builtin_cosl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_cosl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -4639,14 +4612,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 4643 "configure"
+#line 4616 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_cosl(0);
; return 0; }
EOF
-if { (eval echo configure:4650: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4623: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func___builtin_cosl_use=yes
else
@@ -4669,20 +4642,20 @@ fi
echo "$ac_t""$glibcpp_cv_func___builtin_cosl_use" 1>&6
if test x$glibcpp_cv_func___builtin_cosl_use = x"yes"; then
echo $ac_n "checking for __builtin_cosl linkage""... $ac_c" 1>&6
-echo "configure:4673: checking for __builtin_cosl linkage" >&5
+echo "configure:4646: checking for __builtin_cosl linkage" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_cosl_link'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4679 "configure"
+#line 4652 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_cosl(0);
; return 0; }
EOF
-if { (eval echo configure:4686: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4659: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
glibcpp_cv_func___builtin_cosl_link=yes
else
@@ -4772,7 +4745,7 @@ EOF
CXXFLAGS='-fno-builtins -D_GNU_SOURCE'
echo $ac_n "checking for sin in -lm""... $ac_c" 1>&6
-echo "configure:4776: checking for sin in -lm" >&5
+echo "configure:4749: checking for sin in -lm" >&5
ac_lib_var=`echo m'_'sin | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -4780,7 +4753,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lm $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4784 "configure"
+#line 4757 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -4791,7 +4764,7 @@ int main() {
sin()
; return 0; }
EOF
-if { (eval echo configure:4795: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4768: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -4817,12 +4790,12 @@ fi
for ac_func in strtof strtold
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4821: checking for $ac_func" >&5
+echo "configure:4794: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4826 "configure"
+#line 4799 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -4845,7 +4818,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:4849: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4822: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -4872,7 +4845,7 @@ done
echo $ac_n "checking for isinf declaration""... $ac_c" 1>&6
-echo "configure:4876: checking for isinf declaration" >&5
+echo "configure:4849: checking for isinf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_isinf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -4886,14 +4859,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 4890 "configure"
+#line 4863 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
isinf(0);
; return 0; }
EOF
-if { (eval echo configure:4897: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4870: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_isinf_use=yes
else
@@ -4918,12 +4891,12 @@ fi
for ac_func in isinf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4922: checking for $ac_func" >&5
+echo "configure:4895: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4927 "configure"
+#line 4900 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -4946,7 +4919,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:4950: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4923: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -4974,7 +4947,7 @@ done
echo $ac_n "checking for isnan declaration""... $ac_c" 1>&6
-echo "configure:4978: checking for isnan declaration" >&5
+echo "configure:4951: checking for isnan declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_isnan_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -4988,14 +4961,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 4992 "configure"
+#line 4965 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
isnan(0);
; return 0; }
EOF
-if { (eval echo configure:4999: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4972: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_isnan_use=yes
else
@@ -5020,12 +4993,12 @@ fi
for ac_func in isnan
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5024: checking for $ac_func" >&5
+echo "configure:4997: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5029 "configure"
+#line 5002 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5048,7 +5021,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5052: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5025: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -5076,7 +5049,7 @@ done
echo $ac_n "checking for finite declaration""... $ac_c" 1>&6
-echo "configure:5080: checking for finite declaration" >&5
+echo "configure:5053: checking for finite declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_finite_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -5090,14 +5063,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 5094 "configure"
+#line 5067 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
finite(0);
; return 0; }
EOF
-if { (eval echo configure:5101: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5074: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_finite_use=yes
else
@@ -5122,12 +5095,12 @@ fi
for ac_func in finite
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5126: checking for $ac_func" >&5
+echo "configure:5099: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5131 "configure"
+#line 5104 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5150,7 +5123,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5154: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5127: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -5178,7 +5151,7 @@ done
echo $ac_n "checking for copysign declaration""... $ac_c" 1>&6
-echo "configure:5182: checking for copysign declaration" >&5
+echo "configure:5155: checking for copysign declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_copysign_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -5192,14 +5165,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 5196 "configure"
+#line 5169 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
copysign(0, 0);
; return 0; }
EOF
-if { (eval echo configure:5203: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5176: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_copysign_use=yes
else
@@ -5224,12 +5197,12 @@ fi
for ac_func in copysign
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5228: checking for $ac_func" >&5
+echo "configure:5201: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5233 "configure"
+#line 5206 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5252,7 +5225,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5256: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5229: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -5280,7 +5253,7 @@ done
echo $ac_n "checking for sincos declaration""... $ac_c" 1>&6
-echo "configure:5284: checking for sincos declaration" >&5
+echo "configure:5257: checking for sincos declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_sincos_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -5294,14 +5267,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 5298 "configure"
+#line 5271 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
sincos(0, 0, 0);
; return 0; }
EOF
-if { (eval echo configure:5305: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5278: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_sincos_use=yes
else
@@ -5326,12 +5299,12 @@ fi
for ac_func in sincos
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5330: checking for $ac_func" >&5
+echo "configure:5303: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5335 "configure"
+#line 5308 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5354,7 +5327,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5358: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5331: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -5382,7 +5355,7 @@ done
echo $ac_n "checking for fpclass declaration""... $ac_c" 1>&6
-echo "configure:5386: checking for fpclass declaration" >&5
+echo "configure:5359: checking for fpclass declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_fpclass_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -5396,14 +5369,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 5400 "configure"
+#line 5373 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
fpclass(0);
; return 0; }
EOF
-if { (eval echo configure:5407: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5380: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_fpclass_use=yes
else
@@ -5428,12 +5401,12 @@ fi
for ac_func in fpclass
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5432: checking for $ac_func" >&5
+echo "configure:5405: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5437 "configure"
+#line 5410 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5456,7 +5429,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5460: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5433: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -5484,7 +5457,7 @@ done
echo $ac_n "checking for qfpclass declaration""... $ac_c" 1>&6
-echo "configure:5488: checking for qfpclass declaration" >&5
+echo "configure:5461: checking for qfpclass declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_qfpclass_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -5498,14 +5471,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 5502 "configure"
+#line 5475 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
qfpclass(0);
; return 0; }
EOF
-if { (eval echo configure:5509: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5482: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_qfpclass_use=yes
else
@@ -5530,12 +5503,12 @@ fi
for ac_func in qfpclass
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5534: checking for $ac_func" >&5
+echo "configure:5507: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5539 "configure"
+#line 5512 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5558,7 +5531,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5562: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5535: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -5587,7 +5560,7 @@ done
echo $ac_n "checking for isnanf declaration""... $ac_c" 1>&6
-echo "configure:5591: checking for isnanf declaration" >&5
+echo "configure:5564: checking for isnanf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_isnanf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -5601,14 +5574,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 5605 "configure"
+#line 5578 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
isnanf(0);
; return 0; }
EOF
-if { (eval echo configure:5612: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5585: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_isnanf_use=yes
else
@@ -5633,12 +5606,12 @@ fi
for ac_func in isnanf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5637: checking for $ac_func" >&5
+echo "configure:5610: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5642 "configure"
+#line 5615 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5661,7 +5634,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5665: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5638: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -5689,7 +5662,7 @@ done
echo $ac_n "checking for isinff declaration""... $ac_c" 1>&6
-echo "configure:5693: checking for isinff declaration" >&5
+echo "configure:5666: checking for isinff declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_isinff_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -5703,14 +5676,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 5707 "configure"
+#line 5680 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
isinff(0);
; return 0; }
EOF
-if { (eval echo configure:5714: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5687: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_isinff_use=yes
else
@@ -5735,12 +5708,12 @@ fi
for ac_func in isinff
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5739: checking for $ac_func" >&5
+echo "configure:5712: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5744 "configure"
+#line 5717 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5763,7 +5736,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5767: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5740: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -5791,7 +5764,7 @@ done
echo $ac_n "checking for acosf declaration""... $ac_c" 1>&6
-echo "configure:5795: checking for acosf declaration" >&5
+echo "configure:5768: checking for acosf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_acosf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -5805,14 +5778,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 5809 "configure"
+#line 5782 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
acosf(0);
; return 0; }
EOF
-if { (eval echo configure:5816: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5789: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_acosf_use=yes
else
@@ -5837,12 +5810,12 @@ fi
for ac_func in acosf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5841: checking for $ac_func" >&5
+echo "configure:5814: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5846 "configure"
+#line 5819 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5865,7 +5838,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5869: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5842: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -5893,7 +5866,7 @@ done
echo $ac_n "checking for asinf declaration""... $ac_c" 1>&6
-echo "configure:5897: checking for asinf declaration" >&5
+echo "configure:5870: checking for asinf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_asinf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -5907,14 +5880,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 5911 "configure"
+#line 5884 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
asinf(0);
; return 0; }
EOF
-if { (eval echo configure:5918: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5891: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_asinf_use=yes
else
@@ -5939,12 +5912,12 @@ fi
for ac_func in asinf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5943: checking for $ac_func" >&5
+echo "configure:5916: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5948 "configure"
+#line 5921 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5967,7 +5940,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5971: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5944: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -5995,7 +5968,7 @@ done
echo $ac_n "checking for atanf declaration""... $ac_c" 1>&6
-echo "configure:5999: checking for atanf declaration" >&5
+echo "configure:5972: checking for atanf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_atanf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6009,14 +5982,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 6013 "configure"
+#line 5986 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
atanf(0);
; return 0; }
EOF
-if { (eval echo configure:6020: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5993: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_atanf_use=yes
else
@@ -6041,12 +6014,12 @@ fi
for ac_func in atanf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6045: checking for $ac_func" >&5
+echo "configure:6018: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6050 "configure"
+#line 6023 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6069,7 +6042,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6073: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6046: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6097,7 +6070,7 @@ done
echo $ac_n "checking for atan2f declaration""... $ac_c" 1>&6
-echo "configure:6101: checking for atan2f declaration" >&5
+echo "configure:6074: checking for atan2f declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_atan2f_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6111,14 +6084,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 6115 "configure"
+#line 6088 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
atan2f(0, 0);
; return 0; }
EOF
-if { (eval echo configure:6122: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6095: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_atan2f_use=yes
else
@@ -6143,12 +6116,12 @@ fi
for ac_func in atan2f
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6147: checking for $ac_func" >&5
+echo "configure:6120: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6152 "configure"
+#line 6125 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6171,7 +6144,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6175: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6148: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6199,7 +6172,7 @@ done
echo $ac_n "checking for ceilf declaration""... $ac_c" 1>&6
-echo "configure:6203: checking for ceilf declaration" >&5
+echo "configure:6176: checking for ceilf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_ceilf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6213,14 +6186,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 6217 "configure"
+#line 6190 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
ceilf(0);
; return 0; }
EOF
-if { (eval echo configure:6224: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6197: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_ceilf_use=yes
else
@@ -6245,12 +6218,12 @@ fi
for ac_func in ceilf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6249: checking for $ac_func" >&5
+echo "configure:6222: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6254 "configure"
+#line 6227 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6273,7 +6246,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6277: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6301,7 +6274,7 @@ done
echo $ac_n "checking for cosf declaration""... $ac_c" 1>&6
-echo "configure:6305: checking for cosf declaration" >&5
+echo "configure:6278: checking for cosf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_cosf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6315,14 +6288,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 6319 "configure"
+#line 6292 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
cosf(0);
; return 0; }
EOF
-if { (eval echo configure:6326: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6299: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_cosf_use=yes
else
@@ -6347,12 +6320,12 @@ fi
for ac_func in cosf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6351: checking for $ac_func" >&5
+echo "configure:6324: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6356 "configure"
+#line 6329 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6375,7 +6348,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6379: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6352: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6403,7 +6376,7 @@ done
echo $ac_n "checking for coshf declaration""... $ac_c" 1>&6
-echo "configure:6407: checking for coshf declaration" >&5
+echo "configure:6380: checking for coshf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_coshf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6417,14 +6390,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 6421 "configure"
+#line 6394 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
coshf(0);
; return 0; }
EOF
-if { (eval echo configure:6428: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6401: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_coshf_use=yes
else
@@ -6449,12 +6422,12 @@ fi
for ac_func in coshf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6453: checking for $ac_func" >&5
+echo "configure:6426: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6458 "configure"
+#line 6431 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6477,7 +6450,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6481: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6454: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6505,7 +6478,7 @@ done
echo $ac_n "checking for expf declaration""... $ac_c" 1>&6
-echo "configure:6509: checking for expf declaration" >&5
+echo "configure:6482: checking for expf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_expf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6519,14 +6492,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 6523 "configure"
+#line 6496 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
expf(0);
; return 0; }
EOF
-if { (eval echo configure:6530: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6503: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_expf_use=yes
else
@@ -6551,12 +6524,12 @@ fi
for ac_func in expf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6555: checking for $ac_func" >&5
+echo "configure:6528: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6560 "configure"
+#line 6533 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6579,7 +6552,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6583: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6556: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6607,7 +6580,7 @@ done
echo $ac_n "checking for fabsf declaration""... $ac_c" 1>&6
-echo "configure:6611: checking for fabsf declaration" >&5
+echo "configure:6584: checking for fabsf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_fabsf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6621,14 +6594,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 6625 "configure"
+#line 6598 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
fabsf(0);
; return 0; }
EOF
-if { (eval echo configure:6632: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6605: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_fabsf_use=yes
else
@@ -6653,12 +6626,12 @@ fi
for ac_func in fabsf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6657: checking for $ac_func" >&5
+echo "configure:6630: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6662 "configure"
+#line 6635 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6681,7 +6654,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6685: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6658: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6709,7 +6682,7 @@ done
echo $ac_n "checking for floorf declaration""... $ac_c" 1>&6
-echo "configure:6713: checking for floorf declaration" >&5
+echo "configure:6686: checking for floorf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_floorf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6723,14 +6696,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 6727 "configure"
+#line 6700 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
floorf(0);
; return 0; }
EOF
-if { (eval echo configure:6734: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6707: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_floorf_use=yes
else
@@ -6755,12 +6728,12 @@ fi
for ac_func in floorf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6759: checking for $ac_func" >&5
+echo "configure:6732: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6764 "configure"
+#line 6737 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6783,7 +6756,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6787: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6760: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6811,7 +6784,7 @@ done
echo $ac_n "checking for fmodf declaration""... $ac_c" 1>&6
-echo "configure:6815: checking for fmodf declaration" >&5
+echo "configure:6788: checking for fmodf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_fmodf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6825,14 +6798,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 6829 "configure"
+#line 6802 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
fmodf(0, 0);
; return 0; }
EOF
-if { (eval echo configure:6836: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6809: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_fmodf_use=yes
else
@@ -6857,12 +6830,12 @@ fi
for ac_func in fmodf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6861: checking for $ac_func" >&5
+echo "configure:6834: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6866 "configure"
+#line 6839 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6885,7 +6858,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6889: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6862: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6913,7 +6886,7 @@ done
echo $ac_n "checking for frexpf declaration""... $ac_c" 1>&6
-echo "configure:6917: checking for frexpf declaration" >&5
+echo "configure:6890: checking for frexpf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_frexpf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6927,14 +6900,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 6931 "configure"
+#line 6904 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
frexpf(0, 0);
; return 0; }
EOF
-if { (eval echo configure:6938: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6911: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_frexpf_use=yes
else
@@ -6959,12 +6932,12 @@ fi
for ac_func in frexpf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6963: checking for $ac_func" >&5
+echo "configure:6936: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6968 "configure"
+#line 6941 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6987,7 +6960,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6991: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6964: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -7015,7 +6988,7 @@ done
echo $ac_n "checking for ldexpf declaration""... $ac_c" 1>&6
-echo "configure:7019: checking for ldexpf declaration" >&5
+echo "configure:6992: checking for ldexpf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_ldexpf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -7029,14 +7002,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 7033 "configure"
+#line 7006 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
ldexpf(0, 0);
; return 0; }
EOF
-if { (eval echo configure:7040: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7013: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_ldexpf_use=yes
else
@@ -7061,12 +7034,12 @@ fi
for ac_func in ldexpf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7065: checking for $ac_func" >&5
+echo "configure:7038: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7070 "configure"
+#line 7043 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -7089,7 +7062,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:7093: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7066: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -7117,7 +7090,7 @@ done
echo $ac_n "checking for logf declaration""... $ac_c" 1>&6
-echo "configure:7121: checking for logf declaration" >&5
+echo "configure:7094: checking for logf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_logf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -7131,14 +7104,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 7135 "configure"
+#line 7108 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
logf(0);
; return 0; }
EOF
-if { (eval echo configure:7142: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7115: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_logf_use=yes
else
@@ -7163,12 +7136,12 @@ fi
for ac_func in logf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7167: checking for $ac_func" >&5
+echo "configure:7140: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7172 "configure"
+#line 7145 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -7191,7 +7164,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:7195: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7168: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -7219,7 +7192,7 @@ done
echo $ac_n "checking for log10f declaration""... $ac_c" 1>&6
-echo "configure:7223: checking for log10f declaration" >&5
+echo "configure:7196: checking for log10f declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_log10f_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -7233,14 +7206,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 7237 "configure"
+#line 7210 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
log10f(0);
; return 0; }
EOF
-if { (eval echo configure:7244: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7217: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_log10f_use=yes
else
@@ -7265,12 +7238,12 @@ fi
for ac_func in log10f
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7269: checking for $ac_func" >&5
+echo "configure:7242: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7274 "configure"
+#line 7247 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -7293,7 +7266,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:7297: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7270: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -7321,7 +7294,7 @@ done
echo $ac_n "checking for modff declaration""... $ac_c" 1>&6
-echo "configure:7325: checking for modff declaration" >&5
+echo "configure:7298: checking for modff declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_modff_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -7335,14 +7308,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 7339 "configure"
+#line 7312 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
modff(0, 0);
; return 0; }
EOF
-if { (eval echo configure:7346: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7319: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_modff_use=yes
else
@@ -7367,12 +7340,12 @@ fi
for ac_func in modff
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7371: checking for $ac_func" >&5
+echo "configure:7344: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7376 "configure"
+#line 7349 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -7395,7 +7368,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:7399: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7372: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -7423,7 +7396,7 @@ done
echo $ac_n "checking for powf declaration""... $ac_c" 1>&6
-echo "configure:7427: checking for powf declaration" >&5
+echo "configure:7400: checking for powf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_powf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -7437,14 +7410,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 7441 "configure"
+#line 7414 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
powf(0, 0);
; return 0; }
EOF
-if { (eval echo configure:7448: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7421: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_powf_use=yes
else
@@ -7469,12 +7442,12 @@ fi
for ac_func in powf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7473: checking for $ac_func" >&5
+echo "configure:7446: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7478 "configure"
+#line 7451 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -7497,7 +7470,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:7501: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7474: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -7525,7 +7498,7 @@ done
echo $ac_n "checking for sinf declaration""... $ac_c" 1>&6
-echo "configure:7529: checking for sinf declaration" >&5
+echo "configure:7502: checking for sinf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_sinf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -7539,14 +7512,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 7543 "configure"
+#line 7516 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
sinf(0);
; return 0; }
EOF
-if { (eval echo configure:7550: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7523: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_sinf_use=yes
else
@@ -7571,12 +7544,12 @@ fi
for ac_func in sinf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7575: checking for $ac_func" >&5
+echo "configure:7548: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7580 "configure"
+#line 7553 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -7599,7 +7572,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:7603: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7576: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -7627,7 +7600,7 @@ done
echo $ac_n "checking for sinhf declaration""... $ac_c" 1>&6
-echo "configure:7631: checking for sinhf declaration" >&5
+echo "configure:7604: checking for sinhf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_sinhf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -7641,14 +7614,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 7645 "configure"
+#line 7618 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
sinhf(0);
; return 0; }
EOF
-if { (eval echo configure:7652: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7625: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_sinhf_use=yes
else
@@ -7673,12 +7646,12 @@ fi
for ac_func in sinhf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7677: checking for $ac_func" >&5
+echo "configure:7650: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7682 "configure"
+#line 7655 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -7701,7 +7674,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:7705: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7678: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -7729,7 +7702,7 @@ done
echo $ac_n "checking for sqrtf declaration""... $ac_c" 1>&6
-echo "configure:7733: checking for sqrtf declaration" >&5
+echo "configure:7706: checking for sqrtf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_sqrtf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -7743,14 +7716,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 7747 "configure"
+#line 7720 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
sqrtf(0);
; return 0; }
EOF
-if { (eval echo configure:7754: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7727: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_sqrtf_use=yes
else
@@ -7775,12 +7748,12 @@ fi
for ac_func in sqrtf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7779: checking for $ac_func" >&5
+echo "configure:7752: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7784 "configure"
+#line 7757 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -7803,7 +7776,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:7807: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7780: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -7831,7 +7804,7 @@ done
echo $ac_n "checking for tanf declaration""... $ac_c" 1>&6
-echo "configure:7835: checking for tanf declaration" >&5
+echo "configure:7808: checking for tanf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_tanf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -7845,14 +7818,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 7849 "configure"
+#line 7822 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
tanf(0);
; return 0; }
EOF
-if { (eval echo configure:7856: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7829: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_tanf_use=yes
else
@@ -7877,12 +7850,12 @@ fi
for ac_func in tanf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7881: checking for $ac_func" >&5
+echo "configure:7854: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7886 "configure"
+#line 7859 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -7905,7 +7878,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:7909: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7882: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -7933,7 +7906,7 @@ done
echo $ac_n "checking for tanhf declaration""... $ac_c" 1>&6
-echo "configure:7937: checking for tanhf declaration" >&5
+echo "configure:7910: checking for tanhf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_tanhf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -7947,14 +7920,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 7951 "configure"
+#line 7924 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
tanhf(0);
; return 0; }
EOF
-if { (eval echo configure:7958: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7931: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_tanhf_use=yes
else
@@ -7979,12 +7952,12 @@ fi
for ac_func in tanhf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7983: checking for $ac_func" >&5
+echo "configure:7956: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7988 "configure"
+#line 7961 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -8007,7 +7980,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:8011: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7984: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -8035,7 +8008,7 @@ done
echo $ac_n "checking for sincosf declaration""... $ac_c" 1>&6
-echo "configure:8039: checking for sincosf declaration" >&5
+echo "configure:8012: checking for sincosf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_sincosf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -8049,14 +8022,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 8053 "configure"
+#line 8026 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
sincosf(0, 0, 0);
; return 0; }
EOF
-if { (eval echo configure:8060: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8033: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_sincosf_use=yes
else
@@ -8081,12 +8054,12 @@ fi
for ac_func in sincosf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8085: checking for $ac_func" >&5
+echo "configure:8058: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8090 "configure"
+#line 8063 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -8109,7 +8082,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:8113: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8086: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -8137,7 +8110,7 @@ done
echo $ac_n "checking for finitef declaration""... $ac_c" 1>&6
-echo "configure:8141: checking for finitef declaration" >&5
+echo "configure:8114: checking for finitef declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_finitef_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -8151,14 +8124,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 8155 "configure"
+#line 8128 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
finitef(0);
; return 0; }
EOF
-if { (eval echo configure:8162: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8135: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_finitef_use=yes
else
@@ -8183,12 +8156,12 @@ fi
for ac_func in finitef
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8187: checking for $ac_func" >&5
+echo "configure:8160: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8192 "configure"
+#line 8165 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -8211,7 +8184,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:8215: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8188: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -8240,7 +8213,7 @@ done
echo $ac_n "checking for isnanl declaration""... $ac_c" 1>&6
-echo "configure:8244: checking for isnanl declaration" >&5
+echo "configure:8217: checking for isnanl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_isnanl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -8254,14 +8227,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 8258 "configure"
+#line 8231 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
isnanl(0);
; return 0; }
EOF
-if { (eval echo configure:8265: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8238: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_isnanl_use=yes
else
@@ -8286,12 +8259,12 @@ fi
for ac_func in isnanl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8290: checking for $ac_func" >&5
+echo "configure:8263: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8295 "configure"
+#line 8268 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -8314,7 +8287,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:8318: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8291: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -8342,7 +8315,7 @@ done
echo $ac_n "checking for isinfl declaration""... $ac_c" 1>&6
-echo "configure:8346: checking for isinfl declaration" >&5
+echo "configure:8319: checking for isinfl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_isinfl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -8356,14 +8329,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 8360 "configure"
+#line 8333 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
isinfl(0);
; return 0; }
EOF
-if { (eval echo configure:8367: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8340: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_isinfl_use=yes
else
@@ -8388,12 +8361,12 @@ fi
for ac_func in isinfl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8392: checking for $ac_func" >&5
+echo "configure:8365: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8397 "configure"
+#line 8370 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -8416,7 +8389,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:8420: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8393: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -8444,7 +8417,7 @@ done
echo $ac_n "checking for copysignl declaration""... $ac_c" 1>&6
-echo "configure:8448: checking for copysignl declaration" >&5
+echo "configure:8421: checking for copysignl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_copysignl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -8458,14 +8431,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 8462 "configure"
+#line 8435 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
copysignl(0, 0);
; return 0; }
EOF
-if { (eval echo configure:8469: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8442: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_copysignl_use=yes
else
@@ -8490,12 +8463,12 @@ fi
for ac_func in copysignl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8494: checking for $ac_func" >&5
+echo "configure:8467: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8499 "configure"
+#line 8472 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -8518,7 +8491,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:8522: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8495: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -8546,7 +8519,7 @@ done
echo $ac_n "checking for acosl declaration""... $ac_c" 1>&6
-echo "configure:8550: checking for acosl declaration" >&5
+echo "configure:8523: checking for acosl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_acosl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -8560,14 +8533,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 8564 "configure"
+#line 8537 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
acosl(0);
; return 0; }
EOF
-if { (eval echo configure:8571: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8544: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_acosl_use=yes
else
@@ -8592,12 +8565,12 @@ fi
for ac_func in acosl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8596: checking for $ac_func" >&5
+echo "configure:8569: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8601 "configure"
+#line 8574 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -8620,7 +8593,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:8624: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8597: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -8648,7 +8621,7 @@ done
echo $ac_n "checking for asinl declaration""... $ac_c" 1>&6
-echo "configure:8652: checking for asinl declaration" >&5
+echo "configure:8625: checking for asinl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_asinl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -8662,14 +8635,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 8666 "configure"
+#line 8639 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
asinl(0);
; return 0; }
EOF
-if { (eval echo configure:8673: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8646: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_asinl_use=yes
else
@@ -8694,12 +8667,12 @@ fi
for ac_func in asinl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8698: checking for $ac_func" >&5
+echo "configure:8671: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8703 "configure"
+#line 8676 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -8722,7 +8695,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:8726: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8699: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -8750,7 +8723,7 @@ done
echo $ac_n "checking for atanl declaration""... $ac_c" 1>&6
-echo "configure:8754: checking for atanl declaration" >&5
+echo "configure:8727: checking for atanl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_atanl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -8764,14 +8737,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 8768 "configure"
+#line 8741 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
atanl(0);
; return 0; }
EOF
-if { (eval echo configure:8775: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8748: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_atanl_use=yes
else
@@ -8796,12 +8769,12 @@ fi
for ac_func in atanl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8800: checking for $ac_func" >&5
+echo "configure:8773: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8805 "configure"
+#line 8778 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -8824,7 +8797,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:8828: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8801: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -8852,7 +8825,7 @@ done
echo $ac_n "checking for atan2l declaration""... $ac_c" 1>&6
-echo "configure:8856: checking for atan2l declaration" >&5
+echo "configure:8829: checking for atan2l declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_atan2l_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -8866,14 +8839,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 8870 "configure"
+#line 8843 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
atan2l(0, 0);
; return 0; }
EOF
-if { (eval echo configure:8877: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8850: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_atan2l_use=yes
else
@@ -8898,12 +8871,12 @@ fi
for ac_func in atan2l
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8902: checking for $ac_func" >&5
+echo "configure:8875: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8907 "configure"
+#line 8880 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -8926,7 +8899,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:8930: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8903: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -8954,7 +8927,7 @@ done
echo $ac_n "checking for ceill declaration""... $ac_c" 1>&6
-echo "configure:8958: checking for ceill declaration" >&5
+echo "configure:8931: checking for ceill declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_ceill_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -8968,14 +8941,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 8972 "configure"
+#line 8945 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
ceill(0);
; return 0; }
EOF
-if { (eval echo configure:8979: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8952: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_ceill_use=yes
else
@@ -9000,12 +8973,12 @@ fi
for ac_func in ceill
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:9004: checking for $ac_func" >&5
+echo "configure:8977: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 9009 "configure"
+#line 8982 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -9028,7 +9001,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:9032: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9005: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -9056,7 +9029,7 @@ done
echo $ac_n "checking for cosl declaration""... $ac_c" 1>&6
-echo "configure:9060: checking for cosl declaration" >&5
+echo "configure:9033: checking for cosl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_cosl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -9070,14 +9043,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 9074 "configure"
+#line 9047 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
cosl(0);
; return 0; }
EOF
-if { (eval echo configure:9081: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9054: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_cosl_use=yes
else
@@ -9102,12 +9075,12 @@ fi
for ac_func in cosl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:9106: checking for $ac_func" >&5
+echo "configure:9079: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 9111 "configure"
+#line 9084 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -9130,7 +9103,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:9134: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9107: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -9158,7 +9131,7 @@ done
echo $ac_n "checking for coshl declaration""... $ac_c" 1>&6
-echo "configure:9162: checking for coshl declaration" >&5
+echo "configure:9135: checking for coshl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_coshl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -9172,14 +9145,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 9176 "configure"
+#line 9149 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
coshl(0);
; return 0; }
EOF
-if { (eval echo configure:9183: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9156: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_coshl_use=yes
else
@@ -9204,12 +9177,12 @@ fi
for ac_func in coshl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:9208: checking for $ac_func" >&5
+echo "configure:9181: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 9213 "configure"
+#line 9186 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -9232,7 +9205,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:9236: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9209: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -9260,7 +9233,7 @@ done
echo $ac_n "checking for expl declaration""... $ac_c" 1>&6
-echo "configure:9264: checking for expl declaration" >&5
+echo "configure:9237: checking for expl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_expl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -9274,14 +9247,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 9278 "configure"
+#line 9251 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
expl(0);
; return 0; }
EOF
-if { (eval echo configure:9285: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9258: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_expl_use=yes
else
@@ -9306,12 +9279,12 @@ fi
for ac_func in expl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:9310: checking for $ac_func" >&5
+echo "configure:9283: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 9315 "configure"
+#line 9288 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -9334,7 +9307,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:9338: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9311: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -9362,7 +9335,7 @@ done
echo $ac_n "checking for fabsl declaration""... $ac_c" 1>&6
-echo "configure:9366: checking for fabsl declaration" >&5
+echo "configure:9339: checking for fabsl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_fabsl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -9376,14 +9349,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 9380 "configure"
+#line 9353 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
fabsl(0);
; return 0; }
EOF
-if { (eval echo configure:9387: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9360: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_fabsl_use=yes
else
@@ -9408,12 +9381,12 @@ fi
for ac_func in fabsl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:9412: checking for $ac_func" >&5
+echo "configure:9385: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 9417 "configure"
+#line 9390 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -9436,7 +9409,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:9440: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9413: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -9464,7 +9437,7 @@ done
echo $ac_n "checking for floorl declaration""... $ac_c" 1>&6
-echo "configure:9468: checking for floorl declaration" >&5
+echo "configure:9441: checking for floorl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_floorl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -9478,14 +9451,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 9482 "configure"
+#line 9455 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
floorl(0);
; return 0; }
EOF
-if { (eval echo configure:9489: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9462: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_floorl_use=yes
else
@@ -9510,12 +9483,12 @@ fi
for ac_func in floorl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:9514: checking for $ac_func" >&5
+echo "configure:9487: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 9519 "configure"
+#line 9492 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -9538,7 +9511,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:9542: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9515: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -9566,7 +9539,7 @@ done
echo $ac_n "checking for fmodl declaration""... $ac_c" 1>&6
-echo "configure:9570: checking for fmodl declaration" >&5
+echo "configure:9543: checking for fmodl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_fmodl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -9580,14 +9553,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 9584 "configure"
+#line 9557 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
fmodl(0, 0);
; return 0; }
EOF
-if { (eval echo configure:9591: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9564: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_fmodl_use=yes
else
@@ -9612,12 +9585,12 @@ fi
for ac_func in fmodl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:9616: checking for $ac_func" >&5
+echo "configure:9589: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 9621 "configure"
+#line 9594 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -9640,7 +9613,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:9644: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9617: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -9668,7 +9641,7 @@ done
echo $ac_n "checking for frexpl declaration""... $ac_c" 1>&6
-echo "configure:9672: checking for frexpl declaration" >&5
+echo "configure:9645: checking for frexpl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_frexpl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -9682,14 +9655,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 9686 "configure"
+#line 9659 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
frexpl(0, 0);
; return 0; }
EOF
-if { (eval echo configure:9693: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9666: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_frexpl_use=yes
else
@@ -9714,12 +9687,12 @@ fi
for ac_func in frexpl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:9718: checking for $ac_func" >&5
+echo "configure:9691: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 9723 "configure"
+#line 9696 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -9742,7 +9715,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:9746: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9719: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -9770,7 +9743,7 @@ done
echo $ac_n "checking for ldexpl declaration""... $ac_c" 1>&6
-echo "configure:9774: checking for ldexpl declaration" >&5
+echo "configure:9747: checking for ldexpl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_ldexpl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -9784,14 +9757,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 9788 "configure"
+#line 9761 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
ldexpl(0, 0);
; return 0; }
EOF
-if { (eval echo configure:9795: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9768: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_ldexpl_use=yes
else
@@ -9816,12 +9789,12 @@ fi
for ac_func in ldexpl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:9820: checking for $ac_func" >&5
+echo "configure:9793: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 9825 "configure"
+#line 9798 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -9844,7 +9817,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:9848: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9821: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -9872,7 +9845,7 @@ done
echo $ac_n "checking for logl declaration""... $ac_c" 1>&6
-echo "configure:9876: checking for logl declaration" >&5
+echo "configure:9849: checking for logl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_logl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -9886,14 +9859,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 9890 "configure"
+#line 9863 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
logl(0);
; return 0; }
EOF
-if { (eval echo configure:9897: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9870: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_logl_use=yes
else
@@ -9918,12 +9891,12 @@ fi
for ac_func in logl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:9922: checking for $ac_func" >&5
+echo "configure:9895: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 9927 "configure"
+#line 9900 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -9946,7 +9919,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:9950: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9923: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -9974,7 +9947,7 @@ done
echo $ac_n "checking for log10l declaration""... $ac_c" 1>&6
-echo "configure:9978: checking for log10l declaration" >&5
+echo "configure:9951: checking for log10l declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_log10l_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -9988,14 +9961,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 9992 "configure"
+#line 9965 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
log10l(0);
; return 0; }
EOF
-if { (eval echo configure:9999: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9972: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_log10l_use=yes
else
@@ -10020,12 +9993,12 @@ fi
for ac_func in log10l
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:10024: checking for $ac_func" >&5
+echo "configure:9997: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10029 "configure"
+#line 10002 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -10048,7 +10021,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:10052: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10025: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -10076,7 +10049,7 @@ done
echo $ac_n "checking for modfl declaration""... $ac_c" 1>&6
-echo "configure:10080: checking for modfl declaration" >&5
+echo "configure:10053: checking for modfl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_modfl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -10090,14 +10063,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 10094 "configure"
+#line 10067 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
modfl(0, 0);
; return 0; }
EOF
-if { (eval echo configure:10101: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10074: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_modfl_use=yes
else
@@ -10122,12 +10095,12 @@ fi
for ac_func in modfl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:10126: checking for $ac_func" >&5
+echo "configure:10099: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10131 "configure"
+#line 10104 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -10150,7 +10123,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:10154: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10127: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -10178,7 +10151,7 @@ done
echo $ac_n "checking for powl declaration""... $ac_c" 1>&6
-echo "configure:10182: checking for powl declaration" >&5
+echo "configure:10155: checking for powl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_powl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -10192,14 +10165,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 10196 "configure"
+#line 10169 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
powl(0, 0);
; return 0; }
EOF
-if { (eval echo configure:10203: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10176: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_powl_use=yes
else
@@ -10224,12 +10197,12 @@ fi
for ac_func in powl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:10228: checking for $ac_func" >&5
+echo "configure:10201: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10233 "configure"
+#line 10206 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -10252,7 +10225,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:10256: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10229: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -10280,7 +10253,7 @@ done
echo $ac_n "checking for sinl declaration""... $ac_c" 1>&6
-echo "configure:10284: checking for sinl declaration" >&5
+echo "configure:10257: checking for sinl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_sinl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -10294,14 +10267,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 10298 "configure"
+#line 10271 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
sinl(0);
; return 0; }
EOF
-if { (eval echo configure:10305: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10278: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_sinl_use=yes
else
@@ -10326,12 +10299,12 @@ fi
for ac_func in sinl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:10330: checking for $ac_func" >&5
+echo "configure:10303: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10335 "configure"
+#line 10308 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -10354,7 +10327,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:10358: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10331: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -10382,7 +10355,7 @@ done
echo $ac_n "checking for sinhl declaration""... $ac_c" 1>&6
-echo "configure:10386: checking for sinhl declaration" >&5
+echo "configure:10359: checking for sinhl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_sinhl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -10396,14 +10369,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 10400 "configure"
+#line 10373 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
sinhl(0);
; return 0; }
EOF
-if { (eval echo configure:10407: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10380: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_sinhl_use=yes
else
@@ -10428,12 +10401,12 @@ fi
for ac_func in sinhl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:10432: checking for $ac_func" >&5
+echo "configure:10405: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10437 "configure"
+#line 10410 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -10456,7 +10429,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:10460: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10433: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -10484,7 +10457,7 @@ done
echo $ac_n "checking for sqrtl declaration""... $ac_c" 1>&6
-echo "configure:10488: checking for sqrtl declaration" >&5
+echo "configure:10461: checking for sqrtl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_sqrtl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -10498,14 +10471,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 10502 "configure"
+#line 10475 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
sqrtl(0);
; return 0; }
EOF
-if { (eval echo configure:10509: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10482: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_sqrtl_use=yes
else
@@ -10530,12 +10503,12 @@ fi
for ac_func in sqrtl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:10534: checking for $ac_func" >&5
+echo "configure:10507: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10539 "configure"
+#line 10512 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -10558,7 +10531,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:10562: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10535: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -10586,7 +10559,7 @@ done
echo $ac_n "checking for tanl declaration""... $ac_c" 1>&6
-echo "configure:10590: checking for tanl declaration" >&5
+echo "configure:10563: checking for tanl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_tanl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -10600,14 +10573,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 10604 "configure"
+#line 10577 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
tanl(0);
; return 0; }
EOF
-if { (eval echo configure:10611: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10584: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_tanl_use=yes
else
@@ -10632,12 +10605,12 @@ fi
for ac_func in tanl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:10636: checking for $ac_func" >&5
+echo "configure:10609: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10641 "configure"
+#line 10614 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -10660,7 +10633,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:10664: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10637: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -10688,7 +10661,7 @@ done
echo $ac_n "checking for tanhl declaration""... $ac_c" 1>&6
-echo "configure:10692: checking for tanhl declaration" >&5
+echo "configure:10665: checking for tanhl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_tanhl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -10702,14 +10675,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 10706 "configure"
+#line 10679 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
tanhl(0);
; return 0; }
EOF
-if { (eval echo configure:10713: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10686: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_tanhl_use=yes
else
@@ -10734,12 +10707,12 @@ fi
for ac_func in tanhl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:10738: checking for $ac_func" >&5
+echo "configure:10711: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10743 "configure"
+#line 10716 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -10762,7 +10735,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:10766: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10739: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -10790,7 +10763,7 @@ done
echo $ac_n "checking for sincosl declaration""... $ac_c" 1>&6
-echo "configure:10794: checking for sincosl declaration" >&5
+echo "configure:10767: checking for sincosl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_sincosl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -10804,14 +10777,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 10808 "configure"
+#line 10781 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
sincosl(0, 0, 0);
; return 0; }
EOF
-if { (eval echo configure:10815: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10788: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_sincosl_use=yes
else
@@ -10836,12 +10809,12 @@ fi
for ac_func in sincosl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:10840: checking for $ac_func" >&5
+echo "configure:10813: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10845 "configure"
+#line 10818 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -10864,7 +10837,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:10868: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10841: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -10892,7 +10865,7 @@ done
echo $ac_n "checking for finitel declaration""... $ac_c" 1>&6
-echo "configure:10896: checking for finitel declaration" >&5
+echo "configure:10869: checking for finitel declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func_finitel_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -10906,14 +10879,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 10910 "configure"
+#line 10883 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
finitel(0);
; return 0; }
EOF
-if { (eval echo configure:10917: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10890: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_finitel_use=yes
else
@@ -10938,12 +10911,12 @@ fi
for ac_func in finitel
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:10942: checking for $ac_func" >&5
+echo "configure:10915: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10947 "configure"
+#line 10920 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -10966,7 +10939,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:10970: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10943: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -10995,7 +10968,7 @@ done
echo $ac_n "checking for _isinf declaration""... $ac_c" 1>&6
-echo "configure:10999: checking for _isinf declaration" >&5
+echo "configure:10972: checking for _isinf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__isinf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -11009,14 +10982,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 11013 "configure"
+#line 10986 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_isinf(0);
; return 0; }
EOF
-if { (eval echo configure:11020: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10993: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__isinf_use=yes
else
@@ -11041,12 +11014,12 @@ fi
for ac_func in _isinf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:11045: checking for $ac_func" >&5
+echo "configure:11018: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 11050 "configure"
+#line 11023 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -11069,7 +11042,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:11073: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11046: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -11097,7 +11070,7 @@ done
echo $ac_n "checking for _isnan declaration""... $ac_c" 1>&6
-echo "configure:11101: checking for _isnan declaration" >&5
+echo "configure:11074: checking for _isnan declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__isnan_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -11111,14 +11084,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 11115 "configure"
+#line 11088 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_isnan(0);
; return 0; }
EOF
-if { (eval echo configure:11122: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11095: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__isnan_use=yes
else
@@ -11143,12 +11116,12 @@ fi
for ac_func in _isnan
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:11147: checking for $ac_func" >&5
+echo "configure:11120: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 11152 "configure"
+#line 11125 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -11171,7 +11144,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:11175: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11148: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -11199,7 +11172,7 @@ done
echo $ac_n "checking for _finite declaration""... $ac_c" 1>&6
-echo "configure:11203: checking for _finite declaration" >&5
+echo "configure:11176: checking for _finite declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__finite_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -11213,14 +11186,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 11217 "configure"
+#line 11190 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_finite(0);
; return 0; }
EOF
-if { (eval echo configure:11224: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11197: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__finite_use=yes
else
@@ -11245,12 +11218,12 @@ fi
for ac_func in _finite
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:11249: checking for $ac_func" >&5
+echo "configure:11222: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 11254 "configure"
+#line 11227 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -11273,7 +11246,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:11277: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -11301,7 +11274,7 @@ done
echo $ac_n "checking for _copysign declaration""... $ac_c" 1>&6
-echo "configure:11305: checking for _copysign declaration" >&5
+echo "configure:11278: checking for _copysign declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__copysign_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -11315,14 +11288,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 11319 "configure"
+#line 11292 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_copysign(0, 0);
; return 0; }
EOF
-if { (eval echo configure:11326: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11299: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__copysign_use=yes
else
@@ -11347,12 +11320,12 @@ fi
for ac_func in _copysign
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:11351: checking for $ac_func" >&5
+echo "configure:11324: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 11356 "configure"
+#line 11329 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -11375,7 +11348,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:11379: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11352: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -11403,7 +11376,7 @@ done
echo $ac_n "checking for _sincos declaration""... $ac_c" 1>&6
-echo "configure:11407: checking for _sincos declaration" >&5
+echo "configure:11380: checking for _sincos declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__sincos_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -11417,14 +11390,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 11421 "configure"
+#line 11394 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_sincos(0, 0, 0);
; return 0; }
EOF
-if { (eval echo configure:11428: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11401: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__sincos_use=yes
else
@@ -11449,12 +11422,12 @@ fi
for ac_func in _sincos
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:11453: checking for $ac_func" >&5
+echo "configure:11426: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 11458 "configure"
+#line 11431 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -11477,7 +11450,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:11481: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11454: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -11505,7 +11478,7 @@ done
echo $ac_n "checking for _fpclass declaration""... $ac_c" 1>&6
-echo "configure:11509: checking for _fpclass declaration" >&5
+echo "configure:11482: checking for _fpclass declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__fpclass_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -11519,14 +11492,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 11523 "configure"
+#line 11496 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_fpclass(0);
; return 0; }
EOF
-if { (eval echo configure:11530: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11503: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__fpclass_use=yes
else
@@ -11551,12 +11524,12 @@ fi
for ac_func in _fpclass
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:11555: checking for $ac_func" >&5
+echo "configure:11528: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 11560 "configure"
+#line 11533 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -11579,7 +11552,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:11583: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11556: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -11607,7 +11580,7 @@ done
echo $ac_n "checking for _qfpclass declaration""... $ac_c" 1>&6
-echo "configure:11611: checking for _qfpclass declaration" >&5
+echo "configure:11584: checking for _qfpclass declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__qfpclass_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -11621,14 +11594,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 11625 "configure"
+#line 11598 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_qfpclass(0);
; return 0; }
EOF
-if { (eval echo configure:11632: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11605: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__qfpclass_use=yes
else
@@ -11653,12 +11626,12 @@ fi
for ac_func in _qfpclass
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:11657: checking for $ac_func" >&5
+echo "configure:11630: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 11662 "configure"
+#line 11635 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -11681,7 +11654,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:11685: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11658: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -11710,7 +11683,7 @@ done
echo $ac_n "checking for _isnanf declaration""... $ac_c" 1>&6
-echo "configure:11714: checking for _isnanf declaration" >&5
+echo "configure:11687: checking for _isnanf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__isnanf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -11724,14 +11697,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 11728 "configure"
+#line 11701 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_isnanf(0);
; return 0; }
EOF
-if { (eval echo configure:11735: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11708: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__isnanf_use=yes
else
@@ -11756,12 +11729,12 @@ fi
for ac_func in _isnanf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:11760: checking for $ac_func" >&5
+echo "configure:11733: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 11765 "configure"
+#line 11738 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -11784,7 +11757,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:11788: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11761: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -11812,7 +11785,7 @@ done
echo $ac_n "checking for _isinff declaration""... $ac_c" 1>&6
-echo "configure:11816: checking for _isinff declaration" >&5
+echo "configure:11789: checking for _isinff declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__isinff_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -11826,14 +11799,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 11830 "configure"
+#line 11803 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_isinff(0);
; return 0; }
EOF
-if { (eval echo configure:11837: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11810: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__isinff_use=yes
else
@@ -11858,12 +11831,12 @@ fi
for ac_func in _isinff
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:11862: checking for $ac_func" >&5
+echo "configure:11835: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 11867 "configure"
+#line 11840 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -11886,7 +11859,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:11890: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11863: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -11914,7 +11887,7 @@ done
echo $ac_n "checking for _acosf declaration""... $ac_c" 1>&6
-echo "configure:11918: checking for _acosf declaration" >&5
+echo "configure:11891: checking for _acosf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__acosf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -11928,14 +11901,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 11932 "configure"
+#line 11905 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_acosf(0);
; return 0; }
EOF
-if { (eval echo configure:11939: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11912: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__acosf_use=yes
else
@@ -11960,12 +11933,12 @@ fi
for ac_func in _acosf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:11964: checking for $ac_func" >&5
+echo "configure:11937: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 11969 "configure"
+#line 11942 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -11988,7 +11961,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:11992: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11965: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -12016,7 +11989,7 @@ done
echo $ac_n "checking for _asinf declaration""... $ac_c" 1>&6
-echo "configure:12020: checking for _asinf declaration" >&5
+echo "configure:11993: checking for _asinf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__asinf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -12030,14 +12003,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 12034 "configure"
+#line 12007 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_asinf(0);
; return 0; }
EOF
-if { (eval echo configure:12041: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12014: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__asinf_use=yes
else
@@ -12062,12 +12035,12 @@ fi
for ac_func in _asinf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:12066: checking for $ac_func" >&5
+echo "configure:12039: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 12071 "configure"
+#line 12044 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -12090,7 +12063,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:12094: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12067: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -12118,7 +12091,7 @@ done
echo $ac_n "checking for _atanf declaration""... $ac_c" 1>&6
-echo "configure:12122: checking for _atanf declaration" >&5
+echo "configure:12095: checking for _atanf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__atanf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -12132,14 +12105,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 12136 "configure"
+#line 12109 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_atanf(0);
; return 0; }
EOF
-if { (eval echo configure:12143: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12116: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__atanf_use=yes
else
@@ -12164,12 +12137,12 @@ fi
for ac_func in _atanf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:12168: checking for $ac_func" >&5
+echo "configure:12141: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 12173 "configure"
+#line 12146 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -12192,7 +12165,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:12196: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12169: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -12220,7 +12193,7 @@ done
echo $ac_n "checking for _atan2f declaration""... $ac_c" 1>&6
-echo "configure:12224: checking for _atan2f declaration" >&5
+echo "configure:12197: checking for _atan2f declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__atan2f_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -12234,14 +12207,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 12238 "configure"
+#line 12211 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_atan2f(0, 0);
; return 0; }
EOF
-if { (eval echo configure:12245: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12218: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__atan2f_use=yes
else
@@ -12266,12 +12239,12 @@ fi
for ac_func in _atan2f
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:12270: checking for $ac_func" >&5
+echo "configure:12243: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 12275 "configure"
+#line 12248 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -12294,7 +12267,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:12298: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12271: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -12322,7 +12295,7 @@ done
echo $ac_n "checking for _ceilf declaration""... $ac_c" 1>&6
-echo "configure:12326: checking for _ceilf declaration" >&5
+echo "configure:12299: checking for _ceilf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__ceilf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -12336,14 +12309,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 12340 "configure"
+#line 12313 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_ceilf(0);
; return 0; }
EOF
-if { (eval echo configure:12347: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12320: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__ceilf_use=yes
else
@@ -12368,12 +12341,12 @@ fi
for ac_func in _ceilf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:12372: checking for $ac_func" >&5
+echo "configure:12345: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 12377 "configure"
+#line 12350 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -12396,7 +12369,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:12400: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12373: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -12424,7 +12397,7 @@ done
echo $ac_n "checking for _cosf declaration""... $ac_c" 1>&6
-echo "configure:12428: checking for _cosf declaration" >&5
+echo "configure:12401: checking for _cosf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__cosf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -12438,14 +12411,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 12442 "configure"
+#line 12415 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_cosf(0);
; return 0; }
EOF
-if { (eval echo configure:12449: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12422: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__cosf_use=yes
else
@@ -12470,12 +12443,12 @@ fi
for ac_func in _cosf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:12474: checking for $ac_func" >&5
+echo "configure:12447: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 12479 "configure"
+#line 12452 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -12498,7 +12471,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:12502: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12475: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -12526,7 +12499,7 @@ done
echo $ac_n "checking for _coshf declaration""... $ac_c" 1>&6
-echo "configure:12530: checking for _coshf declaration" >&5
+echo "configure:12503: checking for _coshf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__coshf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -12540,14 +12513,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 12544 "configure"
+#line 12517 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_coshf(0);
; return 0; }
EOF
-if { (eval echo configure:12551: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12524: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__coshf_use=yes
else
@@ -12572,12 +12545,12 @@ fi
for ac_func in _coshf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:12576: checking for $ac_func" >&5
+echo "configure:12549: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 12581 "configure"
+#line 12554 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -12600,7 +12573,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:12604: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12577: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -12628,7 +12601,7 @@ done
echo $ac_n "checking for _expf declaration""... $ac_c" 1>&6
-echo "configure:12632: checking for _expf declaration" >&5
+echo "configure:12605: checking for _expf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__expf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -12642,14 +12615,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 12646 "configure"
+#line 12619 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_expf(0);
; return 0; }
EOF
-if { (eval echo configure:12653: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12626: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__expf_use=yes
else
@@ -12674,12 +12647,12 @@ fi
for ac_func in _expf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:12678: checking for $ac_func" >&5
+echo "configure:12651: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 12683 "configure"
+#line 12656 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -12702,7 +12675,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:12706: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12679: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -12730,7 +12703,7 @@ done
echo $ac_n "checking for _fabsf declaration""... $ac_c" 1>&6
-echo "configure:12734: checking for _fabsf declaration" >&5
+echo "configure:12707: checking for _fabsf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__fabsf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -12744,14 +12717,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 12748 "configure"
+#line 12721 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_fabsf(0);
; return 0; }
EOF
-if { (eval echo configure:12755: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12728: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__fabsf_use=yes
else
@@ -12776,12 +12749,12 @@ fi
for ac_func in _fabsf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:12780: checking for $ac_func" >&5
+echo "configure:12753: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 12785 "configure"
+#line 12758 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -12804,7 +12777,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:12808: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12781: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -12832,7 +12805,7 @@ done
echo $ac_n "checking for _floorf declaration""... $ac_c" 1>&6
-echo "configure:12836: checking for _floorf declaration" >&5
+echo "configure:12809: checking for _floorf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__floorf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -12846,14 +12819,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 12850 "configure"
+#line 12823 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_floorf(0);
; return 0; }
EOF
-if { (eval echo configure:12857: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12830: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__floorf_use=yes
else
@@ -12878,12 +12851,12 @@ fi
for ac_func in _floorf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:12882: checking for $ac_func" >&5
+echo "configure:12855: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 12887 "configure"
+#line 12860 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -12906,7 +12879,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:12910: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12883: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -12934,7 +12907,7 @@ done
echo $ac_n "checking for _fmodf declaration""... $ac_c" 1>&6
-echo "configure:12938: checking for _fmodf declaration" >&5
+echo "configure:12911: checking for _fmodf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__fmodf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -12948,14 +12921,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 12952 "configure"
+#line 12925 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_fmodf(0, 0);
; return 0; }
EOF
-if { (eval echo configure:12959: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12932: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__fmodf_use=yes
else
@@ -12980,12 +12953,12 @@ fi
for ac_func in _fmodf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:12984: checking for $ac_func" >&5
+echo "configure:12957: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 12989 "configure"
+#line 12962 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -13008,7 +12981,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:13012: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12985: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -13036,7 +13009,7 @@ done
echo $ac_n "checking for _frexpf declaration""... $ac_c" 1>&6
-echo "configure:13040: checking for _frexpf declaration" >&5
+echo "configure:13013: checking for _frexpf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__frexpf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -13050,14 +13023,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 13054 "configure"
+#line 13027 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_frexpf(0, 0);
; return 0; }
EOF
-if { (eval echo configure:13061: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:13034: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__frexpf_use=yes
else
@@ -13082,12 +13055,12 @@ fi
for ac_func in _frexpf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:13086: checking for $ac_func" >&5
+echo "configure:13059: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 13091 "configure"
+#line 13064 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -13110,7 +13083,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:13114: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13087: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -13138,7 +13111,7 @@ done
echo $ac_n "checking for _ldexpf declaration""... $ac_c" 1>&6
-echo "configure:13142: checking for _ldexpf declaration" >&5
+echo "configure:13115: checking for _ldexpf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__ldexpf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -13152,14 +13125,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 13156 "configure"
+#line 13129 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_ldexpf(0, 0);
; return 0; }
EOF
-if { (eval echo configure:13163: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:13136: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__ldexpf_use=yes
else
@@ -13184,12 +13157,12 @@ fi
for ac_func in _ldexpf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:13188: checking for $ac_func" >&5
+echo "configure:13161: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 13193 "configure"
+#line 13166 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -13212,7 +13185,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:13216: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13189: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -13240,7 +13213,7 @@ done
echo $ac_n "checking for _logf declaration""... $ac_c" 1>&6
-echo "configure:13244: checking for _logf declaration" >&5
+echo "configure:13217: checking for _logf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__logf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -13254,14 +13227,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 13258 "configure"
+#line 13231 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_logf(0);
; return 0; }
EOF
-if { (eval echo configure:13265: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:13238: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__logf_use=yes
else
@@ -13286,12 +13259,12 @@ fi
for ac_func in _logf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:13290: checking for $ac_func" >&5
+echo "configure:13263: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 13295 "configure"
+#line 13268 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -13314,7 +13287,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:13318: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13291: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -13342,7 +13315,7 @@ done
echo $ac_n "checking for _log10f declaration""... $ac_c" 1>&6
-echo "configure:13346: checking for _log10f declaration" >&5
+echo "configure:13319: checking for _log10f declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__log10f_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -13356,14 +13329,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 13360 "configure"
+#line 13333 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_log10f(0);
; return 0; }
EOF
-if { (eval echo configure:13367: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:13340: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__log10f_use=yes
else
@@ -13388,12 +13361,12 @@ fi
for ac_func in _log10f
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:13392: checking for $ac_func" >&5
+echo "configure:13365: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 13397 "configure"
+#line 13370 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -13416,7 +13389,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:13420: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13393: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -13444,7 +13417,7 @@ done
echo $ac_n "checking for _modff declaration""... $ac_c" 1>&6
-echo "configure:13448: checking for _modff declaration" >&5
+echo "configure:13421: checking for _modff declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__modff_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -13458,14 +13431,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 13462 "configure"
+#line 13435 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_modff(0, 0);
; return 0; }
EOF
-if { (eval echo configure:13469: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:13442: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__modff_use=yes
else
@@ -13490,12 +13463,12 @@ fi
for ac_func in _modff
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:13494: checking for $ac_func" >&5
+echo "configure:13467: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 13499 "configure"
+#line 13472 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -13518,7 +13491,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:13522: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13495: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -13546,7 +13519,7 @@ done
echo $ac_n "checking for _powf declaration""... $ac_c" 1>&6
-echo "configure:13550: checking for _powf declaration" >&5
+echo "configure:13523: checking for _powf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__powf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -13560,14 +13533,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 13564 "configure"
+#line 13537 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_powf(0, 0);
; return 0; }
EOF
-if { (eval echo configure:13571: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:13544: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__powf_use=yes
else
@@ -13592,12 +13565,12 @@ fi
for ac_func in _powf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:13596: checking for $ac_func" >&5
+echo "configure:13569: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 13601 "configure"
+#line 13574 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -13620,7 +13593,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:13624: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13597: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -13648,7 +13621,7 @@ done
echo $ac_n "checking for _sinf declaration""... $ac_c" 1>&6
-echo "configure:13652: checking for _sinf declaration" >&5
+echo "configure:13625: checking for _sinf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__sinf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -13662,14 +13635,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 13666 "configure"
+#line 13639 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_sinf(0);
; return 0; }
EOF
-if { (eval echo configure:13673: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:13646: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__sinf_use=yes
else
@@ -13694,12 +13667,12 @@ fi
for ac_func in _sinf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:13698: checking for $ac_func" >&5
+echo "configure:13671: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 13703 "configure"
+#line 13676 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -13722,7 +13695,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:13726: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13699: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -13750,7 +13723,7 @@ done
echo $ac_n "checking for _sinhf declaration""... $ac_c" 1>&6
-echo "configure:13754: checking for _sinhf declaration" >&5
+echo "configure:13727: checking for _sinhf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__sinhf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -13764,14 +13737,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 13768 "configure"
+#line 13741 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_sinhf(0);
; return 0; }
EOF
-if { (eval echo configure:13775: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:13748: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__sinhf_use=yes
else
@@ -13796,12 +13769,12 @@ fi
for ac_func in _sinhf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:13800: checking for $ac_func" >&5
+echo "configure:13773: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 13805 "configure"
+#line 13778 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -13824,7 +13797,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:13828: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13801: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -13852,7 +13825,7 @@ done
echo $ac_n "checking for _sqrtf declaration""... $ac_c" 1>&6
-echo "configure:13856: checking for _sqrtf declaration" >&5
+echo "configure:13829: checking for _sqrtf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__sqrtf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -13866,14 +13839,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 13870 "configure"
+#line 13843 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_sqrtf(0);
; return 0; }
EOF
-if { (eval echo configure:13877: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:13850: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__sqrtf_use=yes
else
@@ -13898,12 +13871,12 @@ fi
for ac_func in _sqrtf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:13902: checking for $ac_func" >&5
+echo "configure:13875: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 13907 "configure"
+#line 13880 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -13926,7 +13899,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:13930: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13903: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -13954,7 +13927,7 @@ done
echo $ac_n "checking for _tanf declaration""... $ac_c" 1>&6
-echo "configure:13958: checking for _tanf declaration" >&5
+echo "configure:13931: checking for _tanf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__tanf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -13968,14 +13941,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 13972 "configure"
+#line 13945 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_tanf(0);
; return 0; }
EOF
-if { (eval echo configure:13979: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:13952: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__tanf_use=yes
else
@@ -14000,12 +13973,12 @@ fi
for ac_func in _tanf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:14004: checking for $ac_func" >&5
+echo "configure:13977: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 14009 "configure"
+#line 13982 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -14028,7 +14001,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:14032: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14005: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -14056,7 +14029,7 @@ done
echo $ac_n "checking for _tanhf declaration""... $ac_c" 1>&6
-echo "configure:14060: checking for _tanhf declaration" >&5
+echo "configure:14033: checking for _tanhf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__tanhf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -14070,14 +14043,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 14074 "configure"
+#line 14047 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_tanhf(0);
; return 0; }
EOF
-if { (eval echo configure:14081: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:14054: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__tanhf_use=yes
else
@@ -14102,12 +14075,12 @@ fi
for ac_func in _tanhf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:14106: checking for $ac_func" >&5
+echo "configure:14079: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 14111 "configure"
+#line 14084 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -14130,7 +14103,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:14134: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14107: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -14158,7 +14131,7 @@ done
echo $ac_n "checking for _sincosf declaration""... $ac_c" 1>&6
-echo "configure:14162: checking for _sincosf declaration" >&5
+echo "configure:14135: checking for _sincosf declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__sincosf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -14172,14 +14145,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 14176 "configure"
+#line 14149 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_sincosf(0, 0, 0);
; return 0; }
EOF
-if { (eval echo configure:14183: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:14156: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__sincosf_use=yes
else
@@ -14204,12 +14177,12 @@ fi
for ac_func in _sincosf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:14208: checking for $ac_func" >&5
+echo "configure:14181: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 14213 "configure"
+#line 14186 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -14232,7 +14205,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:14236: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14209: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -14260,7 +14233,7 @@ done
echo $ac_n "checking for _finitef declaration""... $ac_c" 1>&6
-echo "configure:14264: checking for _finitef declaration" >&5
+echo "configure:14237: checking for _finitef declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__finitef_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -14274,14 +14247,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 14278 "configure"
+#line 14251 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_finitef(0);
; return 0; }
EOF
-if { (eval echo configure:14285: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:14258: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__finitef_use=yes
else
@@ -14306,12 +14279,12 @@ fi
for ac_func in _finitef
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:14310: checking for $ac_func" >&5
+echo "configure:14283: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 14315 "configure"
+#line 14288 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -14334,7 +14307,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:14338: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14311: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -14363,7 +14336,7 @@ done
echo $ac_n "checking for _isnanl declaration""... $ac_c" 1>&6
-echo "configure:14367: checking for _isnanl declaration" >&5
+echo "configure:14340: checking for _isnanl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__isnanl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -14377,14 +14350,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 14381 "configure"
+#line 14354 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_isnanl(0);
; return 0; }
EOF
-if { (eval echo configure:14388: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:14361: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__isnanl_use=yes
else
@@ -14409,12 +14382,12 @@ fi
for ac_func in _isnanl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:14413: checking for $ac_func" >&5
+echo "configure:14386: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 14418 "configure"
+#line 14391 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -14437,7 +14410,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:14441: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14414: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -14465,7 +14438,7 @@ done
echo $ac_n "checking for _isinfl declaration""... $ac_c" 1>&6
-echo "configure:14469: checking for _isinfl declaration" >&5
+echo "configure:14442: checking for _isinfl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__isinfl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -14479,14 +14452,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 14483 "configure"
+#line 14456 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_isinfl(0);
; return 0; }
EOF
-if { (eval echo configure:14490: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:14463: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__isinfl_use=yes
else
@@ -14511,12 +14484,12 @@ fi
for ac_func in _isinfl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:14515: checking for $ac_func" >&5
+echo "configure:14488: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 14520 "configure"
+#line 14493 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -14539,7 +14512,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:14543: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14516: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -14567,7 +14540,7 @@ done
echo $ac_n "checking for _copysignl declaration""... $ac_c" 1>&6
-echo "configure:14571: checking for _copysignl declaration" >&5
+echo "configure:14544: checking for _copysignl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__copysignl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -14581,14 +14554,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 14585 "configure"
+#line 14558 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_copysignl(0, 0);
; return 0; }
EOF
-if { (eval echo configure:14592: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:14565: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__copysignl_use=yes
else
@@ -14613,12 +14586,12 @@ fi
for ac_func in _copysignl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:14617: checking for $ac_func" >&5
+echo "configure:14590: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 14622 "configure"
+#line 14595 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -14641,7 +14614,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:14645: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14618: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -14669,7 +14642,7 @@ done
echo $ac_n "checking for _acosl declaration""... $ac_c" 1>&6
-echo "configure:14673: checking for _acosl declaration" >&5
+echo "configure:14646: checking for _acosl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__acosl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -14683,14 +14656,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 14687 "configure"
+#line 14660 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_acosl(0);
; return 0; }
EOF
-if { (eval echo configure:14694: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:14667: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__acosl_use=yes
else
@@ -14715,12 +14688,12 @@ fi
for ac_func in _acosl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:14719: checking for $ac_func" >&5
+echo "configure:14692: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 14724 "configure"
+#line 14697 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -14743,7 +14716,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:14747: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14720: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -14771,7 +14744,7 @@ done
echo $ac_n "checking for _asinl declaration""... $ac_c" 1>&6
-echo "configure:14775: checking for _asinl declaration" >&5
+echo "configure:14748: checking for _asinl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__asinl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -14785,14 +14758,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 14789 "configure"
+#line 14762 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_asinl(0);
; return 0; }
EOF
-if { (eval echo configure:14796: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:14769: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__asinl_use=yes
else
@@ -14817,12 +14790,12 @@ fi
for ac_func in _asinl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:14821: checking for $ac_func" >&5
+echo "configure:14794: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 14826 "configure"
+#line 14799 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -14845,7 +14818,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:14849: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14822: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -14873,7 +14846,7 @@ done
echo $ac_n "checking for _atanl declaration""... $ac_c" 1>&6
-echo "configure:14877: checking for _atanl declaration" >&5
+echo "configure:14850: checking for _atanl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__atanl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -14887,14 +14860,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 14891 "configure"
+#line 14864 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_atanl(0);
; return 0; }
EOF
-if { (eval echo configure:14898: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:14871: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__atanl_use=yes
else
@@ -14919,12 +14892,12 @@ fi
for ac_func in _atanl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:14923: checking for $ac_func" >&5
+echo "configure:14896: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 14928 "configure"
+#line 14901 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -14947,7 +14920,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:14951: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14924: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -14975,7 +14948,7 @@ done
echo $ac_n "checking for _atan2l declaration""... $ac_c" 1>&6
-echo "configure:14979: checking for _atan2l declaration" >&5
+echo "configure:14952: checking for _atan2l declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__atan2l_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -14989,14 +14962,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 14993 "configure"
+#line 14966 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_atan2l(0, 0);
; return 0; }
EOF
-if { (eval echo configure:15000: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:14973: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__atan2l_use=yes
else
@@ -15021,12 +14994,12 @@ fi
for ac_func in _atan2l
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:15025: checking for $ac_func" >&5
+echo "configure:14998: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 15030 "configure"
+#line 15003 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -15049,7 +15022,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:15053: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15026: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -15077,7 +15050,7 @@ done
echo $ac_n "checking for _ceill declaration""... $ac_c" 1>&6
-echo "configure:15081: checking for _ceill declaration" >&5
+echo "configure:15054: checking for _ceill declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__ceill_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -15091,14 +15064,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 15095 "configure"
+#line 15068 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_ceill(0);
; return 0; }
EOF
-if { (eval echo configure:15102: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:15075: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__ceill_use=yes
else
@@ -15123,12 +15096,12 @@ fi
for ac_func in _ceill
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:15127: checking for $ac_func" >&5
+echo "configure:15100: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 15132 "configure"
+#line 15105 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -15151,7 +15124,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:15155: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15128: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -15179,7 +15152,7 @@ done
echo $ac_n "checking for _cosl declaration""... $ac_c" 1>&6
-echo "configure:15183: checking for _cosl declaration" >&5
+echo "configure:15156: checking for _cosl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__cosl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -15193,14 +15166,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 15197 "configure"
+#line 15170 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_cosl(0);
; return 0; }
EOF
-if { (eval echo configure:15204: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:15177: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__cosl_use=yes
else
@@ -15225,12 +15198,12 @@ fi
for ac_func in _cosl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:15229: checking for $ac_func" >&5
+echo "configure:15202: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 15234 "configure"
+#line 15207 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -15253,7 +15226,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:15257: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15230: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -15281,7 +15254,7 @@ done
echo $ac_n "checking for _coshl declaration""... $ac_c" 1>&6
-echo "configure:15285: checking for _coshl declaration" >&5
+echo "configure:15258: checking for _coshl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__coshl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -15295,14 +15268,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 15299 "configure"
+#line 15272 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_coshl(0);
; return 0; }
EOF
-if { (eval echo configure:15306: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:15279: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__coshl_use=yes
else
@@ -15327,12 +15300,12 @@ fi
for ac_func in _coshl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:15331: checking for $ac_func" >&5
+echo "configure:15304: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 15336 "configure"
+#line 15309 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -15355,7 +15328,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:15359: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15332: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -15383,7 +15356,7 @@ done
echo $ac_n "checking for _expl declaration""... $ac_c" 1>&6
-echo "configure:15387: checking for _expl declaration" >&5
+echo "configure:15360: checking for _expl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__expl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -15397,14 +15370,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 15401 "configure"
+#line 15374 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_expl(0);
; return 0; }
EOF
-if { (eval echo configure:15408: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:15381: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__expl_use=yes
else
@@ -15429,12 +15402,12 @@ fi
for ac_func in _expl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:15433: checking for $ac_func" >&5
+echo "configure:15406: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 15438 "configure"
+#line 15411 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -15457,7 +15430,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:15461: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15434: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -15485,7 +15458,7 @@ done
echo $ac_n "checking for _fabsl declaration""... $ac_c" 1>&6
-echo "configure:15489: checking for _fabsl declaration" >&5
+echo "configure:15462: checking for _fabsl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__fabsl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -15499,14 +15472,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 15503 "configure"
+#line 15476 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_fabsl(0);
; return 0; }
EOF
-if { (eval echo configure:15510: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:15483: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__fabsl_use=yes
else
@@ -15531,12 +15504,12 @@ fi
for ac_func in _fabsl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:15535: checking for $ac_func" >&5
+echo "configure:15508: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 15540 "configure"
+#line 15513 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -15559,7 +15532,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:15563: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15536: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -15587,7 +15560,7 @@ done
echo $ac_n "checking for _floorl declaration""... $ac_c" 1>&6
-echo "configure:15591: checking for _floorl declaration" >&5
+echo "configure:15564: checking for _floorl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__floorl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -15601,14 +15574,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 15605 "configure"
+#line 15578 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_floorl(0);
; return 0; }
EOF
-if { (eval echo configure:15612: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:15585: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__floorl_use=yes
else
@@ -15633,12 +15606,12 @@ fi
for ac_func in _floorl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:15637: checking for $ac_func" >&5
+echo "configure:15610: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 15642 "configure"
+#line 15615 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -15661,7 +15634,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:15665: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15638: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -15689,7 +15662,7 @@ done
echo $ac_n "checking for _fmodl declaration""... $ac_c" 1>&6
-echo "configure:15693: checking for _fmodl declaration" >&5
+echo "configure:15666: checking for _fmodl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__fmodl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -15703,14 +15676,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 15707 "configure"
+#line 15680 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_fmodl(0, 0);
; return 0; }
EOF
-if { (eval echo configure:15714: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:15687: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__fmodl_use=yes
else
@@ -15735,12 +15708,12 @@ fi
for ac_func in _fmodl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:15739: checking for $ac_func" >&5
+echo "configure:15712: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 15744 "configure"
+#line 15717 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -15763,7 +15736,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:15767: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15740: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -15791,7 +15764,7 @@ done
echo $ac_n "checking for _frexpl declaration""... $ac_c" 1>&6
-echo "configure:15795: checking for _frexpl declaration" >&5
+echo "configure:15768: checking for _frexpl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__frexpl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -15805,14 +15778,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 15809 "configure"
+#line 15782 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_frexpl(0, 0);
; return 0; }
EOF
-if { (eval echo configure:15816: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:15789: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__frexpl_use=yes
else
@@ -15837,12 +15810,12 @@ fi
for ac_func in _frexpl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:15841: checking for $ac_func" >&5
+echo "configure:15814: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 15846 "configure"
+#line 15819 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -15865,7 +15838,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:15869: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15842: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -15893,7 +15866,7 @@ done
echo $ac_n "checking for _ldexpl declaration""... $ac_c" 1>&6
-echo "configure:15897: checking for _ldexpl declaration" >&5
+echo "configure:15870: checking for _ldexpl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__ldexpl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -15907,14 +15880,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 15911 "configure"
+#line 15884 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_ldexpl(0, 0);
; return 0; }
EOF
-if { (eval echo configure:15918: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:15891: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__ldexpl_use=yes
else
@@ -15939,12 +15912,12 @@ fi
for ac_func in _ldexpl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:15943: checking for $ac_func" >&5
+echo "configure:15916: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 15948 "configure"
+#line 15921 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -15967,7 +15940,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:15971: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15944: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -15995,7 +15968,7 @@ done
echo $ac_n "checking for _logl declaration""... $ac_c" 1>&6
-echo "configure:15999: checking for _logl declaration" >&5
+echo "configure:15972: checking for _logl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__logl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -16009,14 +15982,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 16013 "configure"
+#line 15986 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_logl(0);
; return 0; }
EOF
-if { (eval echo configure:16020: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:15993: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__logl_use=yes
else
@@ -16041,12 +16014,12 @@ fi
for ac_func in _logl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:16045: checking for $ac_func" >&5
+echo "configure:16018: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 16050 "configure"
+#line 16023 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -16069,7 +16042,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:16073: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16046: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -16097,7 +16070,7 @@ done
echo $ac_n "checking for _log10l declaration""... $ac_c" 1>&6
-echo "configure:16101: checking for _log10l declaration" >&5
+echo "configure:16074: checking for _log10l declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__log10l_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -16111,14 +16084,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 16115 "configure"
+#line 16088 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_log10l(0);
; return 0; }
EOF
-if { (eval echo configure:16122: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:16095: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__log10l_use=yes
else
@@ -16143,12 +16116,12 @@ fi
for ac_func in _log10l
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:16147: checking for $ac_func" >&5
+echo "configure:16120: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 16152 "configure"
+#line 16125 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -16171,7 +16144,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:16175: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16148: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -16199,7 +16172,7 @@ done
echo $ac_n "checking for _modfl declaration""... $ac_c" 1>&6
-echo "configure:16203: checking for _modfl declaration" >&5
+echo "configure:16176: checking for _modfl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__modfl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -16213,14 +16186,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 16217 "configure"
+#line 16190 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_modfl(0, 0);
; return 0; }
EOF
-if { (eval echo configure:16224: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:16197: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__modfl_use=yes
else
@@ -16245,12 +16218,12 @@ fi
for ac_func in _modfl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:16249: checking for $ac_func" >&5
+echo "configure:16222: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 16254 "configure"
+#line 16227 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -16273,7 +16246,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:16277: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -16301,7 +16274,7 @@ done
echo $ac_n "checking for _powl declaration""... $ac_c" 1>&6
-echo "configure:16305: checking for _powl declaration" >&5
+echo "configure:16278: checking for _powl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__powl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -16315,14 +16288,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 16319 "configure"
+#line 16292 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_powl(0, 0);
; return 0; }
EOF
-if { (eval echo configure:16326: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:16299: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__powl_use=yes
else
@@ -16347,12 +16320,12 @@ fi
for ac_func in _powl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:16351: checking for $ac_func" >&5
+echo "configure:16324: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 16356 "configure"
+#line 16329 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -16375,7 +16348,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:16379: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16352: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -16403,7 +16376,7 @@ done
echo $ac_n "checking for _sinl declaration""... $ac_c" 1>&6
-echo "configure:16407: checking for _sinl declaration" >&5
+echo "configure:16380: checking for _sinl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__sinl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -16417,14 +16390,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 16421 "configure"
+#line 16394 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_sinl(0);
; return 0; }
EOF
-if { (eval echo configure:16428: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:16401: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__sinl_use=yes
else
@@ -16449,12 +16422,12 @@ fi
for ac_func in _sinl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:16453: checking for $ac_func" >&5
+echo "configure:16426: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 16458 "configure"
+#line 16431 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -16477,7 +16450,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:16481: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16454: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -16505,7 +16478,7 @@ done
echo $ac_n "checking for _sinhl declaration""... $ac_c" 1>&6
-echo "configure:16509: checking for _sinhl declaration" >&5
+echo "configure:16482: checking for _sinhl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__sinhl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -16519,14 +16492,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 16523 "configure"
+#line 16496 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_sinhl(0);
; return 0; }
EOF
-if { (eval echo configure:16530: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:16503: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__sinhl_use=yes
else
@@ -16551,12 +16524,12 @@ fi
for ac_func in _sinhl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:16555: checking for $ac_func" >&5
+echo "configure:16528: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 16560 "configure"
+#line 16533 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -16579,7 +16552,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:16583: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16556: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -16607,7 +16580,7 @@ done
echo $ac_n "checking for _sqrtl declaration""... $ac_c" 1>&6
-echo "configure:16611: checking for _sqrtl declaration" >&5
+echo "configure:16584: checking for _sqrtl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__sqrtl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -16621,14 +16594,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 16625 "configure"
+#line 16598 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_sqrtl(0);
; return 0; }
EOF
-if { (eval echo configure:16632: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:16605: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__sqrtl_use=yes
else
@@ -16653,12 +16626,12 @@ fi
for ac_func in _sqrtl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:16657: checking for $ac_func" >&5
+echo "configure:16630: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 16662 "configure"
+#line 16635 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -16681,7 +16654,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:16685: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16658: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -16709,7 +16682,7 @@ done
echo $ac_n "checking for _tanl declaration""... $ac_c" 1>&6
-echo "configure:16713: checking for _tanl declaration" >&5
+echo "configure:16686: checking for _tanl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__tanl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -16723,14 +16696,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 16727 "configure"
+#line 16700 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_tanl(0);
; return 0; }
EOF
-if { (eval echo configure:16734: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:16707: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__tanl_use=yes
else
@@ -16755,12 +16728,12 @@ fi
for ac_func in _tanl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:16759: checking for $ac_func" >&5
+echo "configure:16732: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 16764 "configure"
+#line 16737 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -16783,7 +16756,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:16787: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16760: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -16811,7 +16784,7 @@ done
echo $ac_n "checking for _tanhl declaration""... $ac_c" 1>&6
-echo "configure:16815: checking for _tanhl declaration" >&5
+echo "configure:16788: checking for _tanhl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__tanhl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -16825,14 +16798,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 16829 "configure"
+#line 16802 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_tanhl(0);
; return 0; }
EOF
-if { (eval echo configure:16836: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:16809: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__tanhl_use=yes
else
@@ -16857,12 +16830,12 @@ fi
for ac_func in _tanhl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:16861: checking for $ac_func" >&5
+echo "configure:16834: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 16866 "configure"
+#line 16839 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -16885,7 +16858,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:16889: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16862: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -16913,7 +16886,7 @@ done
echo $ac_n "checking for _sincosl declaration""... $ac_c" 1>&6
-echo "configure:16917: checking for _sincosl declaration" >&5
+echo "configure:16890: checking for _sincosl declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__sincosl_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -16927,14 +16900,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 16931 "configure"
+#line 16904 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_sincosl(0, 0, 0);
; return 0; }
EOF
-if { (eval echo configure:16938: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:16911: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__sincosl_use=yes
else
@@ -16959,12 +16932,12 @@ fi
for ac_func in _sincosl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:16963: checking for $ac_func" >&5
+echo "configure:16936: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 16968 "configure"
+#line 16941 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -16987,7 +16960,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:16991: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16964: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -17015,7 +16988,7 @@ done
echo $ac_n "checking for _finitel declaration""... $ac_c" 1>&6
-echo "configure:17019: checking for _finitel declaration" >&5
+echo "configure:16992: checking for _finitel declaration" >&5
if eval "test \"`echo '$''{'glibcpp_cv_func__finitel_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -17029,14 +17002,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 17033 "configure"
+#line 17006 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_finitel(0);
; return 0; }
EOF
-if { (eval echo configure:17040: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:17013: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__finitel_use=yes
else
@@ -17061,12 +17034,12 @@ fi
for ac_func in _finitel
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:17065: checking for $ac_func" >&5
+echo "configure:17038: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 17070 "configure"
+#line 17043 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -17089,7 +17062,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:17093: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17066: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -17124,17 +17097,17 @@ done
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:17128: checking for $ac_hdr" >&5
+echo "configure:17101: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 17133 "configure"
+#line 17106 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:17138: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:17111: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -17165,12 +17138,12 @@ done
ctan ctanf ctanh ctanhf carg cargf nan hypot hypotf atan2f expf copysignf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:17169: checking for $ac_func" >&5
+echo "configure:17142: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 17174 "configure"
+#line 17147 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -17193,7 +17166,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:17197: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17170: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -17228,12 +17201,12 @@ done
csqrtl ctanhl ctanl cargl hypotl signbitl c_logl clog10l
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:17232: checking for $ac_func" >&5
+echo "configure:17205: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 17237 "configure"
+#line 17210 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -17256,7 +17229,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:17260: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17233: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -17290,7 +17263,7 @@ done
echo $ac_n "checking for GNU C++ __complex__ support""... $ac_c" 1>&6
-echo "configure:17294: checking for GNU C++ __complex__ support" >&5
+echo "configure:17267: checking for GNU C++ __complex__ support" >&5
if eval "test \"`echo '$''{'glibcpp_cv_complex'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -17304,7 +17277,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 17308 "configure"
+#line 17281 "configure"
#include "confdefs.h"
struct dcomplex { __complex__ double x; }; \
dcomplex f(const dcomplex& x) { return dcomplex(x); }
@@ -17313,7 +17286,7 @@ int main() {
dcomplex x; f(x);
; return 0; }
EOF
-if { (eval echo configure:17317: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:17290: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_complex=ok
else
@@ -17343,7 +17316,7 @@ EOF
fi
echo $ac_n "checking for GNU C++ __complex__ float support""... $ac_c" 1>&6
-echo "configure:17347: checking for GNU C++ __complex__ float support" >&5
+echo "configure:17320: checking for GNU C++ __complex__ float support" >&5
if eval "test \"`echo '$''{'glibcpp_cv_float_complex'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -17376,14 +17349,14 @@ cross_compiling=$ac_cv_prog_cxx_cross
};
EOB
cat > conftest.$ac_ext <<EOF
-#line 17380 "configure"
+#line 17353 "configure"
#include "confdefs.h"
#include "conftest.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:17387: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:17360: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_float_complex=ok
else
@@ -17463,17 +17436,17 @@ rm -f confcache
ac_safe=`echo "wchar.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for wchar.h""... $ac_c" 1>&6
-echo "configure:17467: checking for wchar.h" >&5
+echo "configure:17440: checking for wchar.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 17472 "configure"
+#line 17445 "configure"
#include "confdefs.h"
#include <wchar.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:17477: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:17450: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -17497,17 +17470,17 @@ fi
ac_safe=`echo "wctype.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for wctype.h""... $ac_c" 1>&6
-echo "configure:17501: checking for wctype.h" >&5
+echo "configure:17474: checking for wctype.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 17506 "configure"
+#line 17479 "configure"
#include "confdefs.h"
#include <wctype.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:17511: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:17484: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -17533,16 +17506,16 @@ fi
if test x"$ac_has_wchar_h" = xyes && test x"$ac_has_wctype_h" = xyes; then
echo $ac_n "checking for mbstate_t""... $ac_c" 1>&6
-echo "configure:17537: checking for mbstate_t" >&5
+echo "configure:17510: checking for mbstate_t" >&5
cat > conftest.$ac_ext <<EOF
-#line 17539 "configure"
+#line 17512 "configure"
#include "confdefs.h"
#include <wchar.h>
int main() {
mbstate_t teststate;
; return 0; }
EOF
-if { (eval echo configure:17546: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:17519: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
use_native_mbstatet=yes
else
@@ -17561,16 +17534,16 @@ EOF
fi
echo $ac_n "checking for WCHAR_MIN and WCHAR_MAX""... $ac_c" 1>&6
-echo "configure:17565: checking for WCHAR_MIN and WCHAR_MAX" >&5
+echo "configure:17538: checking for WCHAR_MIN and WCHAR_MAX" >&5
cat > conftest.$ac_ext <<EOF
-#line 17567 "configure"
+#line 17540 "configure"
#include "confdefs.h"
#include <wchar.h>
int main() {
int i = WCHAR_MIN; int j = WCHAR_MAX;
; return 0; }
EOF
-if { (eval echo configure:17574: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:17547: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
has_wchar_minmax=yes
else
@@ -17583,9 +17556,9 @@ rm -f conftest*
echo "$ac_t""$has_wchar_minmax" 1>&6
echo $ac_n "checking for WEOF""... $ac_c" 1>&6
-echo "configure:17587: checking for WEOF" >&5
+echo "configure:17560: checking for WEOF" >&5
cat > conftest.$ac_ext <<EOF
-#line 17589 "configure"
+#line 17562 "configure"
#include "confdefs.h"
#include <wchar.h>
@@ -17594,7 +17567,7 @@ int main() {
wint_t i = WEOF;
; return 0; }
EOF
-if { (eval echo configure:17598: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:17571: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
has_weof=yes
else
@@ -17610,12 +17583,12 @@ rm -f conftest*
wcsrtombs mbsrtowcs
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:17614: checking for $ac_func" >&5
+echo "configure:17587: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 17619 "configure"
+#line 17592 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -17638,7 +17611,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:17642: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17615: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -17665,7 +17638,7 @@ done
echo $ac_n "checking for ISO C9X wchar_t support""... $ac_c" 1>&6
-echo "configure:17669: checking for ISO C9X wchar_t support" >&5
+echo "configure:17642: checking for ISO C9X wchar_t support" >&5
if test x"$has_weof" = xyes && test x"$has_wchar_minmax" = xyes \
&& test x"$ac_wfuncs" = xyes; then
ac_isoC9X_wchar_t=yes
@@ -17676,17 +17649,17 @@ echo "configure:17669: checking for ISO C9X wchar_t support" >&5
ac_safe=`echo "iconv.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for iconv.h""... $ac_c" 1>&6
-echo "configure:17680: checking for iconv.h" >&5
+echo "configure:17653: checking for iconv.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 17685 "configure"
+#line 17658 "configure"
#include "confdefs.h"
#include <iconv.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:17690: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:17663: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -17710,17 +17683,17 @@ fi
ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6
-echo "configure:17714: checking for langinfo.h" >&5
+echo "configure:17687: checking for langinfo.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 17719 "configure"
+#line 17692 "configure"
#include "confdefs.h"
#include <langinfo.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:17724: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:17697: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -17745,12 +17718,12 @@ fi
for ac_func in iconv_open iconv_close iconv nl_langinfo
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:17749: checking for $ac_func" >&5
+echo "configure:17722: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 17754 "configure"
+#line 17727 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -17773,7 +17746,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:17777: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17750: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -17801,7 +17774,7 @@ done
echo $ac_n "checking for XPG2 wchar_t support""... $ac_c" 1>&6
-echo "configure:17805: checking for XPG2 wchar_t support" >&5
+echo "configure:17778: checking for XPG2 wchar_t support" >&5
if test x"$ac_has_iconv_h" = xyes && test x"$ac_has_langinfo_h" = xyes \
&& test x"$ac_XPG2funcs" = xyes; then
ac_XPG2_wchar_t=yes
@@ -17811,7 +17784,7 @@ echo "configure:17805: checking for XPG2 wchar_t support" >&5
echo "$ac_t""$ac_XPG2_wchar_t" 1>&6
echo $ac_n "checking for enabled wchar_t specializations""... $ac_c" 1>&6
-echo "configure:17815: checking for enabled wchar_t specializations" >&5
+echo "configure:17788: checking for enabled wchar_t specializations" >&5
if test x"$ac_isoC9X_wchar_t" = xyes \
&& test x"$ac_XPG2_wchar_t" = xyes; then
libinst_wstring_la="libinst-wstring.la"
@@ -17837,17 +17810,17 @@ EOF
ac_safe=`echo "ctype.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for ctype.h""... $ac_c" 1>&6
-echo "configure:17841: checking for ctype.h" >&5
+echo "configure:17814: checking for ctype.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 17846 "configure"
+#line 17819 "configure"
#include "confdefs.h"
#include <ctype.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:17851: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:17824: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -17868,9 +17841,9 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
ctype_default=yes
echo $ac_n "checking <ctype> for gnu-linux ""... $ac_c" 1>&6
-echo "configure:17872: checking <ctype> for gnu-linux " >&5
+echo "configure:17845: checking <ctype> for gnu-linux " >&5
cat > conftest.$ac_ext <<EOF
-#line 17874 "configure"
+#line 17847 "configure"
#include "confdefs.h"
#include <ctype.h>
int main() {
@@ -17881,7 +17854,7 @@ int
+ __ctype_tolower[a] + __ctype_toupper[a] + __ctype_b[a];}
; return 0; }
EOF
-if { (eval echo configure:17885: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:17858: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
\
ctype_linux=yes
@@ -17900,9 +17873,9 @@ rm -f conftest*
if test $ctype_default = "yes"; then
echo $ac_n "checking <ctype> for freebsd 4.0 ""... $ac_c" 1>&6
-echo "configure:17904: checking <ctype> for freebsd 4.0 " >&5
+echo "configure:17877: checking <ctype> for freebsd 4.0 " >&5
cat > conftest.$ac_ext <<EOF
-#line 17906 "configure"
+#line 17879 "configure"
#include "confdefs.h"
#include <ctype.h>
int main() {
@@ -17912,7 +17885,7 @@ int
+ _CTYPE_D + _CTYPE_P + _CTYPE_X + _CTYPE_G ;}
; return 0; }
EOF
-if { (eval echo configure:17916: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:17889: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
\
ctype_bsd=yes
@@ -17932,9 +17905,9 @@ rm -f conftest*
if test $ctype_default = "yes"; then
echo $ac_n "checking <ctype> for freebsd 3.4 ""... $ac_c" 1>&6
-echo "configure:17936: checking <ctype> for freebsd 3.4 " >&5
+echo "configure:17909: checking <ctype> for freebsd 3.4 " >&5
cat > conftest.$ac_ext <<EOF
-#line 17938 "configure"
+#line 17911 "configure"
#include "confdefs.h"
#include <ctype.h>
int main() {
@@ -17944,7 +17917,7 @@ int
+ _D + _P + _X + _G + __istype (a, 0);}
; return 0; }
EOF
-if { (eval echo configure:17948: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:17921: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
\
ctype_freebsd34=yes
@@ -17964,9 +17937,9 @@ rm -f conftest*
if test $ctype_default = "yes"; then
echo $ac_n "checking <ctype> for solaris 2.6,7,8 ""... $ac_c" 1>&6
-echo "configure:17968: checking <ctype> for solaris 2.6,7,8 " >&5
+echo "configure:17941: checking <ctype> for solaris 2.6,7,8 " >&5
cat > conftest.$ac_ext <<EOF
-#line 17970 "configure"
+#line 17943 "configure"
#include "confdefs.h"
#include <ctype.h>
int main() {
@@ -17977,7 +17950,7 @@ int
+ __trans_lower[a] + __trans_upper[a] + __ctype_mask[a];}
; return 0; }
EOF
-if { (eval echo configure:17981: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:17954: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
\
ctype_solaris=yes
@@ -17992,7 +17965,7 @@ rm -f conftest*
if test $ctype_solaris = "yes"; then
echo $ac_n "checking for version""... $ac_c" 1>&6
-echo "configure:17996: checking for version" >&5
+echo "configure:17969: checking for version" >&5
ac_ext=C
# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
ac_cpp='$CXXCPP $CPPFLAGS'
@@ -18001,14 +17974,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 18005 "configure"
+#line 17978 "configure"
#include "confdefs.h"
#include <ctype.h>
int main() {
typedef long* __to_type; __to_type const& _M_toupper = __trans_upper;
; return 0; }
EOF
-if { (eval echo configure:18012: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:17985: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
\
ctype_solaris26=yes
@@ -18040,9 +18013,9 @@ cross_compiling=$ac_cv_prog_cc_cross
if test $ctype_default = "yes"; then
echo $ac_n "checking <ctype> for solaris 2.5.1 ""... $ac_c" 1>&6
-echo "configure:18044: checking <ctype> for solaris 2.5.1 " >&5
+echo "configure:18017: checking <ctype> for solaris 2.5.1 " >&5
cat > conftest.$ac_ext <<EOF
-#line 18046 "configure"
+#line 18019 "configure"
#include "confdefs.h"
#include <ctype.h>
int main() {
@@ -18052,7 +18025,7 @@ int
+ __ctype[a];}
; return 0; }
EOF
-if { (eval echo configure:18056: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:18029: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
\
ctype_solaris25=yes
@@ -18072,9 +18045,9 @@ rm -f conftest*
if test $ctype_default = "yes"; then
echo $ac_n "checking <ctype> for aix ""... $ac_c" 1>&6
-echo "configure:18076: checking <ctype> for aix " >&5
+echo "configure:18049: checking <ctype> for aix " >&5
cat > conftest.$ac_ext <<EOF
-#line 18078 "configure"
+#line 18051 "configure"
#include "confdefs.h"
#include <ctype.h>
int main() {
@@ -18085,7 +18058,7 @@ int
+ _VALC('a') + _IS('c', 0);}
; return 0; }
EOF
-if { (eval echo configure:18089: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:18062: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
\
ctype_aix=yes
@@ -18105,9 +18078,9 @@ rm -f conftest*
if test $ctype_default = "yes"; then
echo $ac_n "checking <ctype> for newlib ""... $ac_c" 1>&6
-echo "configure:18109: checking <ctype> for newlib " >&5
+echo "configure:18082: checking <ctype> for newlib " >&5
cat > conftest.$ac_ext <<EOF
-#line 18111 "configure"
+#line 18084 "configure"
#include "confdefs.h"
#include <ctype.h>
int main() {
@@ -18117,7 +18090,7 @@ int
+ _ctype_[a];}
; return 0; }
EOF
-if { (eval echo configure:18121: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:18094: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
\
ctype_newlib=yes
@@ -18151,17 +18124,17 @@ fi
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:18155: checking for $ac_hdr" >&5
+echo "configure:18128: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 18160 "configure"
+#line 18133 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:18165: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:18138: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -18190,12 +18163,12 @@ done
for ac_func in getpagesize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:18194: checking for $ac_func" >&5
+echo "configure:18167: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 18199 "configure"
+#line 18172 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -18218,7 +18191,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:18222: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18195: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -18243,7 +18216,7 @@ fi
done
echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:18247: checking for working mmap" >&5
+echo "configure:18220: checking for working mmap" >&5
if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -18251,7 +18224,7 @@ else
ac_cv_func_mmap_fixed_mapped=no
else
cat > conftest.$ac_ext <<EOF
-#line 18255 "configure"
+#line 18228 "configure"
#include "confdefs.h"
/* Thanks to Mike Haertel and Jim Avera for this test.
@@ -18391,7 +18364,7 @@ main()
}
EOF
-if { (eval echo configure:18395: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:18368: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_mmap_fixed_mapped=yes
else
@@ -18454,19 +18427,19 @@ fi
if test $ac_cv_header_locale_h = yes; then
echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:18458: checking for LC_MESSAGES" >&5
+echo "configure:18431: checking for LC_MESSAGES" >&5
if eval "test \"`echo '$''{'ac_cv_val_LC_MESSAGES'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 18463 "configure"
+#line 18436 "configure"
#include "confdefs.h"
#include <locale.h>
int main() {
return LC_MESSAGES
; return 0; }
EOF
-if { (eval echo configure:18470: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18443: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_val_LC_MESSAGES=yes
else
diff --git a/libstdc++-v3/configure.in b/libstdc++-v3/configure.in
index 2f394259a52..9e31f0e5192 100644
--- a/libstdc++-v3/configure.in
+++ b/libstdc++-v3/configure.in
@@ -31,7 +31,7 @@ GLIBCPP_CHECK_CPU
AC_CACHE_SAVE
# Enable all the crazy c++ stuff.
-GLIBCPP_ENABLE_DEBUG
+GLIBCPP_ENABLE_DEBUG($USE_MAINTAINER_MODE)
GLIBCPP_ENABLE_CSTDIO
GLIBCPP_ENABLE_LONG_LONG(yes)
GLIBCPP_ENABLE_SHADOW(no)
diff --git a/libstdc++-v3/docs/17_intro/porting-howto.html b/libstdc++-v3/docs/17_intro/porting-howto.html
index 4e6422e67c1..54290b328c2 100644
--- a/libstdc++-v3/docs/17_intro/porting-howto.html
+++ b/libstdc++-v3/docs/17_intro/porting-howto.html
@@ -34,11 +34,17 @@
+ second upload to libstdc++-page.
</td>
</tr>
+ <tr>
+ <td align="left">Revision 0.9</td><td align="left">Wed Sep 6 02:59:32 2000</td><td align="left">fnatter</td>
+ </tr>
+ <tr>
+ <td colspan="3" align="left">5 new sections.</td>
+ </tr>
</table>
</div>
<div class="abstract">
<p>
- <a name="N2672"></a><b>Abstract</b>
+ <a name="N2688"></a><b>Abstract</b>
</p>
<p>
Some notes on porting applications from libstdc++-2.90 (or earlier
@@ -97,7 +103,19 @@
Libc-macros (i.e. <b>isspace</b> from
<tt>&lt;cctype&gt;</tt>)</a>
</dt>
- <dt>7. <a href="#sec-about">About...</a>
+ <dt>7. <a href="#sec-stream-state">
+ State of streams
+ </a>
+ </dt>
+ <dt>8. <a href="#sec-vector-at">vector::at is missing (i.e. gcc 2.95.2)</a>
+ </dt>
+ <dt>9. <a href="#sec-eof">Using std::char_traits&lt;char&gt;::eof()</a>
+ </dt>
+ <dt>10. <a href="#sec-string-clear">Using string::clear()/string::erase()</a>
+ </dt>
+ <dt>11. <a href="#sec-stringstream">Using stringstream's</a>
+ </dt>
+ <dt>12. <a href="#sec-about">About...</a>
</dt>
</dl>
</div>
@@ -119,14 +137,14 @@
<div class="itemizedlist">
<ul>
<li>
- <a name="N2696"></a>
+ <a name="N2712"></a>
<p>wrap your code in <b>namespace std {
... }</b> =&gt; This is not an option because only symbols
from the standard c++-library are defined in namespace std::.
</p>
</li>
<li>
- <a name="N2705"></a>
+ <a name="N2721"></a>
<p>put a kind of
<i>using-declaration</i> in your source (either
<b>using namespace std;</b> or i.e. <b>using
@@ -135,7 +153,7 @@
</p>
</li>
<li>
- <a name="N2720"></a>
+ <a name="N2736"></a>
<p>use a <i>fully qualified name</i> for
each libstdc++-symbol (i.e. <b>std::string</b>,
<b>std::cout</b>) =&gt; can always be used
@@ -240,7 +258,7 @@
</p>
<div class="table">
<p>
- <a name="N2885"></a><b>Table 1. Namespace std:: in Open-Source programs</b>
+ <a name="N2901"></a><b>Table 1. Namespace std:: in Open-Source programs</b>
</p>
<table border="1">
<colgroup>
@@ -269,7 +287,7 @@
</div>
<div class="table">
<p>
- <a name="N2962"></a><b>Table 2. Notations for categories</b>
+ <a name="N2978"></a><b>Table 2. Notations for categories</b>
</p>
<table border="1">
<colgroup>
@@ -295,8 +313,7 @@
<p>
As you can see, this currently lacks an example of a project which
uses libstdc++-symbols in headers in a back-portable way (except
- for Gtk--: see the <a href="#sec-gtkmm-hack">section on the Gtk-- hack
- </a>).
+ for Gtk--: see the <a href="#"></a>).
</p>
</div>
</div>
@@ -328,10 +345,10 @@
</h2>
<p>
When using libstdc++-v3, you can use
- <div id="N3066" class="funcsynopsis">
+ <div id="N3082" class="funcsynopsis">
<p>
</p>
- <a name="N3066"></a>
+ <a name="N3082"></a>
<pre class="funcsynopsisinfo">
#include &lt;fstream&gt;
</pre>
@@ -412,7 +429,7 @@
<div class="itemizedlist">
<ul>
<li>
- <a name="N3266"></a>
+ <a name="N3282"></a>
<p>you cannot do
<b>ostream::operator&lt;&lt;(iterator)</b> to
print the address of the iterator =&gt; use
@@ -420,14 +437,14 @@
</p>
</li>
<li>
- <a name="N3287"></a>
+ <a name="N3303"></a>
<p>you cannot clear an iterator's reference
(<b>iterator = 0</b>) =&gt; use
<b>iterator = iterator_type();</b> ?
</p>
</li>
<li>
- <a name="N3300"></a>
+ <a name="N3316"></a>
<p>
<b>if (iterator)</b> won't work any
more =&gt; use <b>if (iterator != iterator_type())</b>
@@ -446,7 +463,7 @@
<p>
Glibc 2.0.x and 2.1.x define the <tt>&lt;ctype.h&gt;</tt> -functionality as
macros (isspace, isalpha etc.). Libstdc++-v3 "shadows" these macros
- as described in the <a href="#sec-cheaders">section on C-headers</a>.
+ as described in the <a href="#"></a>.
</p>
<p>
Older implementations of libstdc++ (g++-2 for egcs 1.x and g++-3
@@ -499,9 +516,204 @@
"
</p>
</div>
+ <div class="section" id="sec-stream-state">
+ <h2 class="title" style="clear: all">
+ <a name="sec-stream-state"><b>7.
+ State of streams
+ </b></a>
+ </h2>
+ <p>
+ At least some older implementations don't have
+ <b>std::ios_base</b>, so you should use
+ <b>std::ios::badbit</b>, <b>std::ios::failbit</b>
+ and <b>std::ios::eofbit</b> and
+ <b>std::ios::goodbit</b>.
+ </p>
+ </div>
+ <div class="section" id="sec-vector-at">
+ <h2 class="title" style="clear: all">
+ <a name="sec-vector-at"><b>8. vector::at is missing (i.e. gcc 2.95.2)</b></a>
+ </h2>
+ <p>
+ For my use, I added it to
+ <tt>prefix/include/g++-3/stl_vector.h</tt>:
+ <pre class="programlisting">
+ reference operator[](size_type __n) { return *(begin() + __n); }
+ reference at(size_type __n) {
+ if (begin() + __n &gt;= end())
+ throw out_of_range("vector::at");
+ return *(begin() + __n);
+ }
+ const_reference operator[](size_type __n) const { return *(begin() + __n); }
+ const_reference at(size_type __n) const {
+ if (begin() + __n &gt;= end())
+ throw out_of_range("vector::at");
+ return *(begin() + __n);
+ }
+ </pre>
+ </p>
+ </div>
+ <div class="section" id="sec-eof">
+ <h2 class="title" style="clear: all">
+ <a name="sec-eof"><b>9. Using std::char_traits&lt;char&gt;::eof()</b></a>
+ </h2>
+ <p>
+ <pre class="programlisting">
+ #ifdef HAVE_CHAR_TRAITS
+ #define CPP_EOF std::char_traits&lt;char&gt;::eof()
+ #else
+ #define CPP_EOF EOF
+ #endif
+ </pre>
+ </p>
+ </div>
+ <div class="section" id="sec-string-clear">
+ <h2 class="title" style="clear: all">
+ <a name="sec-string-clear"><b>10. Using string::clear()/string::erase()</b></a>
+ </h2>
+ <p>
+ There are two functions for deleting the contents of a string:
+ <b>clear</b> and <b>erase</b> (the latter
+ returns the string).
+ <pre class="programlisting">
+ void
+ clear() { _M_mutate(0, this-&gt;size(), 0); }
+ </pre>
+ <pre class="programlisting">
+ basic_string&amp;
+ erase(size_type __pos = 0, size_type __n = npos)
+ {
+ return this-&gt;replace(_M_check(__pos), _M_fold(__pos, __n),
+ _M_data(), _M_data());
+ }
+ </pre>
+ The implementation of <b>erase</b> seems to be more
+ complicated (from libstdc++-v3), but <b>clear</b> is not
+ implemented in gcc 2.95.2's libstdc++, so you should use
+ <b>erase</b> (which is probably faster than
+ <b>operator=(charT*)</b>).
+ </p>
+ </div>
+ <div class="section" id="sec-stringstream">
+ <h2 class="title" style="clear: all">
+ <a name="sec-stringstream"><b>11. Using stringstream's</b></a>
+ </h2>
+ <p>
+ Libstdc++-v3 includes the new
+ <b>i/ostringstream</b>-classes, (<tt>&lt;sstream&gt;</tt>), but with older
+ implementations you still have to use <b>i/ostrstream</b>
+ (<tt>&lt;strstream&gt;</tt>):
+ <pre class="programlisting">
+ #ifdef HAVE_SSTREAM
+ #include &lt;sstream&gt;
+ #else
+ #include &lt;strstream&gt;
+ #endif
+ </pre>
+ <div class="itemizedlist">
+ <ul>
+ <li>
+ <a name="N3595"></a>
+ <p> <b>strstream</b> is considered to be
+ deprecated
+ </p>
+ </li>
+ <li>
+ <a name="N3603"></a>
+ <p> <b>strstream</b> is limited to
+ <b>char</b>
+ </p>
+ </li>
+ <li>
+ <a name="N3614"></a>
+ <p> with <b>ostringstream</b> you don't
+ have to take care of terminating the string or freeing its
+ memory
+ </p>
+ </li>
+ <li>
+ <a name="N3622"></a>
+ <p> <b>istringstream</b> can be re-filled
+ (clear(); str(input);)
+ </p>
+ </li>
+ </ul>
+ </div>
+ </p>
+ <p>
+ You can then use output-stringstreams like this:
+ <pre class="programlisting">
+ #ifdef HAVE_SSTREAM
+ std::ostringstream oss;
+ #else
+ std::ostrstream oss;
+ #endif
+ oss &lt;&lt; "Name=" &lt;&lt; m_name &lt;&lt; ", number=" &lt;&lt; m_number &lt;&lt; std::endl;
+ ...
+ #ifndef HAVE_SSTREAM
+ oss &lt;&lt; std::ends; // terminate the char*-string
+ #endif
+ // str() returns char* for ostrstream and a string for ostringstream
+ // this also causes ostrstream to think that the buffer's memory
+ // is yours
+ m_label.set_text(oss.str());
+ #ifndef HAVE_SSTREAM
+ // let the ostrstream take care of freeing the memory
+ oss.freeze(false);
+ #endif
+ </pre>
+ </p>
+ <p>
+ Input-stringstreams can be used similarly:
+ <pre class="programlisting">
+ std::string input;
+ ...
+ #ifdef HAVE_SSTREAM
+ std::istringstream iss(input);
+ #else
+ std::istrstream iss(input.c_str());
+ #endif
+ int i;
+ iss &gt;&gt; i;
+ </pre>
+ One (the only?) restriction is that an istrstream cannot be re-filled:
+ <pre class="programlisting">
+ std::istringstream iss(numerator);
+ iss &gt;&gt; m_num;
+ // this is not possible with istrstream
+ iss.clear();
+ iss.str(denominator);
+ iss &gt;&gt; m_den;
+ </pre>
+ If you don't care about speed, you can put these conversions in
+ a template-function:
+ <pre class="programlisting">
+ template &lt;class X&gt;
+ void fromString(const string&amp; input, X&amp; any)
+ {
+ #ifdef HAVE_SSTREAM
+ std::istringstream iss(input);
+ #else
+ std::istrstream iss(input.c_str());
+ #endif
+ X temp;
+ iss &gt;&gt; temp;
+ if (iss.fail())
+ throw runtime_error(..)
+ any = temp;
+ }
+ </pre>
+ </p>
+ <p>
+ I have read the Josuttis book on Standard C++, so some information
+ comes from there. Additionally, there is information in
+ "info iostream", which covers the old implementation that gcc 2.95.2
+ uses.
+ </p>
+ </div>
<div class="section" id="sec-about">
<h2 class="title" style="clear: all">
- <a name="sec-about"><b>7. About...</b></a>
+ <a name="sec-about"><b>12. About...</b></a>
</h2>
<p>
Please send any experience, additions, corrections or questions to
diff --git a/libstdc++-v3/libio/Makefile.in b/libstdc++-v3/libio/Makefile.in
index ba0df297193..537e68c9f4a 100644
--- a/libstdc++-v3/libio/Makefile.in
+++ b/libstdc++-v3/libio/Makefile.in
@@ -170,62 +170,62 @@ CPPFLAGS = @CPPFLAGS@
LDFLAGS = @LDFLAGS@
LIBS = @LIBS@
libio_la_LDFLAGS =
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@libio_la_OBJECTS = \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@filedoalloc.lo \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@genops.lo \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@fileops.lo \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@stdfiles.lo \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@c_codecvt.lo \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@wfiledoalloc.lo \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@wfileops.lo \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@wgenops.lo \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@iofwide.lo \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@iofclose.lo \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@iofopen.lo \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@stdio.lo
-@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@libio_la_OBJECTS =
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@libio_la_OBJECTS = \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@wfiledoalloc.lo \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@wfileops.lo \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@wgenops.lo
-@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@libio_la_OBJECTS = \
-@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@filedoalloc.lo \
-@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@genops.lo \
-@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@fileops.lo \
-@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@stdfiles.lo \
-@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@c_codecvt.lo
-@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@libio_la_OBJECTS = \
-@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@iofwide.lo \
-@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@iofclose.lo \
-@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@iofopen.lo \
-@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@stdio.lo
-@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@libio_la_OBJECTS = \
-@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@filedoalloc.lo \
-@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@genops.lo \
-@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@fileops.lo \
-@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@stdfiles.lo \
-@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@c_codecvt.lo \
-@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@iofwide.lo \
-@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@iofclose.lo \
-@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@iofopen.lo \
-@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@stdio.lo
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@libio_la_OBJECTS = \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@wfiledoalloc.lo \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@wfileops.lo \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@wgenops.lo \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@iofwide.lo \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@iofclose.lo \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@iofopen.lo \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@stdio.lo
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@libio_la_OBJECTS = \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@filedoalloc.lo \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@genops.lo \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@fileops.lo \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@stdfiles.lo \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@c_codecvt.lo \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@wfiledoalloc.lo \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@wfileops.lo \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@wgenops.lo
+@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@@GLIBCPP_NEED_LIBIO_FALSE@libio_la_OBJECTS =
+@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@@GLIBCPP_NEED_LIBIO_FALSE@libio_la_OBJECTS = \
+@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@@GLIBCPP_NEED_LIBIO_FALSE@iofwide.lo \
+@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@@GLIBCPP_NEED_LIBIO_FALSE@iofclose.lo \
+@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@@GLIBCPP_NEED_LIBIO_FALSE@iofopen.lo \
+@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@@GLIBCPP_NEED_LIBIO_FALSE@stdio.lo
+@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@libio_la_OBJECTS = \
+@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@filedoalloc.lo \
+@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@genops.lo \
+@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@fileops.lo \
+@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@stdfiles.lo \
+@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@c_codecvt.lo \
+@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@wfiledoalloc.lo \
+@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@wfileops.lo \
+@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@wgenops.lo
+@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@libio_la_OBJECTS = \
+@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@filedoalloc.lo \
+@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@genops.lo \
+@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@fileops.lo \
+@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@stdfiles.lo \
+@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@c_codecvt.lo
+@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@libio_la_OBJECTS = \
+@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@filedoalloc.lo \
+@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@genops.lo \
+@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@fileops.lo \
+@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@stdfiles.lo \
+@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@c_codecvt.lo \
+@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@iofwide.lo \
+@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@iofclose.lo \
+@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@iofopen.lo \
+@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@stdio.lo
+@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@@GLIBCPP_NEED_LIBIO_FALSE@libio_la_OBJECTS = \
+@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@@GLIBCPP_NEED_LIBIO_FALSE@wfiledoalloc.lo \
+@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@@GLIBCPP_NEED_LIBIO_FALSE@wfileops.lo \
+@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_FALSE@@GLIBCPP_NEED_LIBIO_FALSE@wgenops.lo
+@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@@GLIBCPP_NEED_LIBIO_FALSE@libio_la_OBJECTS = \
+@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@@GLIBCPP_NEED_LIBIO_FALSE@wfiledoalloc.lo \
+@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@@GLIBCPP_NEED_LIBIO_FALSE@wfileops.lo \
+@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@@GLIBCPP_NEED_LIBIO_FALSE@wgenops.lo \
+@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@@GLIBCPP_NEED_LIBIO_FALSE@iofwide.lo \
+@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@@GLIBCPP_NEED_LIBIO_FALSE@iofclose.lo \
+@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@@GLIBCPP_NEED_LIBIO_FALSE@iofopen.lo \
+@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@@GLIBCPP_NEED_LIBIO_FALSE@stdio.lo
+@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@libio_la_OBJECTS = \
+@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@filedoalloc.lo \
+@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@genops.lo \
+@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@fileops.lo \
+@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@stdfiles.lo \
+@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@c_codecvt.lo \
+@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@wfiledoalloc.lo \
+@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@wfileops.lo \
+@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@wgenops.lo \
+@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@iofwide.lo \
+@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@iofclose.lo \
+@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@iofopen.lo \
+@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_XTRA_LIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@stdio.lo
CFLAGS = @CFLAGS@
CCLD = $(CC)
DIST_COMMON = ChangeLog Makefile.am Makefile.in
diff --git a/libstdc++-v3/testsuite/22_locale/facet.cc b/libstdc++-v3/testsuite/22_locale/facet.cc
index 1930c50e6fc..cea5fbe7893 100644
--- a/libstdc++-v3/testsuite/22_locale/facet.cc
+++ b/libstdc++-v3/testsuite/22_locale/facet.cc
@@ -25,49 +25,8 @@
#include <debug_assert.h>
// 1 a class if a facet if it is publicly derived from another facet
-class gnu_input_iterator: public std::iterator<std::input_iterator_tag, char>
-{
- value_type it;
-public:
- gnu_input_iterator(value_type orig): it(orig) { }
-
- value_type
- operator*() const { return it; }
-
- reference
- operator++(){ return ++it; }
-
- reference
- operator++(int){ ++it; return it; }
-};
-
-bool
-operator==(const gnu_input_iterator& lhs, const gnu_input_iterator& rhs)
-{ return true; }
-
-bool
-operator!=(const gnu_input_iterator& lhs, const gnu_input_iterator& rhs)
-{ return true; }
-
-class gnu_output_iterator: public std::iterator<std::output_iterator_tag, char>
-{
- value_type it;
-public:
- gnu_output_iterator(value_type orig): it(orig) { }
-
- value_type
- operator*(){ return it; }
-
- gnu_output_iterator&
- operator=(value_type obj){ it = obj; return *this; }
-
- reference
- operator++(){ return ++it; }
-
- reference
- operator++(int){ ++it; return it; }
-
-};
+typedef std::istreambuf_iterator<char> input_iterator;
+typedef std::ostreambuf_iterator<char> output_iterator;
class gnu_collate: public std::collate<char> { };
class gnu_ctype: public std::ctype<char> { };
@@ -116,20 +75,20 @@ public:
};
-class gnu_money_get_in: public std::money_get<char, gnu_input_iterator>
+class gnu_money_get_in: public std::money_get<char, input_iterator>
{
public:
explicit
gnu_money_get_in(size_t refs = 0)
- : std::money_get<char, gnu_input_iterator>(refs) { }
+ : std::money_get<char, input_iterator>(refs) { }
};
-class gnu_money_put_out: public std::money_put<char, gnu_output_iterator>
+class gnu_money_put_out: public std::money_put<char, output_iterator>
{
public:
explicit
gnu_money_put_out(size_t refs = 0)
- : std::money_put<char, gnu_output_iterator>(refs) { }
+ : std::money_put<char, output_iterator>(refs) { }
};
class gnu_numpunct_byname: public std::numpunct_byname<char>
@@ -140,20 +99,20 @@ public:
: std::numpunct_byname<char>(c, refs) { }
};
-class gnu_num_get_in: public std::num_get<char, gnu_input_iterator>
+class gnu_num_get_in: public std::num_get<char, input_iterator>
{
public:
explicit
gnu_num_get_in(size_t refs = 0)
- : std::num_get<char, gnu_input_iterator>(refs) { }
+ : std::num_get<char, input_iterator>(refs) { }
};
-class gnu_num_put_out: public std::num_put<char, gnu_output_iterator>
+class gnu_num_put_out: public std::num_put<char, output_iterator>
{
public:
explicit
gnu_num_put_out(size_t refs = 0)
- : std::num_put<char, gnu_output_iterator>(refs) { }
+ : std::num_put<char, output_iterator>(refs) { }
};
class gnu_time_get_byname: public std::time_get_byname<char>
@@ -164,12 +123,12 @@ public:
: std::time_get_byname<char>(c, refs) { }
};
-class gnu_time_get_in: public std::time_get<char, gnu_input_iterator>
+class gnu_time_get_in: public std::time_get<char, input_iterator>
{
public:
explicit
gnu_time_get_in(size_t refs = 0)
- : std::time_get<char, gnu_input_iterator>(refs) { }
+ : std::time_get<char, input_iterator>(refs) { }
};
class gnu_time_put_byname: public std::time_put_byname<char>
@@ -180,12 +139,12 @@ public:
: std::time_put_byname<char>(c, refs) { }
};
-class gnu_time_put_out: public std::time_put<char, gnu_output_iterator>
+class gnu_time_put_out: public std::time_put<char, output_iterator>
{
public:
explicit
gnu_time_put_out(size_t refs = 0)
- : std::time_put<char, gnu_output_iterator>(refs) { }
+ : std::time_put<char, output_iterator>(refs) { }
};
class gnu_messages_byname: public std::messages_byname<char>
@@ -227,8 +186,8 @@ void test01()
gnu_time_put_byname obj15("gnu_message_byname", 0);
gnu_time_get_in obj16(0);
gnu_time_get_byname obj17("gnu_message_byname", 0);
- // gnu_num_put_out obj18(0);
- // gnu_num_get_in obj19(0);
+ gnu_num_put_out obj18(0);
+ gnu_num_get_in obj19(0);
gnu_numpunct_byname obj20("gnu_message_byname", 0);
gnu_money_put_out obj21(0);
gnu_money_get_in obj22(0);